Android: auditeur de case à cocher

Je veux mettre un auditeur sur un checkBox. J’ai cherché des infos et c’est comme ça:

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

Le problème est qu’Eclipse pense que c’est un OnCheckedChangeListener pour un RadioGroup et que cela ne fonctionne pas. Comment puis-je réparer cela?

Tu peux le faire:

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

vous pouvez aussi opter pour un simple 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"); } } }); 

Vous obtenez l’erreur car vous avez importé un package incorrect. Vous devez import android.widget.CompoundButton.OnCheckedChangeListener;

Le rappel devrait donc être:

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

Essaye ça:

 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 } } }); 

J’espère que cela t’aides.

Modifiez le RadioGroup group avec CompoundButton buttonView , puis appuyez sur Ctrl + Maj + O pour corriger vos importations.

Vous pouvez utiliser ce code.

 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; } } } } 

essaye ça

 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"); } } }); 

Traduction de la réponse acceptée par Chris dans Kotlin:

 val checkBox: CheckBox = findViewById(R.id.chk) checkBox.setOnCheckedChangeListener { buttonView, isChecked -> // Code here }