将 @OnCheckedChanged (ButterKnife) 与 radioGroup 一起使用会在 android 中出现错误
Using @OnCheckedChanged (ButterKnife) with radioGroup gives error in android
我最近在我的 android 项目中集成了 butterknife,现在我正在尝试为 radiogroup 使用 @OnCheckedChanged 注释。但得到不给回调的错误。那么调用和获取 checkedId 的正确方法是什么,或者这个方法仅适用于单选按钮而不适用于单选组。
@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;
}
}
}
我最近在我的 android 项目中集成了 butterknife,现在我正在尝试为 radiogroup 使用 @OnCheckedChanged 注释。但得到不给回调的错误。那么调用和获取 checkedId 的正确方法是什么,或者这个方法仅适用于单选按钮而不适用于单选组。
@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;
}
}
}