我有一个开关和一个单选按钮。我希望当我单击并选中切换时,单选按钮将被取消选中,反之亦然。我该怎么做?
我的代码是:
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()