在应用程序中,每当 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/