【问题标题】:how to append data in Shared Preference in Android如何在 Android 的 Shared Preference 中附加数据
【发布时间】:2016-07-25 05:10:08
【问题描述】:

我尝试通过使用将数据附加到共享首选项文件中

SharedPreferences sharedPreferences = getSharedPreferences("myData", MODE_APPEND);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", userName.getText().toString());
editor.putString("password", password.getText().toString());
editor.commit();

但我发现新值会覆盖旧值。你能帮我解决这个问题吗?

【问题讨论】:

  • 覆盖旧值是什么意思?您的意思是 namepassword 以外的值消失了?
  • SharedPreferences中的数据以键值对的形式存储和检索。因此,当您putString 键入“名称”或“密码”时,您会覆盖先前保存的值。你可以在这里阅读它developer.android.com/training/basics/data-storage/…
  • 当我尝试追加到现有的共享首选项 xml 文件时,值名称和密码被新值覆盖。
  • 所以你想要一个名称-密码对列表?
  • 如果你想保存用户名和密码列表,最好使用 sqlite(Database)

标签: android sharedpreferences


【解决方案1】:

MODE_APPEND 并不意味着您为每个键添加多个值。这意味着如果文件已经存在,它会附加到而不是擦除。我们通常使用MODE_PRIVATE

至于保存多个名称和密码,可以看putStringSet(string key Set<String> values方法。

您可以为每个键保存一组字符串值。您可以通过一些特殊字符或字符串来分隔用户名和密码。你甚至可以将一个对象序列化为 json。

所以基本上你需要做的是:

  1. 从共享首选项中获取值列表
  2. 将当前值附加到列表中。
  3. 将列表保存回共享首选项。

【讨论】:

  • 如果是MODE_PRIVATE,是否会删除preference文件中所有key的旧数据?
  • @BrightVarghese 否。除非您覆盖相同的密钥。您需要从 sharedPreferences 中检索列表,为其添加一个值。然后保存回来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2021-03-20
  • 1970-01-01
  • 2018-06-20
  • 2016-05-08
相关资源
最近更新 更多