在我的应用程序中,我正在动态创建单选按钮,并且在选中其中一个时想要取消选中所有其他单选按钮。为此,我使用RadioGroup.clearCheck()但它根本不起作用。这是代码:
for (int i=0; i<files.length; i++)
{
rbi = new RadioButton(context);
rb1 = new RadioGroup(context);
rb1.addView(rbi);
nameOfFile = files[i].getName();
rbi.setText(nameOfFile);
ll.addView(rb1);
rbi.setOnClickListener(
new RadioButton.OnClickListener()
{
@Override
public void onClick(View v)
{
rb1.clearCheck();
rbi.setChecked(true);
}
请帮助我。即使是实现目标的替代解决方案也会受到欢迎。谢谢。
答案 0 :(得分:2)
你内部只有1 RadioGroup
创建了很多RadioButton
个。这可能不是你想要的。 RadioGroup
需要包含多个RadioButton
,因此您可以在列表中选择一个活动按钮。见下面的代码
// create 1 RadioGroup, add it to the layout
RadioGroup rg = new RadioGroup(context);
ll.addView(rg);
// add several RadioButtons to the RadioGroup
for (int i=0; i < files.length; i++) {
String nameOfFile = files[i].getName();
RadioButton rb = new RadioButton(context);
rb.setId(i); // assign an id
rb.setText(nameOfFile);
rg.addView(rb); // add to group
}
// do something when user checks a button
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
// user selected files[checkedId].getName();
}
});
答案 1 :(得分:1)
您是否尝试过(使用System.out.println(“test”);)或其他东西,如果它甚至进入清算部分?会先测试一下。 这就是zapl的意思
rb1.setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup rb1,
int checkedId) {
Log.v("Selected", "New radio item selected: " + checkedId);
}
});
如果有效,那么你可以试试这个:
if (rbi.isChecked()){
rb1.clearCheck();
rbi.setChecked(true);
}