1

我正在使用共享首选项来保存 3 个字符串字段。我每次都在另一个类中使用以下代码打开共享首选项。我通过一个函数调用这个类来保存它。

mPrefs=context.getSharedPreferences(id, Context.MODE_PRIVATE);

这样做之后,我保存了 3 个字段,即一个人的 id、name 和 surname。保存过程成功。我将所有这 3 个变量都保存在一个名为 person 的对象中。我可以从共享内存中获取信息。当我得到第一个人的信息时,我可以做到。我正在把它写到日志。它是成功的。但是在使用第二人称的 id 获得第二人称信息后,第一人称对象也是第二人称。共享首选项将所有变量分配给相同的值。

任何帮助将不胜感激。谢谢

编辑

personGet.setId(mPrefs.getString("id", null)); 
personGet.setName(mPrefs.getString("name", null)); 
personGet.setSurname(mPrefs.getString("surname", null)); 
// This is for saving to shared preferences. 

mPrefs = context.getSharedPreferences(person.getId(), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putString("name", person.getName()); 
editor.putString("surname", person.getSurname()); 
editor.putString("id", person.getId()); 
// This is for saving. the "id" is unique for all users –
4

3 回答 3

1

SharedPreferences 只是键值对的映射

是的,这会将您的 id 保存在“id”键下:

 editor.putString("id", "abc");

但是这样做会覆盖它,因为键“id”是相同的:

 editor.putString("id", "zxy");

因此,当您询问 sharedPreference “id”时,您将得到

 zxy

编辑

不要忘记调用 commit(); 在你的共同偏好上

于 2012-06-15T08:51:20.173 回答
0

当我们从偏好中获取数据时,我们这样写

    personGet.setId(mPrefs.getString("id", "")); 
于 2012-06-15T08:49:39.877 回答
0

当您在共享首选项中编辑或保存某些内容时,您需要调用“commit()”。会是这样,

mPrefs = context.getSharedPreferences(person.getId(), Context.MODE_PRIVATE);

SharedPreferences.Editor 编辑器 = mPrefs.edit();

editor.putString("name", person.getName()).commit();

于 2012-06-15T10:59:17.923 回答