【发布时间】:2012-08-27 17:41:31
【问题描述】:
我的 Android 应用程序有一个 ActionBar,它改变了 Fragment 占用某个 FrameLayout。我正在尝试使用onSaveInstanceState 来保存一个Fragment 在tab 改变时的状态,以便可以在onCreateView 中恢复。
问题是,onSaveInstanceState 永远不会被调用。调用了Fragment 的onDestroyView 和onCreateView 方法,但提供给onCreateView 的Bundle 仍然为空。
有人可以向我解释什么时候实际调用了onSaveInstanceState,我如何确保在切换选项卡时调用它,或者当Fragment 分离和重新时保存和恢复状态的最佳实践- 附上?
片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.event_log, container, false);
// Retrieve saved state
if (savedInstanceState != null){
System.out.println("log retrieved");
} else {
System.out.println("log null");
}
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("log saved");
super.onSaveInstanceState(outState);
// more code
}
活动:
/**
* Detach the current Fragment, because another one is being attached.
*/
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (tab.getText().equals(getString(R.string.tab_events))){
if (frEventLog != null) {
ft.detach(frEventLog);
}
}
【问题讨论】:
标签: android save fragment detach