Андроид: флажок слушателя
Я хочу поставить слушателя над флажком. Я искал информацию, и это выглядит так:
satView = (CheckBox)findViewById(R.id.sateliteCheckBox);
satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// perform logic
}
}
});
проблема в том, что Eclipse думает, что это OnCheckedChangeListener на RadioGroup и это не работает. Как я могу это исправить?
9 ответов:
вы можете сделать это:
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;поэтому обратный вызов должен быть:
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 } } });надеюсь, что это помогает.
изменить
RadioGroup groupсCompoundButton buttonViewа затем нажмите 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"); } } });
перевод принятого ответа Криса в Котлин:
val checkBox: CheckBox = findViewById(R.id.chk) checkBox.setOnCheckedChangeListener { buttonView, isChecked -> // Code here }
Comments