Android单选按钮OnCheckedChangeListener未按预期工作

时间:2017-12-07 13:02:52

标签: android radio-button

我在项目的布局中添加了一个单选按钮组,在这个布局的片段上我做了一个监听器(我使用绑定)。 “radioDen”是我的单选按钮组名称:

mBinding.radioDen.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                switch(checkedId) {
                    case R.id.radio_den_circle:
                            mBinding.setDiameterVisibility(true);
                            mBinding.setHeightVisibility(false);
                            mBinding.setWidthVisibility(false);
                        break;
                    case R.id.radio_den_none:
                            mBinding.setDiameterVisibility(false);
                            mBinding.setHeightVisibility(false);
                            mBinding.setWidthVisibility(false);
                        break;
                    case R.id.radio_den_rectangle:
                            mBinding.setDiameterVisibility(false);
                            mBinding.setHeightVisibility(true);
                            mBinding.setWidthVisibility(true);
                        break;                    
                }
            }
        }); 

但是当我选择其中一个单选按钮时 - 项目会掉落,即使它听到了正确的地方。当我查看单选按钮-android开发人员时,我发现我必须调用活动

public void onRadioButtonClicked(View view) {
        } 

所以我只是在没有任何代码的情况下添加它,现在它不会再出现了,它会像以前一样继续传播到片段中的监听器。

这个问题是什么原因造成的?这是Android的错误吗?你知道另一个解决方案吗?这样离开它真是荒谬......

我现在检查了一下,我从主要活动中删除了该功能,但我确实收到了致命错误:

  

致命的例外:主要

     

java.lang.IllegalStateException:无法在父级或祖先语句中找到onRadioButtonClicked(View)方法。在视图类android.support.v7.widget.AppCompatRadioButton上定义的android:onClick属性,其id为'radio_den_rectangle'“

1 个答案:

答案 0 :(得分:0)

@Lakshay你帮我找到了答案, 问题是在XML中我有OnClick引用:

<RadioButton android:id="@+id/radio_den_circle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/den_circle"
                    android:onClick="onRadioButtonClicked"
                    android:padding="5dp"
                    android:layout_marginEnd="10dp"
                    android:textSize="18dp"
                    android:buttonTint="?attr/colorAccent"/>

我刚删除它,它也可以正常工作!

非常感谢!!