Android开发—RadioGroup中RadioButton默认选中问题

前言

我们知道,当一个RadioGroup(其实只要在同一个父布局)中有若干个RadioButton时,RadioButton之间存在着互斥关系,也就是说只能选中一个RadioButton。但是如果我们需要默认选中某个RadioButton该如何处理呢? 
解决方法并不限制RadioButton是动态生成还是xml文件中写死。

我是坑,你一定跳过

当我接到要求默认选中某个RadioButton时,我轻蔑一笑,一个属性轻松解决。于是乎我华丽丽的跳进了下面的坑(相信你也这么跳进来的)。 
我的项目要求我动态生成RadioButton,所以我直接在生成RadioButton时,判断某个条件是否成立,然后选中目标RadioButton。

for (int i = 0; i < 4; i++) {

    //选项点击监听方便举例,我这里只是简单的生成RadioButton
    RadioButton radioButton = new RadioButton(this);
    radioButton.setText(i + "");
    //然后判断是否需要默认选中
    ……
    //开始跳坑
    radioButton.setChecked(true);

    radioGroup.addView(radioButton, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

我没有说错吧,相信一上来大家都是通过setChecked这个方法去设置默认选中(如果xml文件中写死RadioButton的哥们,一定是配置属性checked=”true”)。 
但是当我们运行的时候懵逼了,默认是被选中了,但是当我们修改选项的时候,发现这个默认选中的RadioButton竟然不会被取消选中。这就有点斯巴达了。 
有个最容易想到的思路就是我们去遍历所有的RadioButton,然后对你点击的radioButton.setChecked(true),其余的radioButton.setChecked(false)。但是这么勤勉的做法,怠惰的我不愿意这么做啊! 
怠惰怠惰怠惰!!该怎么解决呢?墨迹了这么久,马上出来解决方法。

我是出坑的方法

没有去问谷哥,度娘就找到了一个解决方法。原来需要给每个RadioButton设置一个id(xml定义的RadioButton自然会有,代码生成的可以直接调用radioButton.setId()方法),然后默认选中的时候直接利用RadioGroup的radioGroup.check(RadioButton的id)来选中默认按钮。

for (int i = 0; i < 4; i++) {
    RadioButton radioButton = new RadioButton(this);
    radioButton.setText(i + "");
    //////给每个RadioButton设置Id
    radioButton.setId(i);

    radioGroup.addView(radioButton, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
}
//假如需要默认选中第一个按钮
radioGroup.check(0);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

后记

哪有什么后记,又不是写小说,我只是来把解决方法记录下来,省的下次跳坑找不到解决方法。如果有帮到你,有空就给个赞或者回复,没空直接右上角我也不介意。(*  ̄3)(ε ̄ *)么么哒。

猜你喜欢

转载自blog.csdn.net/u010112268/article/details/80033321