繁体   English   中英

Android-只能在onRestoreInstanceState()中还原saveInstanceState,而不能在onCreate()中还原

[英]Android - savedInstanceState can be restored only in onRestoreInstanceState() not in onCreate()

我是Android的初学者,尝试更改方向时恢复实例状态。

当我在onRestoreInstanceState()方法中实现恢复时,它可以工作。 但是,当在onCreate()方法中实现时,则不会(好像未实现任何还原一样), EditText视图显示为空。

问题是,似乎savedInstanceState != null中的测试未通过。

这是在onCreate()中实现的代码:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState != null) {
            EditText editText = (EditText) findViewById(R.id.edit_message);
            editText.setText(savedInstanceState.getString("test_msg"));
        }
    }

//    This method works as expected.
//    public void onRestoreInstanceState(Bundle savedInstanceState) {
//       EditText editText = (EditText) findViewById(R.id.edit_message);
//       editText.setText(savedInstanceState.getString("test_msg"));
//    }

    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString("test_msg", "this is test message");
        super.onSaveInstanceState(savedInstanceState);
    }

看一下活动生命周期,它可能会帮助您解决问题。

在您的代码中,似乎有问题的是,您仅在将某些内容放入Bundle之后才调用super.onSaveInstanceState(savedInstanceState),请尝试首先调用此方法,然后再将其添加到Bundle中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM