Использование @OnCheckedChanged (ButterKnife) с radioGroup дает ошибку в android

Я недавно интегрировал butterknife в свой проект Android, и теперь я пытаюсь использовать аннотацию @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): невозможно совместить аргументы метода @OnCheckedChanged.

Параметр # 1: android.widget.RadioGroup не соответствует параметрам прослушивателя

Параметр №2: int не соответствует параметрам прослушивателя

Методы могут иметь до 2 параметров:

Android.widget.CompoundButton boolean

Они могут быть перечислены в любом порядке, но будут выполняться поиск сверху вниз.

Согласно спецификации, эта аннотация должна использоваться с двумя параметрами: 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; } } }