嵌套的DialogFragment在轮换后被解雇

时间:2013-06-19 10:24:17

标签: android nested android-dialogfragment screen-rotation

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

private void newPhotoNote() {
  mPhotoDialog = PhotoNoteDialogFragment.newInstance(this);
  mPhotoDialog.show(getFragmentManager(), PhotoNoteDialogFragment.TAG);
}

弹出对话框,但一旦旋转设备就会被解除。我已经做了一些研究并尝试了这些事情没有成功:

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

  • 在PhotoNoteDialogFragment中使用此代码段,以防止从系统发出不需要的解雇调用的错误:

    @Override
    public void onDestroyView() {
        if (getDialog() != null)
            getDialog().setDismissMessage(null);
        super.onDestroyView();
    }
  • 尝试调用show() - 我的嵌套片段#onActivityCreated中的方法,如果PhotoNoteDialogFragment的实例不是null:
  @Override
  public void onActivityCreated(final Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (mPhotoNoteDialogFragment != null) {
      mPhotoNoteDialogFragment.show(getFragmentManager(), PhotoNoteDialogFragment.TAG);
    }
  }

这些尝试都不会使屏幕旋转后DialogFragment再次出现。 有没有其他人的想法,我可以尝试下一步..?我没有想法。

THX

1 个答案:

答案 0 :(得分:0)

我认为你不必覆盖onActivityCreated,没有它你的对话就没事了。我也试过了。如果您在onActivityCreated上显示对话框,您的应用就会崩溃。