2

在此处输入图像描述

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

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。

4

5 回答 5

6

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

希望这会有所帮助。

于 2015-06-10T14:25:35.133 回答
2

有些东西放错了地方,你必须做出这些改变。

1.改变你OnClickListenerOnCheckChangeListener

radioGroup2.在添加所有内容之后radioButtons和添加之前清除检查您的内容LinearLayout

于 2014-08-01T07:57:26.767 回答
1

您的问题来自您手动为项目设置 id 的事实

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

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

于 2014-08-01T07:58:29.103 回答
0

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

final RadioGroup rg=new RadioGroup(Survay_MainActivity.this);
于 2017-04-08T07:23:58.227 回答
0

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

于 2017-01-18T03:58:26.743 回答