Стойност на 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