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

Я создал RadioGroup и RadioButton динамически следующим образом:

 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioBtn2.setChecked(true); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); 

Здесь шаг radioBtn2.setChecked(true); Вызывает radioBtn2 всегда проверяемый. Это означает, что я не могу снять флажок radioBtn2 , проверив другие два переключателя ( radioBtn1 , radioBtn3 ). Я хочу, чтобы RadioGroup могла проверять только один переключатель за один раз (теперь он может проверять сразу два радиобарабана). Как я могу решить эту проблему?

Solutions Collecting From Web of "Как установить радиокнопку по умолчанию в радиогруппе с Android"

Вы должны проверить радиообъект в радиогруппе следующим образом:

radiogroup.check(IdOfYourButton)

Конечно, сначала вам нужно установить идентификатор на ваши радиокнопки

Edit: я забыл, radioButton.getId() работает также, thx Ramesh

В случае, если для атрибута xml используется его android:checkedButton который android:checkedButton id RadioButton .

 <RadioGroup ... ... android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked" ... >....</RadioGroup> 

В файле XML установите поле android:checkedButton в вашей RadioGroup с идентификатором вашего RadioButton умолчанию:

 <RadioGroup .... android:checkedButton="@+id/button_1"> <RadioButton android:id="@+id/button_1" ...../> <RadioButton android:id="@+id/button_2" ...../> <RadioButton android:id="@+id/button_3" ...../> </RadioGroup> 
  RadioGroup radioGroup = new RadioGroup(WvActivity.this); RadioButton radioBtn1 = new RadioButton(this); RadioButton radioBtn2 = new RadioButton(this); RadioButton radioBtn3 = new RadioButton(this); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioGroup.check(radioBtn2.getId()); 
 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioBtn2.setChecked(true); 

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

 for ( int i = 0 ; i < myCount ; i++ ) { if ( i != k ) { System.out.println ( "i = " + i ); radio1[i].setChecked(false); } } 

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

Это ошибка RadioGroup

 RadioButton radioBtn2 = new RadioButton(context); 

RadioBtn2 без viewId, а generateViewId – в onChildViewAdded ()

 public void onChildViewAdded(View parent, View child) { if (parent == RadioGroup.this && child instanceof RadioButton) { int id = child.getId(); // generates an id if it's missing if (id == View.NO_ID) { id = View.generateViewId(); child.setId(id); } ((RadioButton) child).setOnCheckedChangeWidgetListener( mChildOnCheckedChangeListener); } if (mOnHierarchyChangeListener != null) { mOnHierarchyChangeListener.onChildViewAdded(parent, child); } } 

Так что сначала radioGroup.addView (radioBtn2), затем radioBtn2.setChecked (true);

Как это:

 RadioGroup radioGroup = new RadioGroup(context); RadioButton radioBtn1 = new RadioButton(context); RadioButton radioBtn2 = new RadioButton(context); RadioButton radioBtn3 = new RadioButton(context); radioBtn1.setText("Less"); radioBtn2.setText("Normal"); radioBtn3.setText("More"); radioGroup.addView(radioBtn1); radioGroup.addView(radioBtn2); radioGroup.addView(radioBtn3); radioBtn2.setChecked(true);