如何在Android中编辑java代码中的ListPreference值

Sep*_*phy 2 android listpreference

我知道如何改变a的值CheckBoxPreference,但我不能让它为a工作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);
Run Code Online (Sandbox Code Playgroud)

现在,当我选择一种颜色时,我这样做:

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;
        }

    });
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我不确定这样做是否合适.

现在,当我选择默认颜色时,我一直在尝试做类似的事情,但是我无法取消列表以取消选中所有内容或检查默认颜色.

任何的想法?

Mac*_*rse 5

在以下情况下CheckBox:

如果你有一个默认的颜色CheckBox,它将被修复使用android:dependency,但由于你没有它,我想这是唯一的方法.

与之相关ListPreference,非常相似:

ListPreference lp = (ListPreference)findPreference("listPreference_key");
lp.setValue("");
Run Code Online (Sandbox Code Playgroud)

您可以查看文档以了解可用的方法.

  • @Sephy:记住你必须传递一个条目而不是一个entryValue. (2认同)