Android 嵌套的DialogFragment在旋转后被解除

Android 嵌套的DialogFragment在旋转后被解除,android,nested,android-dialogfragment,screen-rotation,Android,Nested,Android Dialogfragment,Screen Rotation,我有一个嵌套的(!)片段,它显示了我的PhotoNoteDialogFragment: private void newPhotoNote() { mPhotoDialog = PhotoNoteDialogFragment.newInstance(this); mPhotoDialog.show(getFragmentManager(), PhotoNoteDialogFragment.TAG); } 对话框会弹出,但在我旋转设备时会立即消失。我已经做了一些研究,并尝试了这些东西,但

我有一个嵌套的(!)片段,它显示了我的PhotoNoteDialogFragment:

private void newPhotoNote() {
  mPhotoDialog = PhotoNoteDialogFragment.newInstance(this);
  mPhotoDialog.show(getFragmentManager(), PhotoNoteDialogFragment.TAG);
}
对话框会弹出,但在我旋转设备时会立即消失。我已经做了一些研究,并尝试了这些东西,但没有成功:

  • 设置PhotoNoteDialogFragment#setRetainInstance(true)。不起作用,因为嵌套片段无法保留

  • 在PhotoNoteDialogFragment中使用此代码段可防止错误导致系统发出不必要的拒绝调用:

@凌驾 公共无效onDestroyView(){ 如果(getDialog()!=null) getDialog().setDismissMessage(空); super.onDestroyView(); }
  • 如果PhotoNoteDialogFragment的实例不为null,请尝试调用嵌套片段#onActivityCreated中的show()-方法:
@凌驾 已创建活动上的公共无效(最终捆绑包保存状态){ super.onActivityCreated(savedInstanceState); if(mPhotoNoteDialogFragment!=null){ 显示(getFragmentManager(),PhotoNoteDialogFragment.TAG); } } 所有这些尝试都不能使DialogFragment在屏幕旋转后再次出现。 还有其他人有什么想法吗,我下一步可以尝试什么。。?我没有主意了


thx

我认为您不必覆盖创建的活动,您的对话框没有它也很好。我也试过了。如果您在ActivityCreated上显示对话框,您的应用程序将崩溃。

纵向和横向模式是否使用了不同的布局…如何添加根片段?您确定它被系统保留,还是手动重新创建?@Amsheer:是的,我对嵌套片段和dialogFragment有不同的布局。@BartoszFilipowicz:是的,我确定片段被保留。当我在其中一个“onCreate”方法中设置断点时,dialogFragment的实例在旋转后仍然存在。它是一个嵌套片段,您应该使用子fragmentmanager。使用getChildFragmentManager()显示对话框片段。父片段是否也设置了保留实例状态? @Override public void onDestroyView() { if (getDialog() != null) getDialog().setDismissMessage(null); super.onDestroyView(); } @Override public void onActivityCreated(final Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (mPhotoNoteDialogFragment != null) { mPhotoNoteDialogFragment.show(getFragmentManager(), PhotoNoteDialogFragment.TAG); } }