【问题标题】:Android - How to set a value for CheckBoxPreference? Or?Android - 如何为 CheckBoxPreference 设置值?或者?
【发布时间】:2011-04-19 21:10:50
【问题描述】:

我正在构建一个应用程序,当用户可以检查哪些项目将显示在主要活动的列表视图中时,我需要在其中显示设置屏幕。

我正在为这些类别解析 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());
}

其中rootPreferenceScreen 对象。

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

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

我的愿景是将一些类似的(或相同)作为常见的html复选框 - 当它没有设置这个值(提交)如果未选中复选框,并且在选中检查时,请在此时获取混凝土值而不是刚刚检查真/假...

AFAIK CheckBoxPreference 只有状态已检查/未检查,而没有可以返回的值。

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

非常感谢任何正确的建议!!!

【问题讨论】:

    标签: android android-preferences checkboxpreference


    【解决方案1】:

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

    恕我直言,这就是钥匙的用途。

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

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

    【讨论】:

    • 好吧,我还以为key就像一个偏好唯一标识符,而不是值……不过我试试看……
    • @shadyyx:这是首选项的唯一标识符。但是,对于布尔状态,除了标识符以及是否检查它之外,您不需要其他“值”。
    • @CommonsWare 是否可以根据条件更改复选框的状态,而不是用户是否单击它?
    • @RainMan:嗯,你是mean setChecked()吗?
    • @CommonsWare 问题是我想使用 checkboxpreference 进行应用内购买,因此如果购买失败,请取消选中该框,如果成功则选中该框。但是,无论我做什么,即使购买失败,该框也会被选中。我问了一个问题here。任何帮助将不胜感激。
    猜你喜欢
    • 2016-01-23
    • 2011-04-23
    • 1970-01-01
    • 2014-11-18
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多