2010-07-19 2 views
2

Я знаю, как изменить значение CheckBoxPreference, но я не могу заставить его работать для ListPreference.Как отредактировать значение ListPreference из java-кода в Android

Вот как устроен мой экран предпочтения:

  • один CheckBox для умолчанию
  • ListPreference, чтобы выбрать цвет, отличный от значения по умолчанию.

ListPreference определяется с помощью клавиши "titleColor", следующим образом:

CharSequence[] entries = { "Dark grey", "Light grey", "Light red", "Red" }; 
CharSequence[] entryValues = { "#4c4c4c", "#b5b5b5", "#ab6a68", "#962622" }; 
final ListPreference color = (ListPreference) findPreference("titleColor"); 
color.setEntries(entries); 
color.setEntryValues(entryValues); 

Теперь, когда я выбираю цвет я делаю это:

color.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 
      System.out.println("In the onClick method"); 
      System.out.println("change title color"); 
      Editor editor2 = defaultColor.getEditor(); 
      editor2.putBoolean("defaultColor", false); 
      editor2.commit(); 
      return true; 
     } 

    }); 

И это похоже на работу , хотя я не уверен в этом.

Теперь я пытаюсь сделать что-то подобное, когда я выбираю цвет по умолчанию, но я не могу получить список, чтобы либо снять отметку со всего ИЛИ проверить цвет, который был бы по умолчанию.

Любая идея?

+0

Насколько я теперь ListPreference работает как строковое значение. – Pentium10

ответ

5

В случае CheckBox:

Если у вас цвет CheckBox по умолчанию он будет зафиксирован с помощью android:dependency, но так как у вас нет, я полагаю, что это единственный путь.

Связанные с ListPreference, очень похоже:

ListPreference lp = (ListPreference)findPreference("listPreference_key"); 
lp.setValue(""); 

Вы можете проверить docs знать, какие методы доступны.

+0

Я добавил определение своего ListPreference, потому что я пробовал свой код, но, хотя он работает, и я не получаю никакого выбора в списке, я пытался передать «Красный» вместо «», но до сих пор не получил выбора ... И я сделал прочитайте документы перед тем, как задать свой вопрос, потому что я не нашел, что я спросил его ... – Sephy

+2

@Sephy: Помните, что вы должны передать запись, а не entryValue. – Macarse

+0

Хорошо, что я плохой. Я делал это неправильно. Я пытался получить цвет по его имени записи (который, казалось, был логическим способом для меня, но, по-видимому, нет.) Мне нужно дать ему значение, и List позаботится о проверке правильного элемента для меня. lp.setValue ("# 962622"), чтобы получить красный цвет. Однако, пусть пустая строка. Спасибо за помощь Macarse. – Sephy

Смежные вопросы