RadioGroup.clearCheck()在动态创建的单选按钮的情况下不起作用

时间:2012-11-19 13:44:50

标签: android onclick radio-button

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

                            }

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

2 个答案:

答案 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);
    }