page.title=Radio Buttons
page.tags=radiobutton,radiogroup
@jd:body

<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
  <li><a href="#HandlingEvents">Responding to Click Events</a></li>
</ol>

<h2>Key classes</h2>
<ol>
  <li>{@link android.widget.RadioButton}</li>
  <li>{@link android.widget.RadioGroup}</li>
</ol>
</div>
</div>

<p>Radio buttons allow the user to select one option from a set. You should use radio buttons for
optional sets that are mutually exclusive if you think that the user needs to see all available
options side-by-side. If it's not necessary to show all options side-by-side, use a <a
href="{@docRoot}guide/topics/ui/controls/spinner.html">spinner</a> instead.</p>

<img src="{@docRoot}images/ui/radiobuttons.png" alt="" />

<p>To create each radio button option, create a {@link android.widget.RadioButton} in your layout.
However, because radio buttons are mutually exclusive, you must group them together inside a
{@link android.widget.RadioGroup}. By grouping them together, the system ensures that only one
radio button can be selected at a time.</p>

<h2 id="HandlingEvents">Responding to Click Events</h2>

<p>When the user selects one of the radio buttons, the corresponding {@link
android.widget.RadioButton} object receives an on-click event.</p>

<p>To define the click event handler for a button, add the <code><a
href="/reference/android/R.attr.html#onClick">android:onClick</a></code> attribute to the
<code>&lt;RadioButton&gt;</code> element in your XML
layout. The value for this attribute must be the name of the method you want to call in response
to a click event. The {@link android.app.Activity} hosting the layout must then implement the
corresponding method.</p>

<p>For example, here are a couple {@link android.widget.RadioButton} objects:</p>

<pre>
&lt;?xml version="1.0" encoding="utf-8"?>
&lt;RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    &lt;RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    &lt;RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
&lt;/RadioGroup>
</pre>

<p class="note"><strong>Note:</strong> The {@link android.widget.RadioGroup} is a subclass of
{@link android.widget.LinearLayout} that has a vertical orientation by default.</p>

<p>Within the {@link android.app.Activity} that hosts this layout, the following method handles the
click event for both radio buttons:</p>

<pre>
public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();
    
    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}
</pre>

<p>The method you declare in the {@link android.R.attr#onClick android:onClick} attribute
must have a signature exactly as shown above. Specifically, the method must:</p>
<ul>
  <li>Be public</li>
  <li>Return void</li>
  <li>Define a {@link android.view.View} as its only parameter (this will be the {@link
android.view.View} that was clicked)</li>
</ul>

<p class="note"><strong>Tip:</strong> If you need to change the radio button state
yourself (such as when loading a saved {@link android.preference.CheckBoxPreference}),
use the {@link android.widget.CompoundButton#setChecked(boolean)} or {@link
android.widget.CompoundButton#toggle()} method.</p>
