как установить переключатель по умолчанию в radiogroup с 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 ответов
вы должны проверить RadioButton в radiogroup такой:
radiogroup.check(IdOfYourButton)
конечно, вы должны сначала установить код на свой переключатели
Edit: я забыл, radioButton.getId()
работает также, thx Ramesh
в случае если для 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);