2010-11-09 55 views
47

我有一個使用單選按鈕的應用程序。此按鈕的默認設置在main.xml中的文件,即:如何在Android中設置單選按鈕

android:id="@+id/rb_sat1E" 
android:checked="true" 

在Java文件中我有:

final RadioButton radio1 = (RadioButton)findViewById(R.id.rb_sat1E); 

我也曾在主要的Java創建了一個「重置」按鈕文件,並可以使用以下代碼重置TextView信息即。

pos1_deg.setText("0.0"); 

但是,如何重置單選按鈕?我會認爲它是這樣的

radio1.setBoolean("TRUE"); 

但是,這根本不起作用。

任何幫助非常感謝。謝謝。

回答

77

對於單選按鈕使用

radio1.setChecked(true); 

它沒有意義的,只有一個單選按鈕。如果你有更多的人,你需要取消選中其他人

radio2.setChecked(false); ... 

如果你的設置只是開/關使用複選框。

+0

這是一個很好的點。謝謝你的答案。 – Entropy1024 2010-11-09 16:43:31

+12

對於其他可能發現自己處於我的位置的讀者:setChecked(true),與setSelected(true)完全不同。確認。 – Rich 2013-07-08 16:02:45

29

或者你也可以做到這一點的XML文件中:使用

RadioGroup中android:checkedButton="id_button_to_check"

單選android:checked="true"

+1

當我檢查xml中的單選按鈕時,我無法在以後取消選中它。這就像是從組 – shift66 2015-10-19 19:05:05

+0

中刪除單選按鈕,對不起,我遲到了,但這是單選按鈕的預期行爲。當你選擇它時,你不能取消選擇它,除了在radiogroup – Aenadon 2016-10-04 11:44:51

+0

中選擇另一個單選按鈕,我們可以通過調用check(-1)或clearCheck()來清除選擇。 – 2018-02-23 04:09:05

77

如果你想這樣做的代碼,您可以致電RadioGroup的支票會員:

radioGroup.check(R.id.radioButtonId); 

這將檢查您指定的按鈕並取消選中其他按鈕。

+2

謝謝:)這對我來說是更好的答案;正是我所期待的。 – kcoppock 2013-04-08 18:24:47

+1

我希望我能更多地讚揚這一點。 – 2013-06-17 05:17:56

+1

radioGroup.check(radioGroup.getChildAt(0).getId()); - 檢查名單上的第一個項目 – somerandomusername 2014-08-07 11:40:47

7

只是爲了澄清這一點:如果我們有一個RadioGroup幾個RadioButtons,需要通過指數來激活一個,意味着:

radioGroup.check(R.id.radioButtonId) 

radioGroup.getChildAt(index)` 

我們可以做到:

radioGroup.check(radioGroup.getChildAt(index).getId()); 
3

如果您已經完成了XML中的設計並想顯示一個該組中的複選框的選中作爲當加載下面的解決方案的頁面可以幫助您

<RadioGroup 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtLastNameSignUp" 
     android:layout_margin="20dp" 
     android:orientation="horizontal" 
     android:id="@+id/radioGroup"> 
<RadioButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="true" 
    android:id="@+id/Male" 
    android:text="Male"/> 
     <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/Female" 
      android:text="Female"/> 
     </RadioGroup> 
-1
btnDisplay.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

      // get selected radio button from radioGroup 
     int selectedId = radioSexGroup.getCheckedRadioButtonId(); 

     // find the radiobutton by returned id 
      radioSexButton = (RadioButton) findViewById(selectedId); 

     Toast.makeText(MyAndroidAppActivity.this, 
      radioSexButton.getText(), Toast.LENGTH_SHORT).show(); 

    } 

}); 
+1

你能解釋爲什麼OP應該使用你的代碼嗎? – Phiter 2016-05-10 11:20:45

0

我有沒有集團和setChecked(true)作品多的單選按鈕,但setChecked(false)不工作。但是,此代碼的工作:

RadioButton switcher = (RadioButton) view.findViewById(R.id.active); 
         switcher.setOnClickListener(new RadioButton.OnClickListener(){ 
          @Override 
          public void onClick(View v) { 
           if(((RadioButton)v).isSelected()){ 
            ((RadioButton)v).setChecked(false); 
            ((RadioButton)v).setSelected(false); 
           } else { 
            ((RadioButton)v).setChecked(true); 
            ((RadioButton)v).setSelected(true); 
           } 
          } 

         }); 
1

很多時候,如果你的單選按鈕都屬於一些radioGroup中再

radioButton.setChecked(真)

將不能正確選擇單選按鈕。所以要解決這個問題,請嘗試使用您的radioGroup。

radioGroup.check(R.id.radioButtonId)

相關問題