使用@OnCheckedChanged(ButterKnife)与radioGroup中给出了错误的Android
我最近整合butterknife在我的Android项目,现在我想使用@OnCheckedChanged标注为RadioGroup中。但得到的不给回调错误。那么,什么是打电话,并得到checkedId正确的方法或这一个,而不是为单选按钮的RadioGroup中。使用@OnCheckedChanged(ButterKnife)与radioGroup中给出了错误的Android
@OnCheckedChanged(R.id.gendergroupid)
void onGenderSelected(RadioGroup group, int checkedId){
switch(checkedId){
case R.id.maleid:
maleid.setEnabled(true);
maleid.setChecked(true);
break;
case R.id.femaleid:
femaleid.setEnabled(true);
femaleid.setChecked(true);
break;
case R.id.bothid:
bothid.setEnabled(true);
bothid.setChecked(true);
break;
}
}
给我的错误
BloError:(89, 10) error: Unable to match @OnCheckedChanged method arguments.
参数#1:android.widget.RadioGroup 没有匹配的侦听器参数
参数#2:诚信 没有匹配的侦听器参数
方法可能有多达2参数(一个或多个):
android.widget.CompoundButton 布尔
这些可以以任意顺序列出,但将被搜索的从顶部到bottom.ckquote
根据本说明书中,这个注释需要与2个参数被使用,一个CompoundButton
和boolean
,所以如果你真的想用这个监听器,你必须改变这样的:
@OnCheckedChanged(R.id.gendergroupid)
void onGenderSelected(CompoundButton button, boolean checked) {
//do your stuff.
}
我想在你的情况下,该监听器不工作,所以你可以像使用另一种实现方式:
@OnClick({R.id.radio_1, R.id.radio_2})
public void onRadioButtonClicked(RadioButton radioButton) {
// Is the button now checked?
boolean checked = radioButton.isChecked();
// Check which radio button was clicked
switch (radioButton.getId()) {
case R.id.radio_1:
if (checked) {
// 1 clicked
}
break;
case R.id.radio_2:
if (checked) {
// 2 clicked
}
break;
}
}
这个工作对我来说
@OnCheckedChanged({R.id.radio_button1, R.id.radio_button2})
public void onRadioButtonCheckChanged(CompoundButton button, boolean checked) {
if(checked) {
switch (button.getId()) {
case R.id.radio_button1:
// do stuff
break;
case R.id.radio_button2:
// do stuff
break;
}
}
}
@ vuhung3990你可能不得不删除onClick实现,所以它只会触发一次 –
hi @Seph Remotigue,这是我的错误,如果radiogroup有2个单选按钮,它会触发1通知按钮1检查,1通知按钮2取消选中 但你有一个条件'checked'只会触发1次,你是对的 – vuhung3990
尝试使用第一种方法:java.lang.ClassCastException:android.widget.RadioGroup不能转换到android.widget.CompoundButton –
一个CompoundButton是单按钮,而不是一组像RadioGroup中。 –