SharedPreferences.getBoolean为默认值返回true

时间:2016-11-29 23:20:32

标签: android android-studio android-sharedpreferences

由于某种原因,每次返回默认值都为true。我卸载了我的应用程序并重新安装,我执行以下操作来初始化值。但由于某种原因,布尔值设置为true而不是false。

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoadingActivity.this);
    final int locationType = prefs.getInt(Constants.PREFS_LOCATION, 0);
    final boolean skipWhatsNew = prefs.getBoolean(Constants.PREFS_DONT_SHOW_WHATS_NEW, false);

    Log.v("loading activity : " , " " + skipWhatsNew);

我不确定为什么这样做,因为以前只是将值设置为false。

我已经看过类似的问题,但没有一个帮助过,所以任何帮助都会很好,谢谢。

我已经看过的问题,

Android - SharedPreference.getBoolean retrieving false even if i am storing true?

SharedPreferences.getBoolean returns true everytime

上面的代码也是我第一次访问它,根据我的理解,它应该设置为false,因为它是第一次创建。 (关于这个问题的第一个答案提到了这一点,除非我错了)

android default values for shared preferences

3 个答案:

答案 0 :(得分:6)

要修复,我把它放在我的AndroidManifest中:

<application
    android:allowBackup="false"
    ...>

请参阅:https://developer.android.com/guide/topics/data/backup.html

答案 1 :(得分:1)

我无法弄清楚为什么它会返回true作为默认值。

所以我找到的唯一解决方案是更改

的第一个参数中的字符串
getBoolean(Constants.PREFS_DONT_SHOW_WHATS_NEW, false);

我几乎用一个字符改变了这个字符串,即“string”改为“string_”

现在它返回默认值false。然后我通过在我的应用程序的其他部分将其更改为true然后重新启动应用程序来测试首选项,它仍然是真的。然后我卸载应用程序,每当我执行上述代码时,它将重置为false作为默认值。

不知道为什么会这样。如果有人有任何想法,请告诉我。

谢谢

答案 2 :(得分:0)

您应该将代码粘贴到您将值设置为false的位置。如果您明确将其设置为false并且将false作为默认值传递,则此方法没有理由返回true,应该没有办法。也许有一种方法,你可以应用某种逻辑,使其可以返回true,或者你可能在使用sepping值后不使用commit方法。

你有没有检查过这个问题?

SharedPreferences.getBoolean returns true everytime Android - SharedPreference.getBoolean retrieving false even if i am storing true?