2013-05-03 48 views
10

我正在使用onSaveInstanceState()來存儲ArrayList成員變量並將其恢復到主活動的onCreate()方法中。這適用於大多數情況下,如旋轉屏幕等,但如果我打開一個新的活動,並使用'向上'按鈕(而不是後退按鈕)導航回主屏幕,似乎創建一個新的主要活動,而不通過狀態包在onCreate()使用「向上」按鈕在Android中恢復狀態

我已經確認,當按下向上按鈕時,onDestroy()方法被稱爲主要活動的原始實例,這對我來說沒有意義,因爲我希望它恢復現有活動,就好像我已經按下後退按鈕而不是創建一個新的。

有沒有一種方法可以強制新活動來恢復舊活動或恢復現有活動?

+0

謝謝,我有一個籃球事故這篇文章後,然後忘了,直到我開始重新站上今日項目! :S – archangel 2013-05-09 09:18:18

回答

13

嘗試的主要活動的啓動模式設置爲singleTop,在你的清單:爲快速作出迴應,

<activity android:name="activityName" android:launchMode="singleTop" ... /> 
+0

的描述中得到,但它並不起作用,這應該意味着當您按下向上按鈕時,活動不會被破壞,所以(在這種情況下)不需要savedInstanceState - 當系統破壞你的活動以重新獲得一些資源時(在你離開它之後),它將使用sIS包。打開'不保留活動'在ICS +調試設置來模仿 – FunkTheMonk 2013-05-03 08:50:42

+0

謝謝,這沒有把戲。 – archangel 2013-05-09 09:14:30

0

你試圖使用:

Intent i = new Intent(this, MainScreenActivity.class); 
    i.setFlags(Intent.FLAG_CLEAR_TOP); 
startActivity(i); 
    finish(); 

此代碼應要求按下了按鈕。

+0

我試過這種方法,雖然我同意它應該從FLAG_CLEAR_TOP – archangel 2013-05-09 09:13:54