2016-10-15 110 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变量。 –