我有一个嵌套的片段,我试图在给定方向更改的情况下恢复状态。
首先,我的设置如下:
Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment
在My Child片段中,我有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事件中定向设备时,返回的savedInstance状态为null。
我是否为ChildFragment做错了?为什么我的州没有得到保存和归还?
答案 0 :(得分:7)
这是由于您的父片段的setRetainInstance(true)
。 Android会保留一个包含所有子片段的片段。所以你的ChildFragment没有被销毁,这就是你在savedInstanceState中得到null的原因。 onCreateView州的文件:
savedInstanceState 如果非null,则从此处给出的先前保存状态重新构造此片段。
您可以尝试对setRetainInstance(true)
发表评论,并确保为savedInstanceState获取正确的值。