Android: использование ListPreference и получение строки ключа - PullRequest
3 голосов
/ 23 марта 2010

У меня есть меню настроек, которое появляется, и в нем есть меню типа ListPreference. Он связан с файлом settings.xml, в котором есть «строки-массивы». Все работает хорошо, но я не знаю, как получить предпочтения пользователей.

В качестве примера, скажем, пользователь выбирает цвет (красный, зеленый или синий). Список, который я создал в моих «строках-массивах», содержит текст красного, зеленого и синего цветов. В моем коде я бы хотел что-то сделать, если пользователь выбрал красный, что-то еще, если он выбрал синий и т. Д. И т. Д. Могу ли я использовать оператор case или if И самое главное, как я могу получить предпочтения пользователя - ключ? (я проверяю логическое значение?)

Ответы [ 2 ]

5 голосов
/ 23 марта 2010

Если вы используете ListPreference и не отключили постоянное состояние, вы можете прочитать выбранное значение из SharedPreferences после завершения настройки.

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.getString(yourkey, "defvalue");

Также вы можете подписаться на событие onClick и использовать упомянутый код Rpond.

2 голосов
/ 23 марта 2010

Если ваш список отображается в диалоге, вам нужно указать OnClickListener, который будет вызывать метод onClick. Проверьте пример ниже. В этом примере индекс, передаваемый в onClick, является индексом элемента в массиве.

new AlertDialog.Builder(this).setTitle("Settings").setItems(R.array.colors, new DialogInterface.onClickListener() { void onClick(DialogInterface d, int index) {
switch(index) {
CASE 0: // do something
CASE 1: // do something else}}}; 
...