2010-03-23 2 views
3

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

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

+0

Я думаю, вам нужно быть более конкретным, если вы хотите получить помощь. Вы используете библиотеку предпочтений Android? Или вы просто открываете диалог, который показывает список цветов? –

+0

Да, я использую андроиды Библиотека предпочтений. – Allan

ответ

5

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

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

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

+0

Я получил его для работы со всей вашей помощью - вы, ребята, я так благодарен за вас, что вы не торопитесь, чтобы помочь нам начинающим! Благодаря переполнению стека !!! – Allan

2

Если ваш список отображается в диалоговом окне, вам необходимо указать 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}}}; 
Смежные вопросы