在应用程序中,只要片段失去焦点(即在其上打开另一个活动/片段),就会调用它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);
}
答案 0 :(得分:0)
然后,这意味着您的活动和片段刚刚暂停,并且不必保存其实例状态(onSaveInstanceState()
不一定被调用)。
如果要确保调用onSaveInstanceState()
,请在设备的开发人员设置中选择“不要保留活动”。然后,每次活动暂停时,系统会将其强制拨打onSaveInstanceState()
(除非您只是按回去)