Android sharedpreferences.getBoolean() returns 错误,默认值

Android sharedpreferences.getBoolean() returns the wrong, default value

在图片上你可以看到布尔变量取了默认值,即使在 SharedPreferences 中有一个键值对与正确的键。什么会导致这个?在代码中,这是在 onCreate 方法的末尾。在此之后,调用 onMapReady 方法(来自 com.google.android.gms.maps.OnMapReadyCallback),我在其中检查相同的布尔值,以查看是否必须在地图上放置一些标记。在该方法中 getBoolean() 行为是正确的,默认值被忽略。这对我来说没有任何意义,任何人都可以帮助我吗?

方法 getBoolean return 如果键不存在则默认值。在您的情况下,默认值为 false,如果 SharedPreference 的键不存在,则在您的情况下为 false。

您在调试中显示了 HashMap mMap 的值,但对于同一键,eu.arrowhed.arrowheaddemo 的内容是什么?

1) 您是否打算在键 "isThereReservation " 中使用 space? 在您的调试代码中,变量没有 space.确保您使用正确的密钥,否则您将获得默认值!

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);