【问题标题】:Shared Preferences getint not returning default value共享首选项 getint 不返回默认值
【发布时间】:2016-03-03 06:02:23
【问题描述】:

我正在使用共享首选项,并希望在未找到首选项时将默认值设为 1。

我的代码

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

我不确定为什么默认值没有得到 1。

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

感谢您的帮助,谢谢。

【问题讨论】:

  • 哪个安卓版本?
  • 你的实现会有问题。因为如果什么也没找到,它应该返回 1。否则它将为空。但你说的是it returns 2。所以我猜你要么之前在其中存储了一些值,要么将一些值分配给currentRadio
  • @jon 在卸载应用之前,您是否将 2 保存到您的共享偏好设置中?如果是,请尝试我的解决方案。
  • @sankyjain 不,我事先在共享首选项中保存的内容并不重要。无论我在新安装后什么时候开始,它都会返回 2。

标签: java android sharedpreferences


【解决方案1】:

只是通过这个:

 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()

【讨论】:

    【解决方案2】:

    声明首选项,如:

    prefs = PreferenceManager.getDefaultSharedPreferences(context);
    

    【讨论】:

      【解决方案3】:

      这将是由于您错误地执行共享偏好而发生的。 做一件事在你的应用程序中搜索键“radioSelected”。如果它在任何其他地方发现将值保存在共享首选项中,则将其发表评论。

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

      【讨论】:

        【解决方案4】:

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

        在清单文件中添加

        android:allowBackup="false" 
        

        【讨论】:

          猜你喜欢
          • 2013-07-19
          • 2013-06-19
          • 1970-01-01
          • 1970-01-01
          • 2019-05-11
          • 1970-01-01
          • 2018-06-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多