您的位置:首页 > 移动开发 > Android开发

第20章、OnCheckedChangeListener事件(从零开始学Android)

2012-12-19 22:11 633 查看
单选按钮RadioGroup、复选框CheckBox都有OnCheckedChangeListener事件,我们一起了解一下。
一、布局

  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="男" />
        <RadioButton
            android:id="@+id/female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女" />
    </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="足球" />
    <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="蓝球" />

</RelativeLayout>

  2、界面如下:

  




二、OnCheckedChangeListener事件 

  打开“src/com.genwoxue.oncheckedchanged/MainActivity.java”文件。

  然后输入以下代码:  

package com.genwoxue.oncheckedchanged;

import android.os.Bundle;
import android.app.Activity;
import android.widget.RadioGroup;
import android.widget.RadioButton;
import android.widget.RadioGroup.OnCheckedChangeListener;              //引入OnCheckedChangeListener事件相关包
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);
		//在GenderGroup注册OnCheckedChangeListener事件
                  GenderGroup.setOnCheckedChangeListener(new GenderOnCheckedChangeListener());
                  //在cbFootBall注册OnCheckedChangeListener事件
		cbFootBall.setOnCheckedChangeListener(new BootBallOnCheckedChangeListener());
                  //在cbBasketBall注册OnCheckedChangeListener事件

		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(), "您选择的性别是:"+sGender, Toast.LENGTH_LONG).show();
		}
		
	}
	
	private class BootBallOnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener{
		@Override
		public void onCheckedChanged(CompoundButton button, boolean isChecked){
			String sFav="";
			if(isChecked){
				sFav=cbFootBall.getText().toString();
				sFav=sFav+"选中!";
			}
			else
				sFav=sFav+"未迁中";
			Toast.makeText(getApplicationContext(), "您选择的爱好是:"+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+"选中!";
			}
			else
				sFav=sFav+"未迁中";
			Toast.makeText(getApplicationContext(), "您选择的爱好是:"+sFav, Toast.LENGTH_LONG).show();
		}
	}
	
}

  尽管单选按钮和复选框都有OnCheckedChange事件,但注意二者区别。

  效果如下:

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: