getPreferences всегда возвращает значение по умолчанию

Я создалPreferenceFragment с двумя логическими предпочтениями.Fragment работает нормально, а настройки сохраняются, когда приложение закрывается и открывается снова. У меня, однако, возникают проблемы при попытке прочитать эти значения; возвращается только значение по умолчанию. Если я отлажу вgetBoolean методSharedPreferences Я вижу, что местныйHashMap имеет размер 0, поэтому возвращается значение по умолчанию, например:

public boolean getBoolean(String key, boolean defValue) {
    synchronized (this) {
        awaitLoadedLocked();
        Boolean v = (Boolean)mMap.get(key); // <-- mMap is of size 0: return defValue
        return v != null ? v : defValue;
    }
}

Я нахожу это странным, поскольку значения предпочтений, очевидно, хранятся и загружаются вPreferenceFragment, Чего мне не хватает?

ВActivity.onCreate():

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

Рез / XML / preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:key="mm_preferences_category_recipe_preferences"
        android:title="@string/mm_preferences_category_recipe_preferences_title" >
        <CheckBoxPreference
            android:key="@string/mm_preferences_numbers_as_fractions_key"
            android:title="@string/mm_preferences_numbers_as_fractions_title"
            android:summary="@string/mm_preferences_numbers_as_fractions_summary"
            android:defaultValue="true" />
        <CheckBoxPreference
            android:key="@string/mm_preferences_comma_as_decimal_separator_key"
            android:title="@string/mm_preferences_comma_as_decimal_separator_title"
            android:summary="@string/mm_preferences_comma_as_decimal_separator_summary"
            android:defaultValue="true" />
    </PreferenceCategory>
</PreferenceScreen>

мойPreferenceFragment учебный класс:

public class MiasMatPreferencesFragment extends PreferenceFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}

Теперь, делая это где-нибудь в приложении, возвращает только значения по умолчанию (true в обоих случаях), даже еслиPreferenceFragment показывает, что значения установлены в false (если так):

boolean foo = getPreferences(Context.MODE_PRIVATE).getBoolean(getString(R.string.mm_preferences_numbers_as_fractions_key), true);
boolean bar = getPreferences(Context.MODE_PRIVATE).getBoolean(getString(R.string.mm_preferences_comma_as_decimal_separator_key), true);

Ответы на вопрос(1)

Ваш ответ на вопрос