2015-09-27 27 views
1

我有兩個活動A和B.啓動活動B.在活動B中,我調用了按鈕點擊處理程序中的setResult(RESULT_OK,intent),但未調用finish() - 這是理想的行爲。旋轉活動後錯誤的活動結果代碼

旋轉B並按下後,A的onActivityResult接收resultCode的RESULT_CANCELED,而不是RESULT_OK。

我知道這是由於活動B在旋轉時被破壞的事實造成的。確保從B返回正確的結果代碼的常見做法是什麼?

我最初的想法是在onSaveInstanceState中保存mResultCode。

+0

您需要在onRestoreInstanceState方法中再次設置結果 – abhishesh

+0

我應該在onRestoreIsntanceState或onCreate中執行該操作嗎? – Boon

+0

是的,你需要將它設置在onRestoreInstanceState – abhishesh

回答

1

將結果保存在onSaveInstanceState中,並將結果再次設置到onRestoreInstanceState方法中。

onRestoreInstanceState:

此方法在onStart()之後調用當活動正在 從以前保存的狀態重新初始化,在 savedInstanceState這裏給出。大多數實現將簡單地使用onCreate(Bundle)來恢復它們的狀態,但在完成所有初始化之後,有時可以方便地使用 或允許子類決定是否使用默認的 實現。此方法的默認實現會執行 恢復之前被onSaveInstanceState(Bundle)凍結的任何視圖狀態。

在onStart()和onPostCreate(Bundle)之間調用此方法。