我有一个奇怪的问题。我以前从未见过它。当我尝试将int值保存到我的SharedPreference然后在其他Activity中恢复时。即使我保存其他值(例如:1);
,值也始终为0private String Number;
private String Profile;
然后将值(在本例中为“1”)保存到第一个Activity中的SharedPreferences:
SharedPreferences a = FirstActivity.this.getSharedPreferences("a", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorProfiles = a.edit();
prefsEditorProfiles.putInt(Profile, 1);
prefsEditorProfiles.putInt(Number, 1);
prefsEditorProfiles.commit();
然后在其他Activity中恢复SharedPreferences:
SharedPreferences a = SecondActivity.this.getSharedPreferences("a", MODE_PRIVATE);
int ab = a.getInt(Number, 0);
应用程序显示0而不是1.我的其他SharedPreferences效果很好。我不知道问题出在哪里。
答案 0 :(得分:4)
我会检查你声明的Number和Profile变量的值是什么......你使用它们的值作为键,所以如果它们的名称有冲突,你可能会用另一个覆盖一个设置,即使代码看起来右。
我建议替换它:
私人字符串编号;
私有字符串配置文件;
有了这个:
私人最终字符串NUMBER =“数字”;
private final String PROFILE =“Profile”;
然后在设置/获取您的偏好值时使用这些常量。
答案 1 :(得分:0)
你有没有设定价值 “数字”和“个人资料”? 如果没有那么那就是你的问题 - 这些字符串是null。
答案 2 :(得分:0)
请尝试使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
而不是使用
SharedPreferences prefs = getActivity().getSharedPreferences ("PREFS_KEY", 0);
在共享首选项中存储int
答案 3 :(得分:0)
我一直试图像你一样使用putInt
,但总是会出错。
prefsEditorProfiles.putInt(Number, 1);
只需将a.putInt
更改为a.putString
并使用a.getString
进行检索即可获得正确的值。
所以,我想putInt
和getInt
应该有问题。
无论如何,请尝试使用正确的值来继续申请。