Как установить переключатель по умолчанию в радиогруппе с 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
может проверять только одну радиокнопку одновременно (теперь он может проверять две радиокнопки одновременно). Как я могу решить эту проблему?
8 ответов
Вы должны проверить радиокнопку в радиогруппе следующим образом:
radiogroup.check(IdOfYourButton)
Конечно, сначала вы должны установить Id для ваших радиокнопок
редактировать: я забыл, radioButton.getId()
работает так же, спасибо Рамешу
В случае атрибута xml его 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);