2010年9月5日日曜日

Android 画面にラジオボタンを配置する

画面にラジオボタンを配置し、選択状態が変更したときにメッセージを表示します。

main.xmlレイアウトを開き
ラジオボタンをグループ化するためにレイアウトからRadioGroupを画面にドラッグドロップします。
次にRadioGroupにRadioButtonを配置するのですが、右のアウトラインからRadioGroupを選択し「+」でRadioButtonを追加します。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
android:id="@+id/LinearLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical">

<RadioGroup 
android:id="@+id/RadioGroup01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">

<RadioButton 
android:id="@+id/RadioButton01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="RadioButton01">
</RadioButton>

<RadioButton 
android:id="@+id/RadioButton02" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="RadioButton02">
</RadioButton>

</RadioGroup>

</LinearLayout>


ラジオボタンの選択状態が変化したときの処理を追加します。

まずはMainActivityクラスにandroid.widget.RadioGroup.OnCheckedChangeListenerインターフェースを実装する方法
package my.study.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity implements OnCheckedChangeListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //ラジオグループオブジェクトを取得する
        RadioGroup rdg = (RadioGroup)findViewById(R.id.RadioGroup01);      
        //ラジオボタンにイベントリスナーを設定する
        rdg.setOnCheckedChangeListener(this); 
        //ラジオボタン1を選択状態にする
        RadioButton rdo1 = (RadioButton)findViewById(R.id.RadioButton01);
        rdo1.setChecked(true);
    }

    @Override
    public void onCheckedChanged(RadioGroup rgoup, int id) {
        RadioButton rdo = (RadioButton)findViewById(id);
        Toast.makeText(this, "選択したラジオボタン:" + rdo.getText() , Toast.LENGTH_SHORT).show();
    }
    
}

次は無名クラスを使った方法
package my.study.android;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //ラジオグループオブジェクトを取得する
        RadioGroup rdg = (RadioGroup)findViewById(R.id.RadioGroup01);      
        //ラジオボタンにイベントリスナーを設定する
        rdg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton rdo = (RadioButton)findViewById(checkedId);
                Toast.makeText(MainActivity.this, "選択したラジオボタン:" + rdo.getText() , Toast.LENGTH_SHORT).show();
            }}); 
        //ラジオボタン1を選択状態にする
        RadioButton rdo1 = (RadioButton)findViewById(R.id.RadioButton01);
        rdo1.setChecked(true);
     }    
}

フィールドを利用した方法
package my.study.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //ラジオグループオブジェクトを取得する
        RadioGroup rdg = (RadioGroup)findViewById(R.id.RadioGroup01);      
        //ラジオボタンにイベントリスナーを設定する
        rdg.setOnCheckedChangeListener(RadioGroup01_OnCheckedChangeListener); 
        //ラジオボタン1を選択状態にする
        RadioButton rdo1 = (RadioButton)findViewById(R.id.RadioButton01);
        rdo1.setChecked(true);
    }

    private RadioGroup.OnCheckedChangeListener RadioGroup01_OnCheckedChangeListener =
     new RadioGroup.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton rdo = (RadioButton)findViewById(checkedId);   
                Toast.makeText(MainActivity.this, "選択したラジオボタン:" + rdo.getText() , Toast.LENGTH_SHORT).show(); 
            }
        }; 
}

0 件のコメント: