Làm cách nào để đặt nút radio được chọn làm mặc định trong radiogroup?


132

Tôi đã tạo RadioGroupRadioButtonđộng như sau:

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

Ở đây bước radioBtn2.setChecked(true);nguyên nhân radioBtn2luôn được kiểm tra. Điều đó có nghĩa là tôi không thể bỏ chọn radioBtn2bằng cách kiểm tra hai nút radio khác ( radioBtn1, radioBtn3). Tôi muốn làm cho nó chỉ RadioGroupcó thể kiểm tra một nút radio mỗi lần (Bây giờ nó có thể kiểm tra hai nút radio mỗi lần).

Làm thế nào tôi có thể giải quyết vấn đề này?


Có cần bạn năng động không ???
vk hooda

Câu trả lời:


217

bạn nên kiểm tra radiobutton trong radiogroup như thế này:

radiogroup.check(IdOfYourButton)

Tất nhiên trước tiên bạn phải đặt Id cho radiobutton của bạn

EDIT: tôi quên, cũng radioButton.getId()hoạt động, thx Ramesh

EDIT2:

android:checkedButton="@+id/my_radiobtn"

hoạt động trong radiogroup xml


39
hoặc nếu bạn không muốn id của bạn RadioButtonvà bạn biết chỉ mục bạn có thể sử dụng ((RadioButton) radiogroup.getChildAt (INDEX)). setChecked (true);
Ahmad Kayyali

17
Bạn không nên làm điều đó. Điều đó sẽ gây ra vấn đề "setChecked" được mô tả trong câu hỏi này. Tất nhiên, có nhiều cách để làm điều đó mà không cần id của các nút của bạn, nhưng vui lòng không sử dụng setChecked() Một cách sẽ radiogroup.check(((RadioButton)radioGroup.getChildAt(INDEX)).getId())hoặc một cái gì đó tương tự
Sprigg

1
tốt để không quên thêm nút radio vào nhóm nút radio trước khi gọi nhóm.check (button.getId ())
tom

1
Tôi đã phải làm theo cách này: radioGroup.Check(radioGroup.GetChildAt(0).Id);cho người dùng Xamarin.Android
Mario Galván

112

Trong trường hợp cho thuộc tính xml của nó android:checkedButtonmà mất idcủa RadioButtonđể được kiểm tra.

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

50

Trong tệp XML, đặt android:checkedButtontrường trong của bạn RadioGroup, với id mặc định của bạn 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>

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

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

Điều quan trọng là sử dụng setChecked()sau khi tất cả các nút radio đã được thêm vào nhóm radio. Sau đó, radioGroup.check(radioBtn2.getId())không phải là cần thiết
Hartmut Pfitzinger

3

Có một vấn đề tương tự trong mã của đồng nghiệp của tôi. Âm thanh này vì Nhóm Radio của bạn không được đặt đúng với các Nút Radio. Đây là lý do bạn có thể chọn nhiều nút radio. Tôi đã thử nhiều thứ, cuối cùng tôi đã thực hiện một mẹo thực sự sai, nhưng hoạt động tốt.

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

Ở đây tôi đặt một vòng lặp for, kiểm tra các nút radio có sẵn và bỏ chọn từng nút trừ nút mới được nhấp. thử nó.



0

Đó là một lỗi của Radiogroup

RadioButton radioBtn2 = new RadioButton(context);

radioBtn2 không có viewId và createdViewId nằm trong 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);
    }
}

vì vậy, đầu tiên radiogroup.addView (radioBtn2), sau đó là radioBtn2.setChecked (true);

Như thế này:

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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.