Android — выбор переключателей не регистрируется

#android

#Android

Вопрос:

Я пытаюсь использовать переключатели, но они не работают. На данный момент у меня есть toast исключительно для отладки, и он никогда не появляется. Кажется, есть разные способы их использования, поэтому, возможно, я просто использую плохой метод. Любой совет о том, что я сделал неправильно, был бы потрясающим.

 final RadioButton rbSDR = (RadioButton) findViewById(R.id.rbSDR);
final RadioButton rbMM = (RadioButton) findViewById(R.id.rbMM);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
//int checkedRadioButtonID = radGrp.getCheckedRadioButtonId();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0, int id) {

   Toast.makeText(getBaseContext(), "Checked",
           Toast.LENGTH_SHORT).show(); 

   switch (id) {
   case -1:
       rbMM.setChecked(false);
       rbSDR.setChecked(false);
     break;
   case R.id.rbSDR:
       rbMM.setChecked(false);
     break;
   case R.id.rbMM:
       rbSDR.setChecked(false);
     break;
   default:
     break;
   }

});
  

Редактировать:
По-видимому, проблема заключалась в том, что у меня была линейная компоновка В группе переключателей. Теперь, чтобы выяснить, как расположить кнопки рядом…

Ответ №1:

идентификатор всегда будет возвращать только -1. Попробуйте следующий отредактированный код,

 final RadioButton rbSDR = (RadioButton) findViewById(R.id.rbSDR);
rbSDR.setId(R.id.rbSDR);
final RadioButton rbMM = (RadioButton) findViewById(R.id.rbMM);
rbMM.setId(R.id.rbMM);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
//int checkedRadioButtonID = radGrp.getCheckedRadioButtonId();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0, int id) {

   Toast.makeText(getBaseContext(), "Checked",
           Toast.LENGTH_SHORT).show(); 

   switch (id) {
   case -1:
       rbMM.setChecked(false);
       rbSDR.setChecked(false);
     break;
   case R.id.rbSDR:
       rbMM.setChecked(false);
     break;
   case R.id.rbMM:
       rbSDR.setChecked(false);
     break;
   default:
     break;
   }

});
  

Ответ №2:

установите для слушателя переключатели вместо группы радио

Ответ №3:

Вместо того, чтобы использовать

 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  

Использование

 radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){
  

Ответ №4:

Чтобы поместить radio buttons рядом, добавьте это в XML properties :

android:orientation="horizontal"