Search code examples
androidarraysspinnerpreferenceslistpreference

Spinner value into a ListPreference


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!


Solution

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