Как редактировать значение ListPreference из Java-кода в Android - PullRequest
2 голосов
/ 19 июля 2010

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

Вот как построен мой экран настроек:

  • один CheckBox для значения по умолчанию
  • A 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;
        }

    });

И это, кажется, работает, хотя я не уверен, что сделать это

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

Есть идеи?

1 Ответ

5 голосов
/ 19 июля 2010

В случае CheckBox:

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

Связанный с ListPreference, довольно похож:

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

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

...