这是: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将动态确定,但我已对其进行了硬编码,因为上述内容具有相同的症状并且更简单。
我现在已经花了好几个小时了,所以对这个看似非常简单的问题的任何帮助都会感激不尽!
答案 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?