android 中如何获取radiogroup 中那个radiobutton被选择

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 中如何获取radiogroup 中那个radiobutton被选择相关的知识,希望对你有一定的参考价值。

XML文件中添加了RadioGroup,然后想在代码中,动态添加RadioButton,该怎样实现? <LinearLayout android:id="@+id/childlayout"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical">

<RadioGroup android:id="@+id/radioGroup1"

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:orientation="vertical">

</RadioGroup>

</LinearLayout>
复制代码现在,我想用代码动态添加RadioButton,代码是不是应该这样写
RadioButton rb= new RadioButton(this);

RadioGroup radiogroup=(RadioGroup)this.findViewById(R.id.radioGroup1);

radiogroup.addView(rb);
复制代码
但是,我写了好像报错的

两个RadioButton要写在同一个组RadioGroup下面这样就可以了...xml文件如下:
<RadioGroup android:id="@+id/rg_sex" android:layout_width="fill_parent"
android:orientation="horizontal" android:layout_height="wrap_content">
<RadioButton android:layout_width="wrap_content"
android:text="@string/person_man" android:id="@id/+rb_person_man"
android:layout_height="wrap_content" android:checked="true" />
<RadioButton android:layout_width="wrap_content"
android:text="@string/person_woman" android:id="@id/+rb_person_woman"
android:layout_height="wrap_content" />
</RadioGroup>
java代码如下:
private RadioGroup rg_sex ;
...
rg_sex = (RadioGroup)findViewById(R.id.rg_sex);
rg_sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
switch (checkedId)
case R.id.rb_person_man:
System.out.println("男");
break;
case R.id.rb_person_woman:
System.out.println("女");
break ;
default:
break;


);
9月
参考技术A 这儿是我写的一小段代码,要想知道radiogroup 中那个radiobutton被选择,需要设置监听:

RadioGroup radiogroup = (RadioGroup) this.findViewById(R.id.radioGroup);
RadioButton rb = new RadioButton(this);
rb.setId(0);
RadioButton rb1 = new RadioButton(this);
rb.setId(1);
RadioButton rb2 = new RadioButton(this);
rb.setId(2);
RadioButton rb3 = new RadioButton(this);
rb.setId(3);

radiogroup.addView(rb);
radiogroup.addView(rb1);
radiogroup.addView(rb2);
radiogroup.addView(rb3);

radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
Toast.makeText(RadiaoGroupTester.this,
"The ID is: " + checkedId, Toast.LENGTH_LONG).show();

);
参考技术B 看文档,找单独属于RadioGroup对象的方法、而不是继承下来的方法,这个问题挺简单的。建议自己弄清楚、学会看文档。
http://zhidao.baidu.com/question/199039524.html 看看这个,我比较懒。。没试过。追问

行,那我再看看API,如果还有问题再请教你,你的QQ多少啊

追答

124863950

本回答被提问者采纳

android的radiogroup为啥选择两个

  项目中遇到多个RadioGroup中单选RadioButton ,设置了默认选中第一个 . 然后就 能选中两个RadioButton . . ..

  我开始这样给设置默认选中一个的:

  for (int j = 0; j < newList.get(position).getList().size(); j++)
  RadioButton radioButton = new RadioButton(context);
  radioButton.setTextSize(9);

  radioButton.setText(newList.get(position).getList().get(j)
  .get("dishname").toString());
  radioButton.setTag(newList.get(position).getList().get(j)
  .get("dishid").toString());
  radioGroup.addView(radioButton, j);

  if (j==0)
  radioButton.setCheck(true);
  
  

  就是中给radioButton设置为选中.. .

  网上查找了下类似的情况 如 这篇文章 ,都没有解决我的问题.

  最后研究了下 android 官方Api 和部分 RadioGroup的源代码 后发现. 其实很简单

  我们不需要设置RadioButton的默认选中, 这样会使RadioButton一直处于选中状态.

  我们应该给RadioGroup 设置选中的RadioButton ,也就是说

  把 if (j==0)
  radioButton.setCheck(true);
  

  更改为

  if (j==0)
  radioGroup.check(radioButton.getId());
  

  轻松搞定.. 哎呦了个去,官方Api和源码是个好东西啊.
参考技术A 两个radiogroup,可以选择两个分类。

radiogroup是控制单选的,每个radiogroup包含多个radiobutton,但是只能有一个是选中状态。
多个分类,需要设置多个radiogroup。
参考技术B 你是写在list上面吧

以上是关于android 中如何获取radiogroup 中那个radiobutton被选择的主要内容,如果未能解决你的问题,请参考以下文章

Android如何动态生成Radio和RadioGroup

获取 Android 中 RadioGroup 中的 RadioButtons 数组

android开发中 关于radiogroup

Android 谁有动态添加多个RadioGroup 并获取所有RadioGroup被选中的值的方法?

android如何实现代码控制RadioGroup中某一个按钮选中

android如何实现代码控制RadioGroup中某一个按钮选中