android - 手动调用onSaveInstanceState不起作用

时间:2018-05-28 03:13:19

标签: android

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你不应该手动调用onSaveInstanceState,只要有必要,这就是Android Framework的工作。

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