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

时间:2014-09-18 12:54:22

标签: android android-fragments android-orientation android-nested-fragment

我有一个嵌套的片段,我试图在给定方向更改的情况下恢复状态。

首先,我的设置如下:

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做错了?为什么我的州没有得到保存和归还?

1 个答案:

答案 0 :(得分:7)

这是由于您的父片段的setRetainInstance(true)。 Android会保留一个包含所有子片段的片段。所以你的ChildFragment没有被销毁,这就是你在savedInstanceState中得到null的原因。 onCreateView州的文件:

  

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

您可以尝试对setRetainInstance(true)发表评论,并确保为savedInstanceState获取正确的值。