2016-10-15 128 views
0

enter image description here的Android sharedpreferences.getBoolean()返回錯誤,默認值

圖片上可以看到,布爾變量採取了默認值,即使是在一個SharedPreferences鍵值對用正確的鍵。什麼會導致這種情況?在代碼中,這是在onCreate方法的末尾。在這之後,onMapReady方法被調用(從com.google.android.gms.maps.OnMapReadyCallback),在那裏我檢查SAME布爾值,看看我是否需要在地圖上放置一些標記。在該方法中getBoolean()行爲是正確的,默認值將被忽略。這對我沒有任何意義,任何人都可以幫助我?

+0

請出示您放置布爾到相同的共享偏好 –

回答

6

1)您是否打算在關鍵字「isThereReservation」中輸入空格?在您的調試代碼中,該變量沒有空格。確保您使用正確的密鑰,否則您將獲得默認值!

2)如何保存sharedPref?你的代碼應該是:

myPrefs = myContext.getSharedPreferences("MY_PREFERENCE_NAME", MODE_PRIVATE); 
myPrefEditor = myPrefs.edit(); 
myPrefsEditor.clear(); 
myPrefsEditor.putBoolean("MY_KEY",myBool); 

,然後你可以通過訪問:

myPrefs = myContext.getSharedPreferences("MY_PREFERENCE_NAME", MODE_PRIVATE); 
myPrefs.getBoolean("MY_KEY",MY_DEFAULT_VALUE); 
+0

我感覺非常愚蠢,謝謝......我看了10次拼寫代碼,從未注意到空間。我應該刪除這個問題然後呢?因爲它可能不會幫助任何人。 –

+0

哈哈!這發生在我們所有人身上!不用擔心,你非常歡迎! :D如果您認爲我的答案令人滿意,請將其標記爲已接受,並可以向上投票:D – Rippr

0

如果密鑰不存在,方法getBoolean返回默認值。在你的情況下,默認值爲假,如果SharedPreference的鍵不存在,在你的情況下是false。

您在調試中顯示了HashMap的值mMap但是同一個密鑰的eu.arrowhed.arrowheaddemo的內容是什麼?

+0

首選項是在活動的全局變量,你可以看到圖片上唯一的初始化。 mMap hashmap屬於prefs變量。 –