无法保存和恢复嵌套的片段?

我有一个嵌套的片段,我试图恢复状态给定方向的变化。

所以首先我的设置如下:

Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 

在我的孩子片段我有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不正确吗? 为什么我的状态没有得到保存和返回?

Solutions Collecting From Web of "无法保存和恢复嵌套的片段?"

这是由于父代片段的setRetainInstance(true) 。 Android保留了所有子片段的片段。 所以你的ChildFragment不会被销毁,这就是为什么你在savedInstanceState中得到null的原因。 onCreateView的文档指出:

savedInstanceState如果非null,则此片段正按照此处给出的先前保存的状态重新构build。

您可以尝试将setRetainInstance(true)注释掉,并确保为savedInstanceState获取正确的值。