Вы должны позвонить editor.apply();
один раз после всех ваших editor.put();
заявлений. В противном случае все изменения, внесенные вами в настройки, будут отменены. Предполагая, что элементы в вашем массиве не будут менять позицию вообще, тогда вы можете просто сохранить выбранную позицию как int в ваших предпочтениях.
Сохранить:
int selectedPosition = yourSpinner.getSelectedItemPosition();
editor.putInt("spinnerSelection", selectedPosition);
editor.apply();
Загрузить:
yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));
Если элементы в вашем массиве будут меняться, вам придется хранить фактическую строку вместо позиции. Примерно так будет работать:
String selectedString = yourArray[yourSpinner.getSelectedItemPosition()];
editor.putString("spinnerSelection", selectedString);
editor.apply();
и
найти положение строки, просматривая ваш массив и проверяя массив [i] по значению, сохраненному в prefs. Затем позвоните yourSpinner.setSelected(position)
. Если вместо этого вы используете ArrayList, эту часть можно выполнить без цикла, вызвав
ArrayList.indexOf(prefs.getString("spinnerSelection", ""));
Имейте в виду, что только ArrayList имеет метод indexOf();
. На обычном массиве вы не можете использовать метод indexOf();
, вам придется вручную искать ваш массив, чтобы найти правильное значение.