在收音机组中选择了两个按钮 我不知道我哪里出错了。请帮帮我。
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。
答案 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);