Android-如何设置CheckBoxPreference的值?或

Android-如何设置CheckBoxPreference的值?或,android,android-preferences,checkboxpreference,Android,Android Preferences,Checkboxpreference,我正在构建一个应用程序,在这个应用程序中,我需要显示一个设置屏幕,用户可以在主活动的列表视图中查看哪些类别的项目 我正在解析这些类别的XML,因此PreferenceScreen是通过编程完成的,所有CheckBoxPreferences都构建在一个循环中。代码: try { URL url = new URL("http://www.someurl.com/phone/categories.php"); DocumentBuilderFactory dbf = Documen

我正在构建一个应用程序,在这个应用程序中,我需要显示一个设置屏幕,用户可以在主活动的列表视图中查看哪些类别的项目

我正在解析这些类别的XML,因此
PreferenceScreen
是通过编程完成的,所有
CheckBoxPreferences
都构建在一个循环中。代码:

try {
    URL url = new URL("http://www.someurl.com/phone/categories.php");

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(new InputSource(url.openStream()));
    doc.getDocumentElement().normalize();

    NodeList nodeList = doc.getElementsByTagName("category");

    for (int i = 0; i < nodeList.getLength(); i++) {                
        Element category = (Element)nodeList.item(i);

        Node id = category.getElementsByTagName("id").item(0);
        Node title = category.getElementsByTagName("name").item(0);

        CheckBoxPreference togglePref = new CheckBoxPreference(this);
        togglePref.setKey("category_" + id.getChildNodes().item(0).getNodeValue());
        togglePref.setDefaultValue(true);
        togglePref.setTitle(title.getChildNodes().item(0).getNodeValue());
        root.addPreference(togglePref);
    }
} catch(Exception ex) {
    Log.e(this.getClass().getSimpleName(), ex.getMessage());
}
试试看{
URL=新URL(“http://www.someurl.com/phone/categories.php");
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(新的输入源(url.openStream());
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getElementsByTagName(“类别”);
对于(inti=0;i
其中
root
PreferenceScreen
对象

我的问题是,我不仅需要存储一个复选框选项的标题,还需要存储类别的ID,但是
CheckBoxPreference
对象中没有此类属性

我的问题是是否还有其他解决方法,或者我是否应该扩展
CheckBoxPreference
类,并创建一些自定义的
MyCheckBoxPreference
来存储另一个“值”

我的愿景是拥有与普通HTML复选框相似(或相同)的内容-虽然它有一个值,但如果未选中复选框,则不会设置(提交),另一方面,如果选中复选框,则会获得具体值,而不仅仅是真/假

AFAIK
CheckBoxPreference
只有状态checked/unchecked,而没有可以返回的值

我正在考虑将偏好键设置为具体类别的ID,而不是
category\uuu
,然后调用
SharedReferences.getAll()
-我希望只返回选中的
CheckBoxPreferences
,然后通过获取它们的密钥,我应该能够使用类别ID进行操作。。。这是否是一个简单的解决方案和良好的方法

非常感谢您的建议

我的问题是,我不仅需要存储一个复选框选项的标题,还需要存储类别的ID,但CheckBoxPreference对象中没有此类属性

嗯,这就是关键所在

我正在考虑将首选项设置为具体类别的ID而不是类别,然后调用SharedReferences.getAll()-我希望只返回选中的CheckBoxPreferences,然后通过获取它们的键,我应该能够使用类别ID进行操作。。。这是否是一个简单的解决方案和良好的方法


您将获得用户触摸过的所有
CheckBoxPreference
对象,无论它们是选中的还是未选中的。这可能是正确的方法。

好的,我认为键就像是偏好的唯一标识符,而不是它的值。。。但我会尝试一下…@shadyyx:这是首选项唯一标识符。但是,对于布尔状态,除了标识符和是否选中之外,您不需要其他“值”。@Commonware是否可以根据条件更改复选框的状态,而不是用户是否单击复选框?@RainMan:嗯,是吗?@Commonware问题是我想在应用程序内购买时使用checkboxpreference,因此,如果购买失败,请取消选中该框,如果购买成功,请选中该框。但是,无论我做什么,即使购买失败,该框也会被选中。我问了一个问题。任何帮助都将不胜感激。