是否有內置的方式來保存listView的內容作爲onSaveInstanceState的一部分,然後再恢復?如果用戶點擊後退按鈕並且現在再次調用onCreate,我希望listView看起來一樣。Android:保存listview的內容onSaveInstanceState
2
A
回答
4
如果您將活動的launchMode
設置爲singleTask
,那麼(除非應用程序被終止/ gc被調用),您的數據(列表)將被保留。
這樣,您的設備一次只能保存一個應用程序的運行實例,所以當您「再次啓動」時,無論從哪裏運行,如果它已經在後臺運行,那麼該實例將顯示最新數據)。
如果您的應用程序已完成並且仍需要顯示最新的數據列表,則此解決方案將無法工作。
但是,您可以試試SharedPreferences
:將當前數據保存到應用程序的SharedPreferences
,並在啓動時從該處恢復。
如果沒關係,要在應用程序的每個乾淨啓動時都有預定義的新列表,但是當它進入前臺時,需要列表中最後一次出現的項目,則應使用onCreate
方法的savedInstanceState
參數:
private static final String MYLISTKEY = "myListLabels";
private ArrayList<String> listLabels = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if (savedInstanceState.containsKey(MYLISTKEY))
{
listLabels = savedInstanceState.getStringArrayList(MYLISTKEY);
}
else
{
// TODO: populate explicitely your list
}
}
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putStringArrayList(MYLISTKEY, listLabels);
}
其中listLabels
包含您的列表的標籤。
它們不需要爲String
類型,您可以在Bundle
中放置任何類型。
0
當用戶點擊後退按鈕時,活動總是被銷燬,因此將不會從已保存的實例進行恢復。
因爲當用戶按下後退或活動完成本身的活性被破壞,因爲行爲表明活動不再需要的活動實例的系統的概念已經一去不復返了。
相關問題
- 1. 保存ListView內容
- 2. 的Android ListView和保存內容
- 3. Android內容保存
- 4. 在拖放後保存ListView的內容
- 5. 保存數據(OnSaveInstanceState)
- 6. 包含到Android ListView中的EditText的內容不會被保存
- 7. 保存並加載ListView內容
- 8. android保存內容在setContentView()
- 9. onSaveInstanceState ImageButton的保存狀態
- 10. Listview內容保存到Sqlite數據庫-Android
- 11. 在android中保存listview內容到sd-card
- 12. 更改ListView的內容(Android)
- 13. 如何在onSaveInstanceState中保存
- 14. 什麼保存在onSaveInstanceState?
- 15. OnSaveInstanceState不保存實例
- 16. 使用onSaveInstanceState保存TextView
- 17. 在Android中保存列表的內容
- 18. 保存內容
- 19. Android ListView ellipsize寬列內容
- 20. Android ListView實時內容
- 21. iOS保存/保留數據didReceiveMemoryWarning(相當於Android Bundle onSaveInstanceState)
- 22. ListView的內容佔用大量內存
- 23. Android內存泄漏與ListView中的ListView
- 24. 如何保存在Android的ListView中的TextView的內容,同時滾動
- 25. 如何保存android內容視圖的修改內容?
- 26. 如何將一個listview的內容保存到android中的文本文件?
- 27. Android的ListFragment不保存在onSaveInstanceState()中的包/不檢索包onActivityCreated()
- 28. 保存Android活動狀態和內容
- 29. 在android中保存網頁內容
- 30. 保存的onSaveInstanceState包在哪裏?
當他們擊中後退按鈕時,它似乎被銷燬... onCreate被再次調用。我已經嘗試過這種改變,但沒有奏效。這聽起來是對的嗎? – corbin 2011-05-15 19:30:14
這可能是因爲您在'onCreate'方法中明確填充了您的列表。請參閱我的更新,以在您的活動的「onCreate」中使用'savedInstanceState'。 – rekaszeru 2011-05-15 19:57:55
當用戶點擊後退按鈕時,onSaveInstanceState似乎不會被調用。它似乎只在活動暫停時才被調用,而不是被殺死。所以,我認爲我已經使用了更持久的東西。原因是,用戶投訴是他們點擊後退按鈕,然後他們後來重新啓動應用程序,並且列表視圖不再有其內容。 – corbin 2011-05-18 05:22:33