簡體   English   中英

如何在radiogroup中將單選按鈕設置為默認值?

[英]How to set radio button checked as default in radiogroup?

我已經動態創建了RadioGroupRadioButton ,如下所示:

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始終被檢查。 這意味着我無法通過檢查其他兩個單選按鈕( radioBtn1radioBtn3 )取消選中radioBtn2 我想讓RadioGroup只能檢查一個單選按鈕(現在它可以一次檢查兩個單選按鈕)。

我怎么解決這個問題?

你應該像這樣檢查radiogroup中的radiobutton:

radiogroup.check(IdOfYourButton)

當然,您首先必須為您的單選按鈕設置ID

編輯:我忘了, radioButton.getId()適用, radioButton.getId()

EDIT2:

android:checkedButton="@+id/my_radiobtn"

適用於radiogroup xml

如果是xml屬性,則使用android:checkedButton ,它將檢查RadioButtonid

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

在XML文件中設置您的RadioGroupandroid:checkedButton字段,其id為您的默認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);
    }
}

在這里,我設置了一個for循環,它檢查可用的單選按鈕,並取消選擇除新單擊的按鈕之外的每個按鈕。 試試吧。

在activity.xml中添加android:checked = "true"

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM