7

我可以在 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?如果没有,请告诉我如何以其他方式进行。

先感谢您。

4

6 回答 6

3

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

于 2012-11-29T10:12:25.897 回答
3

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

json.putString(key, value);

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

JSONObject jo = new JSONObject(jsonString);
String value = jo.getString(key);

除了字符串之外,JSONObject 还提供不同的数据类型。

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

于 2013-03-20T01:09:50.443 回答
2

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

用户名 1:arun

用户名 2:约翰

您必须记住用户总数。然后可以维护所有用户。您还可以使用其他数据结构,如 hashmap 来维护共享偏好的数据。

于 2012-11-29T10:03:41.500 回答
1

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

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

于 2012-11-29T09:59:59.710 回答
0

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

于 2012-11-29T10:01:32.047 回答
0

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

关键:寄存器

值:“用户名=john12,名字=john,出生日期=06/06/2000;用户名=mike12,名字=mike,出生日期=06/07/2012”

使用 String 的 split 方法会给你一个寄存器列表作为字符串。

registers.split(";");

使用“,”再次拆分将为您提供每个寄存器的属性。

于 2012-11-29T10:04:40.967 回答