2011-10-17 101 views
0

我有一個活動,允許用戶選擇一個聯繫人,並使用onActivityResult()返回結果。onActivityResult()從聯繫人選擇器返回後是否未調用onRestoreInstanceState?

當從聯繫人選擇器返回活動時,我試圖從onRestoreInstanceState()中的某個包中提取某些內容。但onActivityResult被稱爲後OnRestore中不運行..

我log.e它來檢查,看它是否是跑去它不是...

這裏是我的OnRestore中

@Override 
    protected void onRestoreInstanceState(Bundle outState){ 
     super.onRestoreInstanceState(outState); 
     Log.e("SmsEditCreate", "Inside onRestore"); 
     mDbHelper.open(); 
     setRowIdFromIntent(); 
     populateField(); 
    } 

當返回onActivityResult()被調用時,onRestore不會被調用嗎?

如果還有其他解決方法,請讓我知道。

回答

2

onRestoreInstanceState僅在您的活動被銷燬後創建時纔會調用。開始另一項活動後可能會發生這種情況,但如果沒有必要,Android會盡可能保持舊的活動。

如果您正在尋找合適的時間來完成您的工作,那麼您的活動生命週期可能會對您有所用處。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

好的,所以到我的問題的第二部分。當我需要從onResume()中的Bundle中提取信息時,我該如何解決這個問題? –

+0

嗯,我不能真正回答你的問題,因爲你沒有發佈你想要做的事情。不過,我可以說,您的Activity的實例將與啓動舊活動之前使用的實例相同。因此,您可以在您的Activity類中使用您試圖在onResume()中使用onSaveInstanceState持久化的任何字段。換句話說,如果將字段mRowId設置爲您正在使用的rowId,則可以直接在您的onResume中使用mRowId。在你的onRestoreInstanceState中,你也可以從bundle中設置mRowId。 –

相關問題