как сохранить изменения в listpreference?

Я хочу, чтобы пользователь мог выбрать размер шрифта в моем приложении. как я могу реагировать на его выбор? как я могу получить значение из его выбора? спасибо, у меня есть этот код настроек:

<string-array name="aaa_entries">
    <item >0</item>
    <item >1</item>
    <item >2</item>
    <item >3</item>
</string-array>

<string-array name="aaa_values">
    <item >Very small text</item>
    <item >Small text</item>
    <item >Normal text</item>
    <item >Large text</item>
</string-array>

Код:

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals("pref_sync")) {
        String selectedFont=sharedPreferences.getString("pref_sync",null);
        if("Very small text".equalsIgnoreCase(selectedFont)) {
            Toast.makeText(getApplicationContext(),"asdasdasdasd",Toast.LENGTH_SHORT).show();
        }
    }
}

person user3436759    schedule 08.05.2014    source источник


Ответы (1)


Добавьте listener к ListPreference, и когда пользователь выберет элемент из ListPreference , onPreferenceChange будет вызываться с новым выбранным значением.

Preference listPreference = getPreferenceManager().findPreference("your_key");

listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                String userSelectedValue = (String) newValue;
                Toast.makeText(getActivity(), “user picked a font”, Toast.LENGTH_SHORT).show();
                return true;
            }
        }); 
person Libin    schedule 08.05.2014