سؤال

I'm trying to save a Spinner value into a ListPreference. I can't get it to work. I've tried to get this working for a long time now. Does anyone have a solution or can anyone point me in the right direction.

So this is what I have:

SharedPreferences preferences;

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

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

This is the main part, both the Spinner and the ListPreference grab the same data from an array 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();

Thanks!

هل كانت مفيدة؟

المحلول 2

I found the answer, the SpinnerValue needs to be saved as a string in order to get recognized by the ListPreference.

Here's my final code:

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();
}

نصائح أخرى

What isn't working?

There's a sample app called Spinner that contains a sample Spinner. It saves the state of the Spinner to saved preferences in onPause(), and restores it in onResume().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top