RadioButton and Switch Android



我有一个开关和一个单选按钮。我希望当我单击并选中切换时,单选按钮将被取消选中,反之亦然。我该怎么做?

我的代码是:

 Switch switchButton = new Switch(this);
 RadioButton radioButton = new RadioButton(this);
 switchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(switchButton.isChecked()){
                radioButton.setChecked(false);
            }
        }
    });

radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(radioButton.isChecked()){
                    switchButton.setChecked(false);
                }
            }
        });

我的代码无法正常工作,你能帮我吗,谢谢!

您不必使用 setOnClickListener(),但需要使用setnCheckedChangeListener()

请参阅以下代码

Switch switchButton = new Switch(this);
RadioButton radioButton = new RadioButton(this);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                radioButton.setChecked(false);
            }
        }
    });
radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                switchButton.setChecked(false);
            }
        }
    });

您必须使用switchButton上的OnCheckedChangeListener() 侦听Switch中的状态更改

 switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                switchButton.setChecked(false);
            }
        }
    });

RadioButton上使用相同的侦听器

您的视图中有按钮吗?如果这样做,则需要使用 findViewById 函数绑定到该视图才能更改按钮。如果只是以编程方式创建一个按钮,它不会出现在视图上。

RadioButton radioButton = (RadioButton) findViewById(R.id.your_radio_bt_id);

如本答案中所述,无法清除单个单选按钮。相反,您需要清除整个单选按钮组。

所以而不是

radioButton.setChecked(false);

你需要使用

((RadioGroup) findViewById(R.id.ID_OF_RADIO_GROUP)).clearCheck();

此外,您尚未在问题中指定哪些内容未按预期工作。 如果这不能解决您的问题,请评论您在尝试触发开关或单选按钮时得到的确切结果。

编辑:另外,您应该使用setOnCheckedChangeListener()而不是setOnClickListener()

最新更新