【问题标题】:Android: Can't save arraylist of hashmap which contains locationsAndroid:无法保存包含位置的哈希图数组列表
【发布时间】:2013-08-06 23:42:24
【问题描述】:

我有一个列表视图,在其中我设法从 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 始终为空,并且在我点击后退按钮并关闭应用程序后,它永远不会加载列表。关于如何实现这一目标的任何想法?

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

【问题讨论】:

  • meta:使用 4 个空格来格式化代码,因此缩进和换行将被保留。

标签: android listview arraylist save


【解决方案1】:

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

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

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

您将希望使用数据库来保存您的数据。第一次使用数据库可能有点令人生畏。

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

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

【讨论】:

  • 我会尝试ActiveAndroid库,稍后给你一些反馈
  • 不幸的是,我没有设法创建数据库并存储我的数据。我尝试了很多教程,但没有一个对我有用
  • 嗯,这确实是一个单独的问题,与您尝试过的库或一般的 sql 数据库有关。我会考虑回答上述问题。如果您在使用 ActiveAndroid 时遇到问题,请发布一个新问题并告诉我。我看看能不能帮忙。
  • 我解决了我的问题,我刚刚根据我找到的教程创建了一个 sqli 数据库,并根据我的需要对其进行了配置。感谢您的关注:)
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多