当屏幕方向改变时,重叠的DialogFragment以错误的顺序重新创建。

3
我正在使用两个重叠的DialogFragment(我知道,也许这不是一个好的设计模式),并且在屏幕方向改变时出现了问题。
当屏幕方向改变时,最外层的DialogFragment(最小的)会被最内层的DialogFragment覆盖。
对于我的应用程序,最简单的解决方案可能是关闭最外层的DialogFragment,但我不能这样做,因为setRetainInstance(false)似乎与DialogFragment无法配合使用。
这些片段是通过动态调用以下方法添加的:
DialogFragment fragment = CreateEventFragment.newInstance(0);
fragment.show(getFragmentManager(), CreateEventFragment.FRAGMENT_TAG);

您可以从层次结构中删除两个片段,而不是关闭它们。 - Sergey Shustikov
1个回答

1

我解决了这个问题,通过覆盖 onSaveInstanceState 方法,以如下方式:

@Override
    public void onSaveInstanceState(Bundle outState) {
        if(outState==null)
            super.onSaveInstanceState(outState);
    }

现在,在方向改变后,最外层的 DialogFragment 保持外部,因此它们会按正确的顺序重新创建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接