簡體   English   中英

捆綁包saveInstanceState始終為null

[英]Bundle savedInstanceState is always null

我有兩個不同的活動,在第一個活動中,我向一些EditText中輸入一些信息,然后轉到第二個活動,但是當我返回時,第一個活動中EditText上的文本消失了。

這是第一個活動的OnCreate():

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act_frm_recetas);

    txtClient = (EditText) findViewById(R.id.txtNombreCliente);

           if(savedInstanceState != null){
                 String client = savedInstanceState.getString("Client");

                 txtClient.setText(client);
            }
}

我正在使用onSaveInstanceState方法保存信息

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {

    String x = txtClient.getText().toString();
    savedInstanceState.putString("Client", x);

    super.onSaveInstanceState(savedInstanceState);
}

進行調試時,我可以看到onSaveInstanceState方法中確實填充了saveInstanceState Bundle,但在OnCreate中顯示為null。

也許我必須在第二個活動中添加一些內容? 目前,除了按鈕之外,我什么都沒有,它可以帶我回到第一個活動。

您需要調用super.onSaveInstanceState(savedInstanceState); 作為onSaveInstanceState方法的第一行。

接下來你需要放

if(savedInstanceState != null) {
             String client = savedInstanceState.getString("Client");

             txtClient.setText(client);
  }

放入onRestoreInstanceState方法。 僅在重新繪制應用程序時調用onCreate

它顯示為null,因為onCreate僅在首次創建該活動時才調用,當您從第二個活動返回時,它將恢復您的第一個活動。.嘗試在onResume()方法上顯示它

我的猜測是第一個活動尚未銷毀,因此當您導航回第一個活動時,永遠不會調用onCreate。

我猜想當活動將要加載到內存中時onCreate被調用了,那時活動不包含任何東西。 這就是為什么它總是返回null的原因。

要保存數據,請使用onsaveinstance方法,要進行還原,請使用onrestoreinstance方法。

onSaveInstanceState()是一種用於在暫停活動之前存儲數據的方法。

onRestoreInstanceState()是用於檢索該數據的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM