Как установить переключатель, отмеченный по умолчанию в радиогруппе?
Я создал 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);
Здесь step radioBtn2.setChecked(true);
Причины radioBtn2
всегда проверяются. Это означает, что я не могу снять флажок radioBtn2
другие две кнопки-переключатели (radioBtn1
, radioBtn3
). Я хочу, чтобы RadioGroup
могла проверять только одну радиокнопку одновременно (теперь она может проверять две радиокнопки одновременно).
Как я могу решить эту проблему?
Ответы
Ответ 1
Вы должны проверить радиокнопку в радиогруппе следующим образом:
radiogroup.check(IdOfYourButton)
Конечно, сначала вы должны установить Id для ваших радиокнопок
РЕДАКТИРОВАТЬ: я забыл, radioButton.getId()
работает, спасибо Рамеш
EDIT2:
android:checkedButton="@+id/my_radiobtn"
работает в радиогруппе xml
Ответ 2
В случае для атрибута xml его android:checkedButton
, который проверяет id
RadioButton
.
<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>
Ответ 3
В файле 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>
Ответ 4
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());
Ответ 5
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);
Ответ 6
В коде Коллеги была такая же проблема. Это звучит так, как ваша радиогруппа неправильно настроена с помощью ваших кнопок радио. Именно по этой причине вы можете многократно выбирать радиокнопки. Я пробовал много вещей, наконец, я сделал трюк, который на самом деле ошибочен, но работает нормально.
for ( int i = 0 ; i < myCount ; i++ )
{
if ( i != k )
{
System.out.println ( "i = " + i );
radio1[i].setChecked(false);
}
}
Здесь я устанавливаю один для цикла, который проверяет доступные переключатели и отменяет выбор, кроме нового щелчка. попробуйте.
Ответ 7
Добавьте android:checked = "true"
в вашей активности. Xml
Ответ 8
Это ошибка 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 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);