2014-10-20 60 views
0

我需要重新啓動我的PreferenceActivity並保存以前打開的所有活動。我可以輕鬆地在Android SDK> 11中執行此操作,僅使用一行代碼super.recreate();在這種情況下,我的活動重新啓動,並且所有以前的活動也在後退堆棧中,當我按下「後退」按鈕時,我得到前一個活動。但是這個美妙的方法僅適用於Android版本爲11或更高版本的設備。但是Android版本低於11呢?在這種情況下,我正在這樣做:finish(); startActivity(getIntent());如何重新啓動活動並保存Android SDK中所有以前打開的活動<11

一切正常,但是當我按下後退按鈕時,當前的活動完成其工作並關閉,這就是所有,我沒有得到以前打開活動。有沒有人有想法如何解決這個問題?

這是我的代碼

if (android.os.Build.VERSION.SDK_INT >= 11) { 
      super.recreate(); 
     } 
else { 
     finish(); 
     startActivity(getIntent()); 
    } 

回答

1

你可以做的是Activity.startActivityForResult()啓動PreferenceActivity,當你需要重新創建活動,只需使用該Activity.RESULT_FAILED不斷完成,表示該活動希望被重新。這樣,你將保持你的狀態進入,如果你需要傳回數據,只需設置你的結果意圖。

+0

所以,sceme是下一個:1.在我的活動「A」我調用startActivityForResult(PreferenceActivity)。 2.然後在PreferenceActivity中,我使用結果代碼Activity.RESULT_FAILED完成它。 3. onActivityResult方法中的活動「A」我再次獲取Activity.RESULT_FAILED代碼和startinf PreferenceActivity? – 2014-10-20 14:54:25

+0

絕對:)我就是這麼做的。 – AedonEtLIRA 2014-10-20 14:58:12

+0

這是很棒的解決方案!非常感謝你!我也想問一下,如果我可以從其他許多活動中啓動PreferenceActivity,那麼如何做到這一點很簡單,或者我需要在可以啓動PreferenceActivity的每個活動中實現此算法? – 2014-10-20 15:09:02

相關問題