AndroidRuntimeException: requestFeature() must be called before adding content
johnjohndoe opened this issue · 4 comments
I replaced android.support.v4.app.DialogFragment
with SimpleDialogFragment
:
public class MyDialogFragment extends SimpleDialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
FragmentActivity activity = getActivity();
View contentView = activity.getLayoutInflater()
.inflate(R.layout.fragment_my_dialog, null)
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder
.setView(contentView)
return dialogBuilder.create();
}
It is called here within a parent fragment:
DialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(getActivity().getSupportFragmentManager(),
MyDialogFragment.FRAGMENT_TAG);
The following error occurs when I open the dialog:
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
E at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:301)
E at com.android.internal.app.AlertController.installContent(AlertController.java:231)
E at android.app.AlertDialog.onCreate(AlertDialog.java:356)
E at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
E at android.app.Dialog.show(Dialog.java:274)
E at android.support.v4.app.DialogFragment.onStart(DialogFragment.java:398)
E at android.support.v4.app.Fragment.performStart(Fragment.java:1810)
E at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:977)
E at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
E at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
E at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
E at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
E at android.os.Handler.handleCallback(Handler.java:739)
E at android.os.Handler.dispatchMessage(Handler.java:95)
E at android.os.Looper.loop(Looper.java:135)
E at android.app.ActivityThread.main(ActivityThread.java:5221)
E at java.lang.reflect.Method.invoke(Native Method)
E at java.lang.reflect.Method.invoke(Method.java:372)
E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
compileSdkVersion 21
buildToolsVersion "21.1.1"
minSdkVersion 9
targetSdkVersion 21
compile 'com.android.support:appcompat-v7:21.0.3'
Hi,
what are you trying to do? Just display a custom content in the dialog?
Have a look to JayneHatDialogFragment in demo app - you should override method build(), not onCreateDialog()
Sorry, but I did not see this from the README. Maybe you want to mention it there more explicit.
It's in the readme, see section "How to create all other DialogFragments:". Would you phrase it differently?
I thought others might also stumble into the error since onCreateDialog()
is the common way. Therefore, it might be helpful to explicitly name the build()
method already in the README. Also a speaking error message would be nice if one uses onCreateDialog()
and should not do so.