android - onActivityCreated() 中的 Bundle 返回 null,即使在 onSaveInstanceState() 中设置值之后

标签 android android-fragments

在应用程序中,每当 fragment 失去焦点(即另一个 Activity/fragment 在其上打开)时,就会调用 onSaveInstanceState()

developers guide 中也提到了同样的内容.

我正在尝试使用此方法来维护我的 fragment 在恢复时的状态。 我的 Intent 是在恢复 fragment 时在 onActivityCreated() 中调用此 bundle

尽管 onSaveInstanceState 在 fragment 失去焦点之前被调用。 但是,当 onActivityCreated() 被调用时,它会将 Bundle savedInstanceState 接收为 null。

如何从包中获取数据。

代码:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    MyListAdapter adapter = new MyListAdapter(getActivity(),
            R.layout.my_row, titles, icons, this);

    setListAdapter(adapter);

    if (savedInstanceState != null) {
        // Never goes inside this condiiton.
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}

最佳答案

那么这意味着您的 Activity 和 Fragment 只是暂停了,不必保存它们的实例状态(不一定调用 onSaveInstanceState())。

如果您想确保 onSaveInstanceState() 被调用,请在设备的开发者设置中选择“不保留 Activity ”。然后,每次暂停 Activity 时,系统都会终止它并强制调用 onSaveInstanceState()(当然,你只是按回键时除外)

关于android - onActivityCreated() 中的 Bundle 返回 null,即使在 onSaveInstanceState() 中设置值之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455904/

相关文章:

android - 非法参数异常 : Negative latSpan

java - 以编程方式将单选按钮与右侧的文本和左侧的按钮对齐

Fragment 之间的 Android Tab 导航

java - fragment 函数中的 NullPointerException

android - 将文件从 Android WPD 设备传输到 PC

android - 如何在 'back' 窗口上叠加 'next' 和 "pick wifi network "按钮?

java - 在没有支持库的情况下使用 FragmentStatePagerAdapter

java - 在同一 Activity 的 2 个 fragment 之间发送 ArrayList

android - 如何根据其他 fragment 的方法刷新 ListFragment 列表?

Android在webview中复制选中的文本