簡體   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