我在一个活动中托管了一个android片段。该活动不会重写任何onsaveInstanceState或onRestoreInstanceState方法。在我的代码片段中,我放入了以下代码:
@Override
public void onDestroy() {
super.onDestroy();
Bundle b = new Bundle();
b.putParcelable("mymodel", myModel);
onSaveInstanceState(b);
}
当用户点击后退按钮时,我看到这是被调用的(我知道不能保证会调用ondestroy,这不是我要说的)。所以我设置了一个断点,然后这段代码就被调用了。然后,我返回到活动,它打开了片段,但在oncreate和onViewCreated中,savedInstanceState为空。我做错了什么?我想我可以手动调用它来保存状态?
发布于 2018-05-28 11:44:53
不能手动调用onSaveInstanceState
。这个框架会帮你做到这一点。调用它只会更新捆绑包,而不会更新框架捆绑包。正确的方法是覆盖它并保存数据。
发布于 2018-05-28 13:56:10
你不应该手动调用onSaveInstanceState
,Android Framework的工作就是在必要的时候这样做。
如果您想保存信息并在以后检索它,只需覆盖onSaveInstanceState
并将您的信息放入包中。
https://stackoverflow.com/questions/50558646
复制相似问题