我对SharedPreferences和boolean有一个奇怪的问题。我已经在我的xml:中设置了这段代码
xml:
<CheckBoxPreference
android:key="onlywifiupload"
android:defaultValue="true"
android:summary="@string/summary_onlywifiupload"
android:title="@string/title_onlywifiupload"
/>
从Java代码中,我调用:
boolean onlywifiupload = pref.getBoolean("onlywifiupload", true);
即使复选框被选中或取消选中,在onlywifiupload中也总是正确的。与设置相同:
boolean onlywifiupload = pref.getBoolean("onlywifiupload", false);
似乎总是加载默认值,而不是检查值。
似乎使其工作的唯一方法是:
mPrefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
onlywifiupload = mPrefs.getBoolean("onlywifiupload", true);
不知道为什么我需要从PreferenceManager对象调用getDefaultSharedPreferences
在此之前,我以这种方式调用偏好:
pref = getSharedPreferences("AppPref", MODE_PRIVATE);