重叠的 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
是外部维护的,因此它们会以正确的顺序重新创建。
我正在使用两个重叠 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
是外部维护的,因此它们会以正确的顺序重新创建。