是否有内置的方式来保存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