2011-10-17 12 views
5

我有一個活動在用戶選擇聯繫人後恢復。現在,在用戶選擇一個聯繫人onSavedInstanceState被調用之前,我把一個字符串放在Bundle中。現在,用戶選擇聯繫人並返回結果後。 onRestoreInstanceState不會被調用。只有onResume()被調用。那麼,一旦活動恢復,我怎麼會把我的字符串拉回來?如何從onResume()中的bundle中拉字符串?

+0

看看這個問題:http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity – slayton

+0

我沒有得到這與我有什麼關係問題 –

回答

5

比方說你有兩個活動A和B,如果你想通過從A到B的信息活動A開始活動B.,你可以從一個信息傳遞與以B:

Intent i = new Intent(this. ActivityB.class); 
i.putExtra("Key","Value"); 
startActivity(i); 

然後在活動B你可以得到

String value = this.getIntent().getExtras().getString("keyName"); 

字符串但是,如果你想從B到A傳遞信息,你必須使用不同的方法。您需要使用startActivityForResult而不是使用startActivity。這種方法的描述在這裏找到:How to return a result (startActivityForResult) from a TabHost Activity?

+0

getIntent()沒有getBundle方法 –

+0

檢查我的答案 – dymmeh

+0

因此,沒有辦法在onSavedInstanceState,onCreate和onRestoreInstanceState之外獲取Activities包? –

3

首先,爲什麼onRestoreInstanceState不點火:根據documentation,onRestoreInstanceState被後在onStart(),其中,根據activity lifecycle diagram,只得到後的onCreate稱爲所謂或onRestart。如果您的主要活動在用戶選擇聯繫人時未被銷燬,那麼onStart將永遠不會觸發,並且onRestoreInstanceState永遠不會觸發。該圖顯示了「活動之前出現另一個活動」並且onPause被觸發時的情況 - 在那裏,只有當系統需要更多內存時,活動纔會被終止。

其次,如何獲取您保存的數據之前選擇一個聯繫人 - 一個本地變量應該這樣做,因爲活動留在內存中。如果您的活動確實在而不是停留在內存中,onRestoreInstanceState應該會觸發。

+0

非常感謝。你的最後一部分對我所要做的事情非常有用 –

相關問題