无法保存和恢复嵌套的Fragment?

7

我有一个嵌套的Fragment,我试图在方向改变时恢复它的状态。

首先,我的设置如下:

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

在我的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());
}

然而,当我在所有的生命周期事件中调整设备方向时,返回的savedInstance状态都为null。

我是否对ChildFragment做错了什么?为什么我的状态没有被保存并返回?

1个回答

7
由于您的父片段使用了setRetainInstance(true),所以Android会保留一个带有所有子片段的片段。因此,您的ChildFragment不会被销毁,这就是为什么savedInstanceState中会出现空值的原因。在onCreateView的文档中说明:

savedInstanceState 如果非空,则此片段正在从先前给出的保存状态中重新构建。

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


是的,但是那是两年前的事了。 :) 或许现在有所改变。 - Ayzen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接