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

如何在Android中编辑java代码中的ListPreference值,android,listpreference,Android,Listpreference,我知道如何更改CheckBoxPreference的值,但我无法让它在列表首选项中工作 以下是如何构建我的首选项屏幕: 默认设置有一个复选框 使用列表首选项选择默认颜色以外的颜色 ListPreference用键“titleColor”定义,如下所示: CharSequence[] entries = { "Dark grey", "Light grey", "Light red", "Red" }; CharSequence[] entryValues = { "#4c4c4c", "#b

我知道如何更改
CheckBoxPreference
的值,但我无法让它在
列表首选项中工作

以下是如何构建我的首选项屏幕:

  • 默认设置有一个
    复选框
  • 使用
    列表首选项
    选择默认颜色以外的颜色
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;
        }

    });
这似乎是可行的,尽管我不确定这是否正确

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


有什么想法吗?

对于
复选框

如果您有一个默认的颜色
复选框
,它将使用
android:dependency
进行修复,但是由于您没有它,我想这是唯一的方法

列表首选项相关的
,非常相似:

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

您可以检查以了解哪些方法可用。

就我而言,ListPreference的工作方式类似于字符串值。我添加了ListPreference的定义,因为我尝试了您的代码,但尽管它有效,并且我在列表中未获得任何选择,但我尝试传递“红色”而不是“”,但仍然没有获得任何选择。。。在问我的问题之前,我确实阅读了文档,那是因为我没有发现我问了它…@Sephy:记住你必须传递一个条目,而不是entryValue。好吧,我的错。我做错了。我试图通过它的条目名来获取颜色(这似乎是我的逻辑方式,但显然不是。)我必须给它赋值,列表会为我检查正确的元素。lp.setValue(“#962622”)以获取红色。我会让空字符串。谢谢你的帮助。