共享首选项getint未返回默认值

时间:2016-03-03 06:02:23

标签: java android sharedpreferences

我正在使用共享首选项,并且在没有找到首选项时希望默认值为1.

我的代码

int currentRadio;
...
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
currentRadio = prefs.getInt("radioSelected", 1);

我不确定为什么我的默认值不是1。

要测试我会从手机上卸载应用程序,然后从android studio将应用程序启动到我的手机。每次我得到2作为默认值。但是,如果我只是清除应用程序中的数据,我会得到1作为默认值。

感谢任何帮助,谢谢。

4 个答案:

答案 0 :(得分:2)

通过这个:

 SharedPreferences sp = getSharedPreferences("your_prefs",Activity.MODE_PRIVATE);
 SharedPreferences.Editor editor = sp.edit();
  editor.putInt("your_int_key", yourIntValue);
  editor.commit();

然后你可以得到它:

 SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
 int myIntValue = sp.getInt("your_int_key", -1);

SharedPreference接口允许您访问xml文件,并通过其编辑器轻松修改它。该文件存储在/data/data/com.your.package/shared_prefs/中,您可以通过此SharedPreference API访问它

实际上,您还需要为getInt提供一个默认值,当使用无法找到密钥your_int_key的int时返回该值。像这样:

   int myIntValue = sp.getInt("your_int_key", -1);

其中-1是默认值

此外,如果您使用API​​ 9或更高版本,则应使用apply()而不是commit()

答案 1 :(得分:0)

声明prefs,如:

prefs = PreferenceManager.getDefaultSharedPreferences(context);

答案 2 :(得分:0)

由于您错误地实施了共享偏好,这将会发生。 做一件事在你的应用程序中搜索关键“radioSelected”。如果在任何其他地方找到将值保存在共享首选项中,则将其评论。

或者只是分享您的完整共享偏好文件。

答案 3 :(得分:-2)

如果使用android-21,问题不在于偏好。它与备份管理器

添加清单文件

android:allowBackup="false"