2012-02-07 123 views
104

我已經創建RadioGroupRadioButton動態如下如何設置單選按鈕選中爲默認RadioGroup中與Android

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總是檢查。這意味着我不能通過選中其他兩個單選按鈕(radioBtn1,radioBtn3)來取消選中radioBtn2。我想讓RadioGroup一次只能檢查一個單選按鈕(現在可以一次檢查兩個單選按鈕)。我怎麼解決這個問題?

+0

有沒有你需要的動態??? – 2012-02-07 11:56:07

回答

167

你應該檢查單選按鈕在這樣的RadioGroup中:

radiogroup.check(IdOfYourButton)

當然你首先要一個ID爲您的單選按鈕

編輯:我忘了,radioButton.getId()工作爲好, thx Ramesh

+32

或者你不想識別你的'RadioButton'並且你知道你可以使用的索引**((RadioButton)radioGroup.getChildAt(INDEX))。setChecked(true); ** – 2013-04-29 12:32:58

+16

你不應該那樣做。這將導致此問題中描述的「setChecked」問題。當然,有些方法可以做到這一點,而無需使用按鈕的ID,但請不要使用'setChecked()' 一種方法是'radiogroup.check(((RadioButton)radioGroup。getChildAt(INDEX)).getId())'或者類似的東西 – Sprigg 2013-04-29 13:05:02

+0

好的,不要忘記將單選按鈕添加到單選按鈕組_before_ calling group.check(button.getId()) – tom 2016-05-02 14:23:17

18
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()); 
4

在我的同事的代碼中有同樣的問題。這聽起來像你的電臺組沒有正確設置你的電臺按鈕。這就是您可以多選單選按鈕的原因。我嘗試了很多東西,最後我做了一個實際上錯誤的技巧,但是工作正常。

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

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

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

重要的是在所有單選按鈕添加到收音機組後,使用'setChecked()'。然後,'radioGroup.check(radioBtn2.getId())'不是必需的 – 2014-03-27 20:34:20

93

在情況下XML屬性其android:checkedButton它接受RadioButtonid進行檢查。

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

在XML文件中設置的android:checkedButton場在RadioGroup,用默認RadioButton的ID:

<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> 
0

這是RadioGroup中

RadioButton radioBtn2 = new RadioButton(context); 

radioBtn2的錯誤沒有viewId,並生成ViewId在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); 
0

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

相關問題