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事件还是其他。

 

Android中CheckBox的SetOnClickListener与setOnCheckedChangeListener的区别Android中CheckBox的SetOnClickListener与setOnCheckedChangeListener的区别 ba_wang_mao 发布了1 篇原创文章 · 获赞 0 · 访问量 278 私信 关注
上一篇:C#中枚举类型的声明与使用举例


下一篇:自考新教材-p228