[Android]ラジオボタンを使う。 | 妄想プログラマのらくがき帳

2013年9月15日日曜日

[Android]ラジオボタンを使う。

ラジオボタンは排他的な選択項目を表します。

基本的な使い方はチェックボックスと同じです。
今回もラジオボタンがチェックされたときにメッセージを表示するサンプルを作ってみました。
まずはActivityにRadioGroupを配置し、子要素であるRadioButtonのonClick属性にオンクリックメソッドを設定します。
※RadioButtonをRadioGroup無しで配置することもできますが、その場合自前で排他処理を実装しなければなりません。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/rdoGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="136dp" >

        <RadioButton
            android:id="@+id/rdoItem1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Item1"
            android:onClick="onRadioButtonClicked" />

        <RadioButton
            android:id="@+id/rdoItem2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Item2"
            android:onClick="onRadioButtonClicked" />

        <RadioButton
            android:id="@+id/rdoItem3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Item3"
            android:onClick="onRadioButtonClicked" />
    </RadioGroup>

</RelativeLayout>

次にActivityでオンクリックメソッドを実装します。
public void onRadioButtonClicked(View view) {
    // ラジオボタンの選択状態を取得
    RadioButton radioButton = (RadioButton) view;
    // getId()でラジオボタンを識別し、ラジオボタンごとの処理を行う
    boolean checked = radioButton.isChecked();
    switch (radioButton.getId()) {
        case R.id.rdoItem1:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目1が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.rdoItem2:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目2が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.rdoItem3:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目3が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
            break;
    }
}
こちらもチェックボックスと同じようにして選択状態とIDを取得できます。

実際に動作させたときにキャプチャがこちら。

Item1を選択後、Item3を選択したときのキャプチャですが、Item3を選択したときにItem1の選択状態が自動で非選択になります。

0 件のコメント:

コメントを投稿