Android RadioGroup проверяет более одного RadioButton?

Я использую RadioGroup, добавил RadioButton rdbut к RadioGroup rdgrp, например rdgrp.addView(rdbut).

   for(int j=0;j<3;j++)
   {
         RadioGroup rdgrp = new RadioGroup;
         for(int i=0;i<=10;i++)
         {
             RadioButton rdbut = new RadioButton(this);
             rdbut.setText("RadioButtion"+i);
             rdbut.setId(i);
             rdbut.setTag("somename");
             rdgrp.addView(rdbut);
         }
    }    

приведенный выше код показывает, как я инициализирую радиогруппу и переключатель. после запуска этого кода в эмуляторе/мобильном устройстве я могу одновременно проверять 2 переключателя.

В чем может быть проблема?


person Raju    schedule 25.11.2011    source источник
comment
вы создаете 3 группы из 11 радиокнопок (это нормально?), теперь должны появиться все радиокнопки, где вы можете выбрать 3 радиокнопки одновременно (по одному радио из каждой группы).   -  person Pankaj Kumar    schedule 25.11.2011
comment
как добавить rdgrp в родительское представление. и конструктор RadioGroup тоже странный (кажется опечаткой при копировании).   -  person Adil Soomro    schedule 25.11.2011
comment
В каждой группе рационов я могу выбрать две радиокнопки. это означает 6 радиокнопок, но не более двух в каждой радиогруппе.   -  person Raju    schedule 25.11.2011
comment
@Raju Я думаю, ваша цель - добавить кнопку Radion в группу Radio и использовать для выбора только одну кнопку RadioButton. Пользователь может выбрать ее одновременно из одной группы кнопок Radion. Я прав?   -  person Herry    schedule 25.11.2011


Ответы (3)


Измените свой код следующим образом.

  RadioGroup rdgrp[] = new RadioGroup[3];

  For(int j=0;j<3;j++)
   {
         RadioButton rdbut[] = new RadioButton[10];
         For(int i=0;i<=10;i++)
         {

             rdbut[i].setText("RadioButtion"+i);
             rdbut[i].setId(j*100+i);
             rdbut[i].setTag("somename");
             rdgrp[j].addView(rdbut[i]);
         }
    } 
person Ramesh Akula    schedule 25.11.2011
comment
rdbut[] представляет собой массив RadioButton, и вы не инициализируете его где-либо с экземплярами RadioButton. Вы можете его редактировать. - person Android Killer; 02.07.2013
comment
@Ramesh Akula Можете ли вы сказать мне, в чем проблема с вышеупомянутым подходом, упомянутым в постановке проблемы? Я не понял, что не так в первом случае. - person manish reddy; 03.01.2020

Вы создали три разные группы радио. Вы можете выбрать только один переключатель из одной группы. Таким образом, из трех групп вы можете выбрать три кнопки Но между группами нет взаимосвязи. Вы можете одновременно выбирать радиокнопки из разных групп. В вашем случае вы можете выбрать три кнопки максимум.

Спасибо, Сунил.

person Sunil Kumar Sahoo    schedule 25.11.2011

Используйте что-то вроде этого XML-дизайна в файле пользовательского макета.

   <TableLayout
            android:id="@+id/tbl_layoutchoice"
            style="@style/InfoTableView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip" >

            <RadioGroup
                android:id="@+id/SelectLayout_Group"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
            </RadioGroup>
 </TableLayout>

и для использования этой RadioGroup в методе OnCreate() Activity и findView, как это

 mRadioGroup = (RadioGroup) this.findViewById(R.id.SelectLayout_Group);

а затем используйте приведенный ниже код с требуемым изменением, чтобы добавить радиокнопку в одну радиогруппу. Используйте также ниже требуемую декларацию для динамического создания радиокнопки.

     ArrayList<String> layoutlist = new ArrayList<String>(3);
     int index = -1;
     LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);


   for (String layout : layoutlist) {
        RadioButton r = new RadioButton(this);
        index++;
        r.setText(layout);
        r.setId(index);
        r.setLayoutParams(lp);
        r.setTextAppearance(this, R.style.TextBase);


        mRadioGroup.addView(r);


    }

Поэтому не забудьте добавить свое строковое значение в список макетов перед циклом for. И R.style - это некоторый требуемый стиль для отображения текста в RadioButton.

person Herry    schedule 25.11.2011