单选按钮仅被部分检查

单选按钮仅被部分检查

本文介绍了单选按钮仅被部分检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道这听起来很奇怪,所以这里是图片。





它保存正确的值。选择(部分)正确的单选按钮。 OnCheckedChangeListener 中的所有逻辑均正确执行。我完全惊呆了。为什么单选按钮没有完全检查?



我唯一能想到的就是我正在使用 Rx2Firebase

  periodRetriever = FirebaseHelper.getInstance(getContext())。getPeriod()
.defaultIfEmpty(0)
.distinctUntilChanged()
.subscribe(new Consumer< Integer>(){
@Override
public void accept(@NonNull Integer headerType)引发异常{
getRadioViewChecked(headerType) .setChecked(true);
}
});

EDIT1





EDIT2



布局:

 < RadioGroup 
android:id = @ + id / rgPeriod
android:layout_width = match_parent
android:layout_height = wrap_content
android:orientation = horizo​​ntal>

< android.support.v7.widget.AppCompatRadioButton
android:id = @ + id / rbMonth
android:layout_width = wrap_content
android :layout_height = wrap_content
android:checked = false
android:text = @ string / month />

< android.support.v7.widget.AppCompatRadioButton
android:id = @ + id / rbWeek
android:layout_width = wrap_content
android :layout_height = wrap_content
android:checked = false
android:text = @ string / week />

< android.support.v7.widget.AppCompatRadioButton
android:id = @ + id / rb4Weeks
android:layout_width = wrap_content
android :layout_height = wrap_content
android:checked = false
android:text = @ string / four_weeks />


< / RadioGroup>


解决方案

看起来像是动画错误。在ViewPager内的片段上使用CompoundButton时,可绘制状态未正确设置。



对于复选框也是如此,如下所示:。



在调用RadioGroup.check(id)或Checkbox.setChecked(true)之后立即调用jumpDrawablesToCurrentState()似乎可以解决问题(thx @Dalmas)


I know this sound weird so here is the picture.

It hold the correct value. The correct radiobutton is (partially) selected. All logic in the OnCheckedChangeListener is executed correctly. I'm completly stunned. Why is the radio button not fully checked?

Only thing I can think of is that i'm using Rx2Firebase

periodRetriever = FirebaseHelper.getInstance(getContext()).getPeriod()
        .defaultIfEmpty(0)
        .distinctUntilChanged()
        .subscribe(new Consumer<Integer>() {
            @Override
            public void accept(@NonNull Integer headerType) throws Exception {
                getRadioViewChecked(headerType).setChecked(true);
            }
        });

EDIT1

Marcos suggestion I can't see the white tick. This is not the case.

EDIT2

Layout:

<RadioGroup
    android:id="@+id/rgPeriod"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbMonth"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/month" />

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbWeek"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/week" />

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rb4Weeks"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/four_weeks" />


</RadioGroup>
解决方案

Looks like an Animation Bug. When using a CompoundButton on a Fragment inside a ViewPager the drawable state is not set correctly.

This happens also for Checkboxes as seen here: Android Nougat: Why do checkboxes on Fragment have incomplete state when selected programmatically (but look fine on Lollipop).

Calling jumpDrawablesToCurrentState() just after calling RadioGroup.check(id) or Checkbox.setChecked(true) seems to fix the problem (thx @Dalmas)

这篇关于单选按钮仅被部分检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 23:05