2013-10-11 18 views
9

我遇到與保存活動狀態相關的問題。我在這裏搜索並閱讀了很多問題,但我無法得到我的問題的答案。我有一個Activity A與2 FragmentsActivity A保存由Fragments顯示的數據。當我爲我的設置Activity啓動新的Intent時,Activity A暫停(未銷燬),onPause()onSaveInstanceState()方法被調用,因此我將所有數據保存在onSaveInstaceState()中。如何檢索onResume()中的onSaveInstanceState()包?

當我使用後退按鈕Activity A再次顯示,但onCreate()方法不會被調用,因爲Activity沒有破壞,反而onResume()方法被調用,但我失去了我的變量的狀態Activity A和我從我的設置恢復無法訪問我保存在onSaveInstanceState()中的Bundle,因爲沒有調用onCreate()

那麼onSaveInstanceState()只有在旋轉屏幕時纔有用?如何訪問我在onSaveInstanceState()中保存的所有數據?或者我應該將它們保存到一個文件或SharedPrefs以後訪問onResume()

+1

它賺不了多少意義...你失去了你的實例變量對Acitivy聲明的數據?他們去了空? –

回答

23

這可以幫助嗎?
1.在onStop()中使用getIntent().putExtras()將您的數據保存到Activity的包中。
2.然後getIntent().getExtras()onResume()檢索它。

而且你應該做訪問之前空校驗捆:)

+0

工作很好!爲了保存我使用'getIntent()。putExtras()'的數據,因爲'getIntent()。getExtras()'在那時你什麼都沒有保存。 – Andres

+0

你能分享一個例子嗎?我試圖在onStop/onResume中實現這一點,但沒有太多運氣。 – snapplex

+0

Android開發人員推薦我們使用'onSaveInstanceState','onRestoreInstanceState'和'onCreate',這很不可思議,但它非常不穩定。感謝分享這個,它解決了我的問題 –

-3

您可以從SavedInstance保存所有的東西在包或變量。

,並設置onActivityCreated方法的數據,如:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onActivityCreated(savedInstanceState); 

     // Do your stuff here 

} 
+0

有時onActivityCreated沒有調用。 –

相關問題