Android:无法保存包含位置的hashmap的arraylist

时间:2013-08-06 23:42:24

标签: android listview arraylist save

我有一个列表视图,我已经设法从gps中保存了我当前的坐标(就像一个按钮,上面写着添加当前位置或其他内容)

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

我正在尝试保存此列表,以便在我启动应用程序后可以使用它。我尝试过所有不同的事情,比如

@Override protected void onSaveInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    savedInstanceState.putSerializable("savedLocations", list);
    super.onSaveInstanceState(savedInstanceState);
}

然后

if (savedInstanceState != null) {
  list = (ArrayList<HashMap<String,String>>) savedInstanceState.getSerializable("savedLocations");
}

从onCreate()开始,但savedInstanceState始终为null,在我点击后退按钮并关闭应用程序后,它从不加载列表。关于如何实现这一目标的任何想法?

我知道只有在应用程序退出后才会调用onSaveInstanceState,例如单击主页按钮并导航到另一个应用程序。

1 个答案:

答案 0 :(得分:0)

onSavedInstance状态仅用于在活动暂停和恢复之间存储状态。例如设备旋转。 如果活动结束(例如,当你退出应用程序时),数据就会丢失。

要永久存储数据,您可以使用共享首选项或数据库。

共享首选项实际上仅针对单个值设计,通常是用户选择的设置或首选项。

您需要使用数据库来保存数据。第一次使用数据库可能有点令人生畏。

我建议使用名为ActiveAndroid的库。它抽象了很多东西,并且有很好的api。它使用起来非常简单。

您需要将数据保存在数据库中。

相关问题