当选中同一RadioGroup中的另一个时,单选按钮不会取消选中

时间:2014-08-21 22:11:21

标签: android radio-button radio-group

这是:Android dynamically generated radio buttons not unchecking once setChecked programmatically

的副本

然而,在那个问题中,答案并没有解决问题,因为我试图解决问题所添加的所有代码都使问题变得混乱。此外,自那时起,我还在下面应用了几种可能的解决方案。

问题在于,如果我以编程方式检查RadioButton,当我在同一个RadioGroup中选择另一个RadioButton时,它会保持检查状态。

我已经从谷歌搜索了几个可能已经应用但尚未奏效的解决方案,例如:

  
      
  • 使用RadioGroup.Check代替RadioButton.setCheck
  •   
  • 明确指定每个RadioButton的ID
  •   
  • 在检查之前将RadioButton添加到RadioGroup
  •   
  • 在检查其中一个之前,将所有RadioButtons添加到RadioGroup
  •   

尽管如此,当你点击另一个时,RadioButton仍会保持检查状态。

   private void PopulateAccessPoints(List<clsAccessPoint> accessPoints){
        try{
            rg = new RadioGroup(this);
            rlaAccessPoints.addView(rg);
            int i = 0;
            for (clsAccessPoint acp :  accessPoints) {
                i++;
                RadioButton rd = new RadioButton(this);
                rg.addView(rd);
                rd.setId(i);
                rd.setText(acp.ID + ": " + acp.Name);
            }

            rg.check(rg.getChildAt(1).getId());

            } catch (Exception ex) {
                ex.printStackTrace();
        }

注意:应该检查的RadioButton将动态确定,但我已对其进行了硬编码,因为上述内容具有相同的症状并且更简单。

我现在已经花了好几个小时了,所以对这个看似非常简单的问题的任何帮助都会感激不尽!

1 个答案:

答案 0 :(得分:3)

            RadioButton rd = new RadioButton(this);
            rg.addView(rd);
            rd.setId(i);
            rd.setText(acp.ID + ": " + acp.Name);

尝试将此代码移动到这样:

            RadioButton rd = new RadioButton(this);
            rd.setId(i);
            rd.setText(acp.ID + ": " + acp.Name);
            rg.addView(rd);

在将ID添加到组之前设置ID?