1. ホーム
  2. Android

第20章 OnCheckedChangeListenerイベント (ゼロから学ぶAndroid)

2022-02-10 20:33:30
RadioGroupとCheckBoxはすべてOnCheckedChangeListenerイベントを持っているので、一緒に勉強しましょう。

I. レイアウト

  1. res/layout/activity_main.xml"ファイルを開いてください。

<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"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/gender"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
        <RadioButton
            android:id="@+id/male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="male" />
        <RadioButton
            android:id="@+id/female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="female" />
    </RadioGroup>

    <CheckBox
        android:id="@+id/football"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/gender"
        android:text="football" />
    <CheckBox
        android:id="@+id/basketball"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/football"
        android:text="Blue Ball" />

</RelativeLayout>

  2. インターフェースは以下の通りです。

II. OnCheckedChangeListenerイベント 

  ファイル "src/com.genwoxue.oncheckedchanged/MainActivity.java"を開いてください。

  そして、以下のコードを入力してください。  

package com.genwoxue.oncheckedchanged;

import android.os;
import android.app.Activity;
import android.widget.RadioGroup;
import android.widget.RadioButton;
OnCheckedChangeListener; //import OnCheckedChangeListener event related package
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;


public class MainActivity extends Activity {
	private RadioGroup GenderGroup=null;
	private RadioButton rbMale=null;
	private RadioButton rbFemale=null;
	private CheckBox cbFootBall=null;
	private CheckBox cbBasketBall=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		GenderGroup=(RadioGroup)super.findViewById(R.id.gender);
		rbMale=(RadioButton)super.findViewById(R.id.male);
		rbFemale=(RadioButton)super.findViewById(R.id.female);
		cbFootBall=(CheckBox)super.findViewById(R.id.football);
		cbBasketBall=(CheckBox)super.findViewById(R.id.basketball);
		//register OnCheckedChangeListener event in GenderGroup
                  GenderGroup.setOnCheckedChangeListener(new GenderOnCheckedChangeListener());
                  //register OnCheckedChangeListener event in cbFootBall
		cbFootBall.setOnCheckedChangeListener(new BootBallOnCheckedChangeListener());
                  // register OnCheckedChangeListener event in cbBasketBall

		cbBasketBall.setOnCheckedChangeListener(new BasketBallOnCheckedChangeListener());
	}
	
	private class GenderOnCheckedChangeListener implements OnCheckedChangeListener{
		@Override
		public void onCheckedChanged(RadioGroup group,int checkedId){
			String sGender="";
			if(rbFemale.getId()==checkedId){
				sGender=rbFemale.getText().toString();
			}
			if(rbMale.getId()==checkedId){
				sGender=rbMale.getText().toString();
			}
			Toast.makeText(getApplicationContext(), "The gender you selected is: "+sGender, Toast.LENGTH_LONG).show();
		}
		
	}
	
	private class BootBallOnCheckedChangeListener implements CompoundButton.
		@Override
		public void onCheckedChanged(CompoundButton button, boolean isChecked){
			String sFav="";
			if(isChecked){
				sFav=cbFootBall.getText().toString();
				sFav=sFav+"Checked! ";
			}
			else
				sFav=sFav+"Not moved";
			Toast.makeText(getApplicationContext(), "Your selected hobby is:"+sFav, Toast.LENGTH_LONG).show();
		}
	}
	
	private class BasketBallOnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener{
		@Override
		public void onCheckedChanged(CompoundButton button,boolean isChecked){
			String sFav="";
			if(cbBasketBall.isChecked()){
				sFav=cbBasketBall.getText().toString();
				sFav=sFav+"Checked! ";
			}
			else
				sFav=sFav+"not moved";
			Toast.makeText(getApplicationContext(), "Your selected hobby is:"+sFav, Toast.LENGTH_LONG).show();
		}
	}
	
}



  ラジオボタンもチェックボックスもOnCheckedChangeイベントを持ちますが、この2つの違いに注意してください。

  その効果は次のとおりです。