1

在我的应用程序中,我正在动态创建单选按钮,并希望在选中其中一个单选按钮时取消选中所有其他单选按钮。为此,我使用 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);

                            }

请帮助我。即使是实现目标的替代解决方案也将受到欢迎。提前致谢。

4

2 回答 2

2

你创建了很多RadioGroups 里面只有 1 RadioButton。那可能不是你想要的。ARadioGroup需要包含多个RadioButtons,以便您可以在列表中选择一个活动按钮。请参阅下面的代码

// 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();
    }
});
于 2012-11-19T14:33:23.213 回答
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);
    }
于 2012-11-19T14:15:09.887 回答