Значение Spinner в ListPreference

Я пытаюсь сохранить значение Spinner в ListPreference. Я не могу заставить его работать. Я уже давно пытаюсь заставить это работать. У кого-нибудь есть решение или кто-нибудь может указать мне в правильном направлении.

Итак, вот что у меня есть:

SharedPreferences preferences;

private static final String KEY_WEIGHT_PREFERENCE = "weightunit";
...

preferences = PreferenceManager.getDefaultSharedPreferences(this);
...

Это основная часть, и Spinner, и ListPreference получают одни и те же данные из массива xml.

SharedPreferences.Editor edit = preferences.edit();
    Spinner weight = (Spinner) findViewById(R.id.weightUnitSpinner);
    int selectedPosition = weight.getSelectedItemPosition();
            edit.putInt(KEY_WEIGHT_PREFERENCE, selectedPosition);
            edit.commit();

Спасибо!


person sweggersen    schedule 05.03.2012    source источник


Ответы (2)


Что не работает?

Существует пример приложения под названием Spinner, который содержит образец Spinner. Он сохраняет состояние Spinner в сохраненных настройках в onPause() и восстанавливает его в onResume().

person Joe Malin    schedule 06.03.2012
comment
Я попробовал пример счетчика, и я могу сохранить состояние счетчика в настройках. (то же, что и выше) Но он не загружается в ListPreference. Если я использую код, который я написал выше, я получаю в файле data/data/com.android.weight/shared_pref/ правильное значение предпочтения (int), но оно не загружается в ListPreference. - person sweggersen; 06.03.2012

Я нашел ответ, SpinnerValue нужно сохранить в виде строки, чтобы ListPreference был распознан.

Вот мой окончательный код:

private void updatePreferenceWeightValue() {

    SharedPreferences.Editor edit = preferences.edit();
    Spinner weight = (Spinner) findViewById(R.id.weightUnitSpinner);
    int selectedPosition = weight.getSelectedItemPosition();
    String weightValue = "";
    weightValue = Integer.toString(selectedPosition);
    edit.putString(KEY_WEIGHT_PREFERENCE, weightValue);
    edit.commit();
}
person sweggersen    schedule 06.03.2012