手动调用保存实例状态不起作用



我有一个在活动中托管的安卓片段。该活动不会覆盖任何 onsaveInstanceState 或 onRestoreInstanceState 方法。在我的片段中,我输入了以下代码:

@Override
public void onDestroy() {
super.onDestroy();
Bundle b = new Bundle();
b.putParcelable("mymodel", myModel);
onSaveInstanceState(b);
}

当用户点击后退按钮时,我看到它被调用(我知道不能保证调用 ondestroy ,这不是我的意思(。 所以我放了一个断点,实际上这段代码被调用了。 然后我返回到活动,它打开了片段,但 savedInstanceState 在 oncreate 和 onViewCreated 中为空。 我做错了什么?我想我可以手动调用它来保存状态?

不,您不能手动调用onSaveInstanceState。框架会为您做到这一点。调用它只会更新您的捆绑包,而不会更新框架捆绑包。正确的方法是覆盖它并保存您的数据。

你不应该手动调用onSaveInstanceState,Android Framework的工作是在必要时这样做。

如果要保存信息并在以后检索,只需覆盖onSaveInstanceState并将您的信息放入捆绑包中即可。

最新更新