我在活动中托管了一个Android片段。该活动不会覆盖任何onsaveInstanceState或onRestoreInstanceState方法。在我的片段中,我输入以下代码:
@Override
public void onDestroy() {
super.onDestroy();
Bundle b = new Bundle();
b.putParcelable("mymodel", myModel);
onSaveInstanceState(b);
}
当用户点击后退按钮时,我看到这个被调用(我知道它不能保证调用ondestroy,这不是我的意思)。所以我提出了一个断点,实际上这个代码被调用了。然后我返回活动并打开片段,但在oncreate和onViewCreated中savedInstanceState为null。我究竟做错了什么 ?我以为我可以手动调用这个来保存状态?
答案 0 :(得分:1)
不,你不能手动拨打onSaveInstanceState
。框架为您做到了这一点。调用它只会更新您的包,而不是框架包。正确的方法是覆盖它并保存您的数据。
答案 1 :(得分:1)
你不应该手动调用onSaveInstanceState
,只要有必要,这就是Android Framework的工作。
如果您想保存信息并在以后检索,只需覆盖onSaveInstanceState
并将您的信息放入捆绑包中即可。