即使在onSaveInstanceState()中设置值之后,onActivityCreated()中的bundle也会返回null

时间:2013-10-18 17:43:28

标签: android android-fragments

在应用程序中,只要片段失去焦点(即在其上打开另一个活动/片段),就会调用它onSaveInstanceState()

developers guide中提到了同样的内容。

我正在尝试使用此approch来恢复我的片段的状态。 我的目的是在片段恢复时在bundle中调用此onActivityCreated()

虽然在片段失去焦点之前调用了onSaveInstanceState。 但是,当调用onActivityCreated()时,它会将Bundle savedInstanceState重新归结为空。

如何从捆绑包中获取数据。

代码:

@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);
}

1 个答案:

答案 0 :(得分:0)

然后,这意味着您的活动和片段刚刚暂停,并且不必保存其实例状态(onSaveInstanceState()不一定被调用)。

如果要确保调用onSaveInstanceState(),请在设备的开发人员设置中选择“不要保留活动”。然后,每次活动暂停时,系统会将其强制拨打onSaveInstanceState()(除非您只是按回去)