CheckBox的OnCheckedChangeListener、OnClickListener、OnTouchListener

来源:互联网 发布:python sha.new 编辑:程序博客网 时间:2024/06/05 23:58

看到CheckBox这一章的内容,发现监听CheckBox的事件有很多,OnCheckedChangeListener、OnClickListener、OnTouchListener。

于是写代码为了测试他们的区别。

 

  1. package com.xc.ex04_04;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.MotionEvent;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8. import android.widget.CheckBox;  
  9. import android.widget.CompoundButton;  
  10. import android.widget.TextView;  
  11.  
  12. public class EX04_04 extends Activity {  
  13.     public TextView tv1;  
  14.     public TextView tv2;  
  15.     public CheckBox cb;  
  16.     public Button b;  
  17.     /** Called when the activity is first created. */ 
  18.     @Override 
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         tv1 = (TextView)findViewById(R.id.tv1);  
  23.         tv2 = (TextView)findViewById(R.id.tv2);  
  24.         cb = (CheckBox)findViewById(R.id.cb);  
  25.         b = (Button)findViewById(R.id.b);  
  26.           
  27.         cb.setChecked(false);  
  28.         b.setEnabled(false);  
  29.         cb.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {  
  30.               
  31.             @Override 
  32.             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {  
  33.                 // TODO Auto-generated method stub  
  34.                 if(cb.isChecked()){  
  35.                     b.setEnabled(true);  
  36.                     tv2.setText("");  
  37.                     System.out.println(33);  
  38.                 }  
  39.                 else{  
  40.                     b.setEnabled(false);  
  41.                     tv1.setText("");  
  42.                     tv2.setText("");  
  43.                     System.out.println(44);  
  44.                 }  
  45.             }  
  46.         });  
  47.         cb.setOnClickListener(new CheckBox.OnClickListener() {  
  48.               
  49.             @Override 
  50.             public void onClick(View v) {  
  51.                 // TODO Auto-generated method stub  
  52.                 if(cb.isChecked()){  
  53.                     b.setEnabled(true);  
  54.                     tv2.setText("");  
  55.                     System.out.println(11);  
  56.                 }  
  57.                 else{  
  58.                     b.setEnabled(false);  
  59.                     tv1.setText("");  
  60.                     tv2.setText("");  
  61.                     System.out.println(22);  
  62.                 }  
  63.             }  
  64.         });  
  65. /*开始我测试这种方法不知道怎么没效果,原来是要用鼠标按压CheckBox按钮才会看到效果*/
  66.         cb.setOnTouchListener(new CheckBox.OnTouchListener() {  
  67.               
  68.             @Override 
  69.             public boolean onTouch(View v, MotionEvent event) {  
  70.                 // TODO Auto-generated method stub  
  71.                 if(cb.isChecked()){  
  72.                     System.out.println(55);  
  73.                 }  
  74.                 else{  
  75.                     System.out.println(66);  
  76.                 }  
  77.                 return false;  
  78.             }  
  79.         });  
  80.           
  81.         b.setOnClickListener(new Button.OnClickListener() {  
  82.               
  83.             @Override 
  84.             public void onClick(View v) {  
  85.                 // TODO Auto-generated method stub  
  86.                 if(cb.isChecked()){  
  87.                     tv1.setText("你已经同意了");  
  88.                 }  
  89.                 else{  
  90.                   
  91.                 }  
  92.             }  
  93.         });  
  94.     }  

首先模拟器状态为,

点击我同意以后,打印的内容为

说明OnTouchListener是在CheckBox点击之前获得的内容,然后执行点击CheckBox之后的内容,执行OnCheckedChangeListener,再是OnClickListener。

原创粉丝点击