jam*_*rce 5 android android-radiogroup android-radiobutton
当我单击同一 RadioGroup 中的其他 RadioButton 时,我无法取消选中以下动态生成的 RadioButton。
我什至诉诸于编写自己的处理程序来清除RadioGroup(如下),并尝试了另一个使所有RadioButtons .setChecked(false)的处理程序,但这仍然没有清除我在PopulateAccessPoints中设置检查的RadioButton。
有任何想法吗?
RelativeLayout rlaAccessPoints;
RadioGroup rg;
public void onRadioButtonClicked(View view) {
// Is the button now checked?
RadioButton rd = (RadioButton)view;
rg.clearCheck();
rd.setChecked(true);
}
private void PopulateAccessPoints(List<clsAccessPoint> accessPoints){
rg = new RadioGroup(this);
for (clsAccessPoint acp : accessPoints) {
RadioButton rd = new RadioButton(this);
rd.setText(acp.ID + ": " + acp.Name);
rd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onRadioButtonClicked(v);
}
});
rg.addView(rd);
}
rlaAccessPoints.addView(rg);
for (int i = 0; i <= rg.getChildCount() - 1; i++){
RadioButton rd = new RadioButton(this);
rd = (RadioButton)rg.getChildAt(i);
String rdText = rd.getText().toString();
int colonPos = rdText.indexOf(":");
rdText = rdText.substring(0, colonPos).toString();
if (Settings.AccessPointID.equals(rdText)){
//rg.check(i);
rd.setChecked(true);
}
}
Run Code Online (Sandbox Code Playgroud)
}
编辑:我在下面发布了一个答案,其中包含更简洁的代码;请看看那个。
问题是你做了两次事情。如果您已经有一个处理切换和取消选择其他选项的单选组。您不能单独操作单选按钮。
请阅读 RadioGroup 文档并实现适当的侦听器
RadioButton rd = new RadioButton(this); rd = (RadioButton)rg.getChildAt(i);
这是没有意义的,首先您创建一个按钮,然后将其重新分配给 RG 的子按钮。
RadioButton rd = (RadioButton)rg.getChildAt(i);
Run Code Online (Sandbox Code Playgroud)
应该是正确的形式。
您应该在无线电组上实现此侦听器:http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html
忘记这部分
rd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onRadioButtonClicked(v);
}
});
Run Code Online (Sandbox Code Playgroud)