android - sharedpreferences 使所有变量相同

标签 android sharedpreferences

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

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

完成此操作后,我将保存 3 个字段,即一个人的 ID、姓名和姓氏。保存过程成功。我将所有这 3 个变量保存在一个名为 person 的对象中。我可以从共享内存中获取信息。当我得到第一个有他的 Id 的人的信息时,我就可以做到。我正在把它写到日志中。它是成功的。但是在用第二人称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 –

最佳答案

SharedPreferences 只是一个 Map of Key Value pairs

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

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

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

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

因此,当您请求 sharedPreference“id”时,您将得到

 zxy

编辑

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

关于android - sharedpreferences 使所有变量相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11047084/

相关文章:

java - 如何在 Android 应用程序退出之前进行一些清理?

javascript - IOS 中的无效日期 Ionic 3

android - 读取传入消息,直到读取验证短信

android - 无法在应用程序处于后台时收到 "open"通知

android - 保存的首选项不保存

android - 如何在另一个 Activity 中获得共享偏好值

Android 保存复选框首选项

java - 改造覆盖方法失败

android - 如何更改抽屉导航主题并向后兼容

android - SharedPreferences 不适用于 Resume