2016-11-29 176 views
3

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

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

+0

可能的复制。 com/questions/23934645/sharedpreferences-getboolean-returns-true-everytime) – Chisko

+0

您需要找到并检查“常量”键。PREFS_DONT_SHOW_WHATS_NEW',其中的设置为true,可能是在进入一些默认配置之前设置的值! –

+0

我已经看过这个问题。这个问题的解决方案是当我做getBoolean(string,false)时我正在做的事情。谢谢。 @Chisko – huey77

回答

0

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

您是否检查过此问题?

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

+0

上面的代码是我第一次访问它。据我所知,它应该将默认值设置为false,这是第二个参数。我的想法是,它应该设置为假,因为它并没有在任何地方创建。关于这个问题的第一个答案也是这样说的,这就是为什么我很困惑。 http://stackoverflow.com/questions/17753800/android-default-values-for-shared-preferences – huey77

1

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

所以我找到了唯一的解决办法是改变的

getBoolean(Constants.PREFS_DONT_SHOW_WHATS_NEW, false); 

的第一个参数字符串我几乎一个字符改变这个字符串,即“串”到“string_”

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

不知道为什么会发生这种情况。如果有人有任何想法,请告诉我。

感谢

+0

对于我也是同样的问题,我得到了,我已经尝试了很多东西,但什么都不会发生。我现在使用你的技巧显示第一次默认值为false。 – hem

6

要解决,我把这个在我的AndroidManifest:

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

参见://计算器:的[SharedPreferences.getBoolean返回true每次(HTTP https://developer.android.com/guide/topics/data/backup.html

+0

我将不得不在下次尝试这个问题。显然,无论何时删除应用程序并卸载,它都不会删除缓存的数据。所以我必须清除它重置为默认设置。所以一旦我将它设置为true,它是真实的,直到我重置/清除缓存。 – huey77

+1

在调试过程中遇到同样的问题。正是我需要的,谢谢! –