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

Overlapping DialogFragment, recreated in wrong order when orientation changes

我正在使用两个重叠 DialogFragment(我知道,这可能不是一个好的设计模式),并且我在方向更改方面遇到问题。

当方向改变时,最外部的DialogFragment(最小的)会落后于最内部的。

我的应用程序最简单的解决方案是关闭最外部的 DialogFragment,但我做不到,因为 setRetainInstance(false) 似乎无法与 DialogFragment 一起使用。

片段动态添加,调用:

DialogFragment fragment = CreateEventFragment.newInstance(0);
fragment.show(getFragmentManager(), CreateEventFragment.FRAGMENT_TAG);

我解决了这个问题,覆盖了onSaveInstanceState,这样:

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

现在,在方向更改后,最外面的 DialogFragment 是外部维护的,因此它们会以正确的顺序重新创建。