2013-05-08 78 views
0

我試圖在android.Basic場景中保存活動的狀態是有2個活動A和B.Activity A包含2個edittext字段。用戶輸入一些值並通過intent移動到活動B.當用戶來回到活動A(意圖我提供了一個後退按鈕)我需要在用戶輸入的2個edittext字段中顯示這些值(即保持活動A的狀態)。此外,我不想使用共享首選項或使這些字段爲靜態。 我用下面的代碼,但它並不能幫助:如何維護活動的狀態?

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.manual_entry); 
      edittext1=(Edittext)findViewById(R.id.edittext1); 
    } 

@Override 
    protected void onSaveInstanceState(Bundle savedInstanceState) 
    { 
      super.onSaveInstanceState(savedInstanceState); 
      savedInstanceState.putString("cardvalue_saved_inst", value_card_manuallyentered); 
    } 




@Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) 
    { 
     super.onRestoreInstanceState(savedInstanceState); 
     value_savedinstance = savedInstanceState.getString("cardvalue_saved_inst"); 
     Log.e("value_savedinstance",""+value_savedinstance); 
     edittext1.setText(value_savedinstance); 
    } 
+0

使用共享首選項來存儲和gt值 – Raghunandan 2013-05-08 13:04:58

+0

所以你在日誌中看到value_savedinstance? – 2013-05-08 13:06:03

+0

Raghunandan,我可以在不使用sharedpreferences的情況下實現它,我認爲它應該可以使用savedinstanceState,但上面的方法對我無效。 – Joyson 2013-05-08 13:06:57

回答

0

ActivityA,如果您啓動ActivityB,不叫finish()自己,當ActivityB結束(當用戶按下BACK按鈕或其他方式),ActivityA將以與它相同的狀態顯示。這只是標準的Android行爲,您不需要做任何特別的事情。

onRestoreInstanceState()如果暫停的活動得到恢復是不叫(這是ActivityA推出ActivityBActivityB然後完成通常情況下)。

onRestoreInstanceState()如果Android會殺死您的活動(例如在方向更改過程中)或者殺死您的進程,則只能調用。在這種情況下,當用戶返回到您的活動時,Android會創建一個新的活動實例,然後致電onRestoreInstanceState()

0

我不得不簡單地在Activity B中調用finish()並且它工作正常。