我正在创建一个动态获取评级表单的应用程序。但是当我实现此代码时,无线电组会选择2个选项(单选按钮)。我想以单选按钮的形式进行评级,用户只能选择1个单选按钮。检查我的代码:
for(int i=0;i<count;i++)
{
LinearLayout lay_hori=new LinearLayout(this);
lay_hori.setOrientation(LinearLayout.HORIZONTAL);
TextView optionText=new TextView(this);
optionText.setText(current_ques.option_text[i]);
optionText.setTextColor(Color.BLACK);
optionText.setWidth(110);
rg_rating[i]=new RadioGroup(this); //radio group
rg_rating[i].setMinimumHeight(30);
rg_rating[i].setId(i);
rg_rating[i].setOrientation(RadioGroup.HORIZONTAL);
for(int j=0;j<4;j++)
{
rb_rating[j]=new RadioButton(this); //radio buttons
rb_rating[j].setId(j);
rg_rating[i].addView(rb_rating[j]);
Log.i("rg_rating[i]", ""+rg_rating[i]);
Log.i("rb_rating[j]",""+ rb_rating[j]);
}
Log.i("rg_rating[i]Child", ""+rg_rating[i].getChildCount()); //it returns that each radio group has 4 child,correct
rg_rating[i].setOnCheckedChangeListener(checkRadioGroup);
lay_hori.addView(optionText);
lay_hori.addView(rg_rating[i]);
layout_main.addView(lay_hori);
}
但是在收听组中的运行时,单选按钮选择2个选项而不是1
答案 0 :(得分:0)
我觉得在一组Radio Group中添加一个Radio Buttons数组并不是一个好主意。
我没有机会测试您的代码,但您可以尝试以下代码吗?
我刚刚停止使用一组Radio Buttons,因为最终你只在j
循环内的无线电组中添加了一个元素。
请更正您可能遇到的任何错误。
for(int i=0;i<count;i++)
{
LinearLayout lay_hori=new LinearLayout(this);
lay_hori.setOrientation(LinearLayout.HORIZONTAL);
TextView optionText=new TextView(this);
optionText.setText(current_ques.option_text[i]);
optionText.setTextColor(Color.BLACK);
optionText.setWidth(110);
rg_rating[i]=new RadioGroup(this); //radio group
rg_rating[i].setMinimumHeight(30);
rg_rating[i].setId(i);
rg_rating[i].setOrientation(RadioGroup.HORIZONTAL);
for(int j=0;j<4;j++)
{
rb_rating=new RadioButton(this); //radio buttons
rb_rating.setId(j);
rg_rating[i].addView(rb_rating);
Log.i("rg_rating[i]", ""+rg_rating[i]);
Log.i("rb_rating[j]",""+ rb_rating.getId());
}
Log.i("rg_rating[i]Child", ""+rg_rating[i].getChildCount()); //it returns that each radio group has 4 child,correct
rg_rating[i].setOnCheckedChangeListener(checkRadioGroup);
lay_hori.addView(optionText);
lay_hori.addView(rg_rating[i]);
layout_main.addView(lay_hori);
}