Android中CheckBox的SetOnClickListener与setOnCheckedChangeListener的区别


package com.itcast.radiobutton;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView tv;
    private Button btn;
    private CheckBox cb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv = (TextView)this.findViewById(R.id.TextView01);
        cb=(CheckBox)this.findViewById(R.id.CheckBox01);
        cb.setChecked(false);
        btn = (Button)this.findViewById(R.id.Button01);
        btn.setEnabled(false);
    cb.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(cb.isChecked()){
                    btn.setEnabled(true);
                    tv.setText("");
                }else
                {
                    btn.setEnabled(false);
                    tv.setText("请勾选我");
                }
            }
            
        });
        
        cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                        btn.setEnabled(true);
                        tv.setText("");
                    }else
                    {
                        btn.setEnabled(false);
                        tv.setText("请勾选我");
                    }
                }
            }
 );
        
        btn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(cb.isChecked()){
                    tv.setText("已经选择");
                }
            }
            
        });
        
        
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
      两者都能实现对CheckBox的状态改变的监听,但一般情况下,用的更多的是setOnCheckedChangeListener。因为,当CheckBox的状态不是通过点击事件改变,而是通过其他的方式改变时,比如setCheck(),setOnClickListener无法完成此种情况下的监听。OnCheckChangedListener监听CheckBox的状态,无论来自你的onClick事件还是其他。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM