私は最近、バターナイフを私のAndroidプロジェクトに統合しました、そして今はradiogroupに@OnCheckedChangedアノテーションを使用しようとしていますが、コールバックを与えないというエラーが発生しています。または、これはラジオボタン専用であり、ラジオグループ用ではありません。
@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ブール値
これらは任意の順序でリストできますが、上から下へ検索されます。ckquote
仕様によれば、この注釈はCompoundButton
とboolean
の2つのパラメーターで使用する必要があるため、このリスナーを本当に使用する場合は、次のように変更する必要があります。
@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;
}
}
}