我有一个嵌套的Fragment,我试图根据方向更改来恢复状态。
所以首先我的设置如下:
Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment
在“我的 child ” fragment 中,我具有如下的onSaveInstance代码:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Serialize the current dropdown position.
outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar()
.getSelectedNavigationIndex());
}
但是,当我在所有LifeCycle事件中定位设备时,将返回null的savedInstance状态。
我是否对ChildFragment错误地执行了此操作?为什么我的状态无法保存并返回?
最佳答案
这是由于您的父 fragment 的setRetainInstance(true)
。 Android会保留一个带有其所有子 fragment 的 fragment 。因此,您的ChildFragment没有被销毁,这就是为什么在saveInstanceState中为null的原因。 onCreateView的文档指出:
您可以尝试将setRetainInstance(true)
注释掉,并确保为saveInstanceState获得正确的值。
关于android - 无法保存和还原嵌套 fragment ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25913187/