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认为它是一个RadioGroup
的OnCheckedChangeListener
,它不起作用。 我该如何解决这个问题?
你可以这样做:
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"); } } });