【问题标题】:How to uncheck all radio buttons in a radio group, when a radio button is checked in Android?在Android中选中单选按钮时,如何取消选中单选组中的所有单选按钮?
【发布时间】:2016-02-10 17:34:59
【问题描述】:

我以编程方式创建了 5 个单选组,每个组有 4 个单选按钮。问题是,当我首先检查第一个单选组中的单选按钮,然后我检查同一单选组中的第二个单选按钮时,第一个单选按钮仍然处于选中状态。我可以做些什么来使单选组中的所有单选按钮具有正常行为? 这是我的代码:

    radioGroup = new RadioGroup[5];
    answer = new RadioButton[4];
    int i = 0;
    for (Question qn : questions) {
        radioGroup[i] = new RadioGroup(this);
        int j = 0;
        for (Answer an : answers) {
            if (qn.getID() == an.getQuestion_id_answer()) {
                answer[j] = new RadioButton(this);
                answer[j].setText(an.getAnswer());
                radioGroup[i].addView(answer[j]);
                j++;
            }
        }
        linearLayout.addView(radioGroup[i]);
        i++;
    }

谢谢!

【问题讨论】:

    标签: java android loops radio-button android-radiogroup


    【解决方案1】:

    “选中一个属于RadioGroupRadioButton 将取消选中同一组中任何先前选中的RadioButton。”来源:developer.android.com

    如果我理解正确:您说的是同一个 RadioGroup 中的 4 个 RadioButtons 在同一个 RadioGroup 中的另一个按钮被选中时拒绝取消选中?

    如果是这种情况,只需为每个 RadioButton 提供不同的 Resource ID 即可解决问题。

    【讨论】:

    • 是的,你是对的。我从第一个单选组中选中的第一个单选按钮保持选中状态。这发生在每个广播组中。但例如在第二个单选组中,在我选中 2 个单选按钮后,第二个仍处于选中状态。我将radioGroup[i].setId(i);answer[j].setId(j); 设置为具有不同的ID,但没有任何改变。还有其他想法吗?
    • 尝试像answer[j].setId(i + "_" + j);这样设置id,因为如果你有多个单选组,它们里面的按钮会有相同的id。
    • 不起作用。这是错误:setId(int) in View cannot be applied to java.lang.string。我该怎么办?
    • 哦,因为它需要一个 int,而不是一个字符串。所以你可以这样做:answer[j].setId(Integer.parseInt(i + "" + j));
    • 一开始是我的错,因为我在 i 和 j 之间写了“_”,但您可以简单地删除该下划线并使用我上次评论的最新编辑使其成为唯一 id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2023-03-29
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多