为什么不能将INT保存到SharedPreferences?

时间:2012-01-17 19:07:07

标签: android android-activity save int sharedpreferences

我有一个奇怪的问题。我以前从未见过它。当我尝试将int值保存到我的SharedPreference然后在其他Activity中恢复时。即使我保存其他值(例如:1);

,值也始终为0
private 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效果很好。我不知道问题出在哪里。

4 个答案:

答案 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进行检索即可获得正确的值。

所以,我想putIntgetInt应该有问题。

无论如何,请尝试使用正确的值来继续申请。