Android:checkbox侦听器

我想把一个Listener放在一个checkbox上。 我查找的信息是这样的:

satView = (CheckBox)findViewById(R.id.sateliteCheckBox); satView.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChecked){ // perform logic } } }); 

问题是Eclipse认为它是一个RadioGroupOnCheckedChangeListener ,它不起作用。 我该如何解决这个问题?

你可以这样做:

 satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { } } ); 

你也可以去一个简单的onClickListener:

 satView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(satView.isChecked()){ System.out.println("Checked"); }else{ System.out.println("Un-Checked"); } } }); 

你得到的错误是因为你导入了错误的包。你应该import android.widget.CompoundButton.OnCheckedChangeListener;

所以callback应该是:

  box.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub } }); 

尝试这个:

 satView = (CheckBox) findViewById(R.id. sateliteCheckBox); satView.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (buttonView.isChecked()) { //checked } else { //not checked } }); 

希望这可以帮助…

使用CompoundButton buttonView更改RadioGroup group ,然后按Ctrl + Shift + O来修复您的导入。

你可以使用这个代码。

 public class MySampleActivity extends Activity { CheckBox cb1, cb2, cb3, cb4; LinearLayout l1, l2, l3, l4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); cb1 = (CheckBox) findViewById(R.id.cb1); cb2 = (CheckBox) findViewById(R.id.cb2); cb3 = (CheckBox) findViewById(R.id.cb3); cb4 = (CheckBox) findViewById(R.id.cb4); l1 = (LinearLayout) findViewById(R.id.l1); l2 = (LinearLayout) findViewById(R.id.l2); l3 = (LinearLayout) findViewById(R.id.l3); l4 = (LinearLayout) findViewById(R.id.l4); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1)); cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2)); cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3)); cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4)); } public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener { int position; public MyCheckedChangeListener(int position) { this.position = position; } private void changeVisibility(LinearLayout layout, boolean isChecked) { if (isChecked) { l1.setVisibility(View.VISIBLE); } else { l1.setVisibility(View.GONE); } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (position) { case 1: changeVisibility(l1, isChecked); break; case 2: changeVisibility(l2, isChecked); break; case 3: changeVisibility(l3, isChecked); break; case 4: changeVisibility(l4, isChecked); break; } } } } 

尝试这个

 satView.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChecked){ // perform logic } } }); 
 h.chk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { CheckBox chk=(CheckBox)view; // important line and code work if(chk.isChecked()) { Message.message(a,"Clicked at"+position); } else { Message.message(a,"UnClick"); } } });