我有一个嵌套的Fragment,我试图根据方向更改来恢复状态。

所以首先我的设置如下:

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

在“我的 child ” fragment 中,我具有如下的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错误地执行了此操作?为什么我的状态无法保存并返回?

最佳答案

这是由于您的父 fragment 的setRetainInstance(true)。 Android会保留一个带有其所有子 fragment 的 fragment 。因此,您的ChildFragment没有被销毁,这就是为什么在saveInstanceState中为null的原因。 onCreateView的文档指出:



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

关于android - 无法保存和还原嵌套 fragment ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25913187/

10-09 19:09