2016-11-29 220 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

在調試過程中遇到同樣的問題。正是我需要的,謝謝! –