我可以使用Android中的SharedPreferences存储两个或多个具有相同键的值吗?

时间:2012-11-29 09:56:56

标签: android sharedpreferences

我可以使用Android中的SharedPreferences存储两个或多个具有相同键的值吗?如果没有,请告诉我如何在许多用户在注册应用中注册时如何存储用户名,名字,密码等值?

前:

person A registered with username="john12", first name="john" and DOB="06/06/2000".
person B registered with username="arun89", first name="arun" and DOB="08/11/1989".

现在,我想将这些值存储在SharedPreferences中并稍后检索它们。是否可以使用SharedPreferences?如果没有,请告诉我如何以其他方式做。

提前谢谢。

6 个答案:

答案 0 :(得分:3)

我会考虑创建JSONObject并添加您要存储的字段作为键:值对。

json.putString(key, value);

然后,您可以使用json.toString()将json对象存储在其字符串表示中,稍后使用

将其恢复
JSONObject jo = new JSONObject(jsonString);
String value = jo.getString(key);

JSONObject在字符串旁边也提供不同的数据类型。

这实际上取决于您要存储的数据量。根据我的选择,我会选择SharedPreferences或SQLite实现。

答案 1 :(得分:2)

对于你的情况,最好使用SQLIte数据库。但是如果你想使用共享首选项,它仍然是可能的。你必须使用带有附加索引的键来记住不同的用户,如

USERNAME1:阿伦

而UserName2:约翰

您必须记住用户的总数。然后可以维护所有用户。您还可以使用其他数据结构(如hashmap)来维护共享首选项的数据。

答案 2 :(得分:2)

您无法直接存储这些值(后者将覆盖之前添加的值),但您始终可以存储Parcelable并将数据放入其中

答案 3 :(得分:1)

我不认为这是可能的,因为你不知道用户的数量。 您可以尝试用逗号分隔用户,但这很蹩脚。

您应该考虑使用SQLite数据库。 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

答案 4 :(得分:0)

然后你必须存储一个数组用户对象列表首先创建一个类userInfo然后创建一个数组列表类型userInfo然后将数据存储在这个列表中并在SharedPreferences中放入一个可序列化的对象。

答案 5 :(得分:0)

您还可以将它们存储在名为“registers”的单个键上作为字符串。将每个寄存器连接到首选项。把“;” (或任何其他你想要的字符)在每个寄存器之间。然后解析字符串并使用值。

键:寄存器

值:“username = john12,first name = john,DOB = 06/06/2008; username = mike12,first name = mike,DOB = 06/07/20”

使用String的split方法将为您提供一个寄存器列表。

registers.split(";");

再次用“,”拆分将给出每个寄存器的属性。