由于某种原因,每次返回默认值都为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,因为它是第一次创建。 (关于这个问题的第一个答案提到了这一点,除非我错了)
答案 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?