boolean SharedPreferences始终加载默认值



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

最新更新