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事件还是其他。
ba_wang_mao 发布了1 篇原创文章 · 获赞 0 · 访问量 278 私信 关注