看到CheckBox这一章的内容,发现监听CheckBox的事件有很多,OnCheckedChangeListener、OnClickListener、OnTouchListener。
于是写代码为了测试他们的区别。
- package com.xc.ex04_04;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.CompoundButton;
- import android.widget.TextView;
- public class EX04_04 extends Activity {
- public TextView tv1;
- public TextView tv2;
- public CheckBox cb;
- public Button b;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tv1 = (TextView)findViewById(R.id.tv1);
- tv2 = (TextView)findViewById(R.id.tv2);
- cb = (CheckBox)findViewById(R.id.cb);
- b = (Button)findViewById(R.id.b);
- cb.setChecked(false);
- b.setEnabled(false);
- cb.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- // TODO Auto-generated method stub
- if(cb.isChecked()){
- b.setEnabled(true);
- tv2.setText("");
- System.out.println(33);
- }
- else{
- b.setEnabled(false);
- tv1.setText("");
- tv2.setText("");
- System.out.println(44);
- }
- }
- });
- cb.setOnClickListener(new CheckBox.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if(cb.isChecked()){
- b.setEnabled(true);
- tv2.setText("");
- System.out.println(11);
- }
- else{
- b.setEnabled(false);
- tv1.setText("");
- tv2.setText("");
- System.out.println(22);
- }
- }
- });
- cb.setOnTouchListener(new CheckBox.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- if(cb.isChecked()){
- System.out.println(55);
- }
- else{
- System.out.println(66);
- }
- return false;
- }
- });
- b.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if(cb.isChecked()){
- tv1.setText("你已经同意了");
- }
- else{
- }
- }
- });
- }
- }
首先模拟器状态为,
点击我同意以后,打印的内容为
说明OnTouchListener是在CheckBox点击之前获得的内容,然后执行点击CheckBox之后的内容,执行OnCheckedChangeListener,再是OnClickListener。