您的位置:首页 > 其它

CheckBox的OnCheckedChangeListener、OnClickListener、OnTouchListener

2013-04-28 14:35 357 查看
看到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);  
                }  
            }  
        });  
/*开始我测试这种方法不知道怎么没效果,原来是要用鼠标按压CheckBox按钮才会看到效果*/
        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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: