проверьте переключатель по умолчанию для Android

#java #android #radio-button

Вопрос:

Я пытаюсь проверить первую RadioButton по умолчанию, но вместо этого проверяется последняя кнопка. Я использовал следующее, и он автоматически выбирает последнее RadioButton

               RadioButton rb;
              rb = new RadioButton(context);
                    rb.setText("item"   i);
                    rb.setId(i);
                    rg.addView(rb, layoutParams);
                    rb.setChecked(true);
 

Я также попытался использовать позицию, но результат тот же

 rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
          @Override
          public void onCheckedChanged(RadioGroup group, int checkedId) {

              radioButton = group.findViewById(rg.getCheckedRadioButtonId());
              rb_position = group.indexOfChild(radioButton);
              if (rb_position == 0){
                rb.setChecked(true);
              }
            }
       });
 

Ответ №1:

Я предполагаю, что вы динамически добавляете новые переключатели в группу радиостанций. Вы используете переменную «rb», чтобы продолжать добавлять кнопки в группу (что нормально), однако в своем слушателе вы говорите

 rb.setChecked(true);
 

но переменная «rb» все еще имеет ссылку на последнюю кнопку, добавленную в радиогруппу. Назначьте ссылку на первый переключатель переменной «rb» внутри прослушивателя.

 rb = (RadioButton) rg.getChildAt(0);
rb.setChecked(true);
 

Комментарии:

1. но как мне изменить ссылку на первую кнопку, а также для второго варианта, как поместить слушателя на первую кнопку, учитывая, что размер rb изменяется. Не могли бы вы объяснить это каким-нибудь кодом?

2. Попробуйте добавить rb = rg.getChildAt(0); перед rb.Установлен флажок(true);