RadioButton调用setChecked()不起作用

  1. 千万不要在代码控制RadioButton的状态,如果在代码控制,虽然实际状态变化了,但是UI表现上却没有变化。使用RadioButton你只需监听它的状态变化然后作出相应的操作,如果你想要你的RadioButton拥有CheckBox的特性,请毫不犹豫选择CheckBox,并且为CheckBox设置主题为RadioButton的主题即可。
    然后你就可以在代码调用setChecked方法改变状态了(UI和状态同步)。
<CheckBox
                                android:id="@+id/cb_others"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:drawablePadding="@dimen/margin_small"
                                android:text="代提"
                                android:textColor="@color/black_text"
                                style="@android:style/Widget.DeviceDefault.Light.CompoundButton.RadioButton"/>

====================================
2. 好的,今天才发现,原来drawablestate和check不同步是可以解决的,只是在UI上闪一下,比如:你发现rb_self的drawablestate和check不同步,那么调用refreshdrawablestate()方法是不起作用的,你需要设置一下其他的RadioButton的状态,然后才能正确设置目标RadioButton的状态。设置rb_others.setChecked(true);的方法如下:

rb_self.setChecked(false);
rb_self.setChecked(true);
rb_self.setChecked(false);
rb_others.setChecked(true);

但是以上这种方法会导致onCheckedChanged多次调用。

===============================
3. 为了防止onCheckedChanged被多次调用,最终使用终极简单粗暴的方法解决了。两个图片,表示选中与未选中状态,然后通过逻辑控制这两种状态显示与隐藏。

===============================
4. 换一种思路:可以在方法2中改变radiobutton的状态之前,尝试取消监听,等执行完setChecked方法,等radiobutton的状态和checked值同步之后,再添加监听,或许可行,同学们可以一试。
5. 换一种思路2:用ViewPagerIndicator代替。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值