2012年05月30日

ラジオボタンが押さた時のイベントを取得


前回はレイアウトまたあアクティビティにラジオボタンを配置しました
ラジオボタンを作成する
今回は作成したラジオボタンがグループ内で変化したときのイベントを取得したいと思います
ちなみに今回はlayout/mainで生成したラジオボタン(静的)を使用したい思います

クリックイベントを取得する為にはRadioGroup.OnCheckedChangeListenerを使用します
これをradioGroupに設定させることで
イベントが取得された際にonCheckedChangedが実行されます
onCheckedChangedの引数の1つ目がそのクリックされたradioGroup
2つ目がクリックされたradioButtonになります
今回は押されたラジオボタンのテキストをログ出力したいと思います
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RadioGroup;
 


public class MainActivity extends Activity {
	
	
	//RadioGroup group;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	
		 setContentView(R.layout.main);
	final RadioGroup group = (RadioGroup)findViewById(R.id.radiogroup_id);
	
	//ラジオボタンが変化した時のイベントを取得
	group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

		public void onCheckedChanged(RadioGroup arg0,int arg1){  
			 if(arg0 == group){  
			 switch(arg1){
			 //ラジオボタン1が押されたとき
			 case R.id.radioButton1:  
				 Log.i("tag","radioButton1");  
			 break;  
			//ラジオボタン2が押されたとき
			 case R.id.radioButton2:  
				 Log.i("tag","radioButton2");  
			 break;  

			 }  
			 }
		}
	});
	}
}
onCheckedChangedの引数の1つ目をgroupだったとき
switch以下が実行され第2引数をcase分けしてLogを出力しています

これを実行すると前回と同じような画面が出ます
device120 .png

ラジオボタン2を押すとラジオボタン1の選択が解除されるのがわかります
device121 .png

ボタンをカチカチやるとログが出力されているのがわかります
device122 .png



スポンサードリンク

ラジオボタンを作成する


ラジオボタンとは下のような選択制の切り替えるスイッチです
device119.png

ラジオボタンを作成する方法は2通りあります
事前にレイアウトに配置(静的)しているものはxmlで設定し
MainActivityなどコードで定義する(動的)の2種類です

ラジオボタンをレイアウトに配置する方法
まずはレイアウトに配置する(静的)方法です
layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical" >
 <RadioGroup android:id="@+id/radiogroup_id"
    android:layout_width="wrap_content"
	android:layout_height="wrap_content">
    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ラジオボタン1" 
        android:checked="true"/>

    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ラジオボタン2" />
  </RadioGroup>
</LinearLayout>
TextViewなどと異なるところはRadioGroupを設定することです
ラジオボタンはグループ内で1つのみを選択できるものなので
RadioGroupでグループ化してやりその中に配置したラジオボタンから
1つを選択する形になります
また、android:checked="true"をどれか1つにつけてやり
初期に選択されているものを設定してあげます

ラジオボタンをアクティビティ内で配置する方法
今回は次にActivity内で動的に配置する方法を先に記載します
今までと同様にLinearLayoutを作成し
RadioButton・RadioGroupをLayoutに追加すればOKです
作成したラジオボタンに表示する文字と初期の選択位置を設定するのは
Layoutに配置するときと同様です
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
 
public class MainActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	// ラジオボタンを生成
	RadioButton radio01 = new RadioButton(this);
	radio01.setText("ラジオボタン1");
	radio01.setChecked(true);// ラジオボタンをチェック状態に
	RadioButton radio02 = new RadioButton(this);
	radio02.setText("ラジオボラン2");
	// ラジオボタンをグループ化
	RadioGroup group = new RadioGroup(this);
	group.addView(radio01);
	group.addView(radio02);
	// レイアウトにラジオグループを追加
	LinearLayout layout = new LinearLayout(this);
	layout.addView(group, new LinearLayout.LayoutParams(
	LinearLayout.LayoutParams.WRAP_CONTENT,
	LinearLayout.LayoutParams.WRAP_CONTENT));
	
	setContentView(layout);
	}
}	
これを実行すると以下の画面が表示されます
device120 .png

これのイベント関連は次回に持ち越しますw
ラジオボタンが押さた時のイベントを取得
スポンサードリンク