两个单选按钮在Radio Group中被选中

时间:2014-08-01 07:32:10

标签: android android-radiogroup

enter image description here

在收音机组中选择了两个按钮 我不知道我哪里出错了。请帮帮我。

final RadioGroup rg=new RadioGroup(Survay_MainActivity.this);
rg.clearCheck();
rg.setId(Integer.valueOf(entry1.getKey()));  
Log.v("rg getid", "rg"+rg.getId());
for(int i =0;i<values.size();i++){
    // Create Button
    final RadioButton btn = new RadioButton(Survay_MainActivity.this);
    btn.setId(i);
    btn.setTextColor(Color.parseColor("#000000"));
    btn.setBackgroundColor(Color.TRANSPARENT);
    btn.setGravity(Gravity.LEFT);
    btn.setText(values.get(i));

    rg.addView(btn);
    btn.setLayoutParams(params);
    btn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            JSONObject quesAns = new JSONObject();
            String ans=btn.getText().toString().trim();
            try {
                quesAns.put(String.valueOf(rg.getId()), ans);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jsonarray.put(quesAns);    
            Log.v("jsonarray", "jsonarray"+jsonarray);
        }
    });
}     
views.addView(rg);     

1)我正在循环创建RadioGroup。

2)在for循环中向RadioGroup添加单选按钮

3)当循环结束时,RadioGroup被添加到linerlayout。

5 个答案:

答案 0 :(得分:5)

您只需要为不同的单选按钮更改不同的ID。      gen文件中可能存在一些id冲突。      单选按钮1:android:id =&#34; @ + id / one      单选按钮2:android:id =&#34; @ + id / two&#34;      单选按钮3:android:id =&#34; @ + id / three&#34;

希望这会有所帮助。

答案 1 :(得分:1)

有些事情错位了你必须要做出的改变。

1.按OnClickListener

更改OnCheckChangeListener

2.在添加所有radioGroup后,在radioButtons中添加LinearLayout之前,请检查{{1}}。

答案 2 :(得分:0)

您的问题来自于您手动设置商品的ID

rg.setId(Integer.valueOf(entry1.getKey()));  
btn.setId(i);

Android可自动生成不同的ID。手动设置id可能会给你的无线电组和单选按钮提供相同的ID。 我使用了你的代码并将组设置为ID 3,将无线电设置为0到4 不用说,在我点击ID为3的按钮后,它始终保持打开状态,因为该组具有相同的ID。 因此,请尝试删除ID设置部分,或者,如果您坚持,请确保始终具有不同的ID。

答案 3 :(得分:0)

我遇到了同样的问题。原因是RadioGroup的id与RadioButtons的id相同

答案 4 :(得分:0)

问题在于这一行。你没有发送这段代码所属的地方。当你离开这个范围并返回时,你将创建新的RadioGroup。您应该只有一个RadioGroup,因此RadioButton具有相同的RadioGroup,默认情况下会选择其中一个。为此,您可以在XML中定义RadioGroup并使用它来为其定义变量RadioGroup rg = (RadioGroup) findViewById(R.id.YOURNAME);,或者您可以将RadioGroup定义为实例变量(全局)。

final RadioGroup rg=new RadioGroup(Survay_MainActivity.this);