Получить значения из нескольких RadioGroups

Я создаю активность, содержащую 7 RadioGroups, каждая из которых содержит 5 RadioButton. Моя проблема в том, что я получаю выбранный индекс только одной RadioGroup (lvl_mon), а остальные 6 возвращают -1, однако они выбраны. Мой код:

lvl_mon = (RadioGroup)findViewById(R.id.lvl_monday);
lvl_tue = (RadioGroup)findViewById(R.id.lvl_tuesday);
lvl_wed = (RadioGroup)findViewById(R.id.lvl_wednesday);
lvl_thu = (RadioGroup)findViewById(R.id.lvl_thursday);
lvl_fri = (RadioGroup)findViewById(R.id.lvl_friday);
lvl_sat = (RadioGroup)findViewById(R.id.lvl_saturday);
lvl_sun = (RadioGroup)findViewById(R.id.lvl_sunday);

int index_mon = lvl_mon.indexOfChild(findViewById(lvl_mon.getCheckedRadioButtonId()));
int index_tue = lvl_tue.indexOfChild(findViewById(lvl_tue.getCheckedRadioButtonId()));
int index_wed = lvl_wed.indexOfChild(findViewById(lvl_wed.getCheckedRadioButtonId()));
int index_thu = lvl_thu.indexOfChild(findViewById(lvl_thu.getCheckedRadioButtonId()));
int index_fri = lvl_fri.indexOfChild(findViewById(lvl_fri.getCheckedRadioButtonId()));
int index_sat = lvl_sat.indexOfChild(findViewById(lvl_sat.getCheckedRadioButtonId()));
int index_sun = lvl_sun.indexOfChild(findViewById(lvl_sun.getCheckedRadioButtonId()));

введите здесь описание изображения


person Shahzeb    schedule 08.09.2014    source источник


Ответы (4)


Если у вас есть кнопки внутри групп переключателей, вы можете сделать следующее:

RadioGroup lvl_mon = (RadioGroup) findViewById(R.id.lvl_monday);
String selected_mon = ((RadioButton) findViewById(lvl_mon .getCheckedRadioButtonId())).getText().toString();
person devmiles.com    schedule 08.09.2014
comment
но мне нужен индекс RadioButton в RadioGroup - person Shahzeb; 08.09.2014
comment
проблема в том, что я получаю индекс из первой радиогруппы, но другие возвращают -1, хотя они выбраны - person Shahzeb; 08.09.2014
comment
убедитесь, что вы используете разные идентификаторы для каждого переключателя - person devmiles.com; 08.09.2014

Я понял проблему, у меня были одинаковые идентификаторы RadioButtons в каждой RadioGroup, поэтому я изменил идентификаторы и очистил проект. Это устранило проблему

person Shahzeb    schedule 08.09.2014

Вы пробовали так

lvl_mon = (RadioGroup)findViewById(R.id.lvl_monday);
RadioButton lvl_mon1;

     lvl_mon.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // TODO Auto-generated method stub

           lvl_mon1= (RadioButton)findViewById(checkedId);

           switch(checkedId){
           case R.id.radio0:
              // do somthings
           break;

           case R.id.radio1:
           .......

          }
        }
    });
person Jamil    schedule 08.09.2014

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

Это может помочь!!

person Jagdish    schedule 08.09.2014
comment
разве это не то же самое, что я делаю? - person Shahzeb; 08.09.2014
comment
Вы хотите получить индекс выбранного переключателя группы переключателей во время выполнения. Правильно? - person Jagdish; 08.09.2014
comment
Попробуйте получить во время выполнения проверенное измененное событие ... а также зарегистрируйте его ... так что вы получите точное представление. Я разрабатываю приложение того же типа и столкнулся с тем же индексом -1. - person Jagdish; 08.09.2014
comment
Я понял проблему. У меня были одинаковые идентификаторы для RadioButtons в каждой RadioGroup. Я изменил идентификатор каждого RadioButton, а также очистил проект. - person Shahzeb; 08.09.2014