如何在一个组中分配动态创建的单选按钮?

时间:2015-01-11 04:59:11

标签: java android android-studio

我有一个生成一系列单选按钮的代码,我想知道如何将它们分配到一个组中,这样如果启用了另一个单选按钮,则不会启用其他单选按钮。

Multiple radio buttons enabled

这是我生成上述单选按钮的代码。

for (int i = 0; i < 20; i++)
{
    RadioButton myRadio = new RadioButton(this);//use array
    myRadio.setId(i);
    final int id_ = myRadio.getId();
    myRadio.setText("button " + id_);
    LinearLayout li = (LinearLayout)findViewById(R.id.buttonlayout);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    li.addView(myRadio, lp);
    btn = (RadioButton) findViewById(id_);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(view.getContext(), "Button clicked index = " + id_, Toast.LENGTH_SHORT).show();
        }
    });
}

btn是在函数外声明的按钮。它也是一个单选按钮

1 个答案:

答案 0 :(得分:0)

试试此代码示例

final RadioButton[] rb = new RadioButton[20];
    RadioGroup rg = new RadioGroup(this); //create the RadioGroup
    rg.setOrientation(RadioGroup.VERTICAL);
    for(int i=0; i<20; i++){
       rb[i]  = new RadioButton(this);
       rg.addView(rb[i]);           
       rb[i].setText(" " + ContactsActivity.phonetype.get(i)
            + "    " + ContactsActivity.phone.get(i));
       rb[i].setId(i + 100);

    }
    ll.addView(rg);//you add the whole RadioGroup to the layout

更新 - 回答您在评论中提到的错误

要解决您的错误,请使用错误中的行号找出产生错误的行。看看你在那里添加什么

检查所有addView调用。 (提示:某处出现该错误的行号。使用它)

要尝试在评论中回答您的问题,您必须遵守这些规则;

  1. 永远不要再添加任何视图。
  2. 当使用View时(例如,您使用了findViewById,请不要在其上使用addView)。 如果要添加视图,请使用带有新视图的addView。
  3. 您可以将一些新视图添加到一个视图中,但不能多次添加该视图。