sharedpreferences使所有变量都相同

时间:2012-06-15 08:25:05

标签: android sharedpreferences

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

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

执行此操作后,我将保存3个字段,这些字段是个人的ID,姓名和姓氏。保存过程成功。我将所有这3个变量保存在一个名为person的对象中。我可以从共享内存中获取信息。当我得到他的Id的第一个人的信息时,我可以做到。我正在把它写到Log。它很成功。但在获得第二人称身份的第二人称信息后,第一人称对象也是第二人称。共享首选项将所有变量分配给相同的值。

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

修改

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 –

3 个答案:

答案 0 :(得分:1)

SharedPreferences只是Map of Key Value pairs

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

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

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

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

因此,当您要求sharedPreference“id”时,您将获得

 zxy

修改

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

答案 1 :(得分:0)

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

    personGet.setId(mPrefs.getString("id", "")); 

答案 2 :(得分:0)

在共享首选项中编辑或保存某些内容时,需要调用“commit()”。 就像那样,

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

SharedPreferences.Editor editor = mPrefs.edit();

editor.putString(“name”,person.getName())。commit();