как установить переключатель установлен по умолчанию в 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 можно проверить только один переключатель в то время (теперь он может проверить два radiobutton одновременно). Как я могу решить эту проблему?

530   8  

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);

добавить android:checked = "true" в вашей деятельности.xml

Comments

    Ничего не найдено.