Don*_*rty 7 android android-fragments android-orientation android-nested-fragment
我有一个嵌套的片段,我试图恢复给定方向更改的状态.
首先,我的设置如下:
Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment
Run Code Online (Sandbox Code Playgroud)
在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());
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在所有LifeCycle事件中定向设备时,返回savedInstance状态为null.
我是否为ChildFragment做错了?为什么我的州没有得到保存和归还?
这是由于setRetainInstance(true)您的父片段.Android会保留一个包含所有子片段的片段.所以你的ChildFragment没有被销毁,这就是你在savedInstanceState中得到null的原因.onCreateView的文档说明:
savedInstanceState 如果为非null,则从此处给出的先前保存状态重新构造此片段.
您可以尝试注释掉setRetainInstance(true)并确保为savedInstanceState获取正确的值.