android.widget.Switch – on / off écouteur d’événement?

Je voudrais implémenter un bouton switch, android.widget.Switch (disponible à partir de l’API v.14).

 

Mais je ne sais pas comment append un écouteur d’événement pour le bouton. Devrait-il être un auditeur “onClick”? Et comment saurais-je s’il est activé ou non?

Switch hérite des atsortingbuts de CompoundButton . Je recommande donc OnCheckedChangeListener

 mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // do something, the isChecked will be // true if the switch is in the On position } }); 

Utilisez l’extrait suivant pour append un commutateur à votre mise en page via XML:

  

Ensuite, dans la méthode onCreate de votre activité, obtenez une référence à votre commutateur et définissez son onCheckedChangeListener:

 Switch onOffSwitch = (Switch) findViewById(R.id.on_off_switch); onOffSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.v("Switch State=", ""+isChecked); } }); 

Définissez votre mise en page XML:

    

Puis créer une activité

 public class SwitchActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener { Switch mySwitch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_switch); mySwitch = (Switch) findViewById(R.id.myswitch); mySwitch.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // do something when check is selected } else { //do something when unchecked } } **** } 

======== Pour ci-dessous API 14 utiliser SwitchCompat =========

XML

    

Activité

 public class SwitchActivity extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener { SwitchCompat mySwitch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_switch); mySwitch = (SwitchCompat) findViewById(R.id.myswitch); mySwitch.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // do something when checked is selected } else { //do something when unchecked } } ***** } 

La disposition pour le widget Switch est quelque chose comme ça.

    

Dans la classe Activité, vous pouvez coder de deux manières. Dépend de l’utilisation que vous pouvez coder.

Première voie

 public class ActivityClass extends Activity implements CompoundButton.OnCheckedChangeListener { Switch list_toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.return_vehicle); list_toggle=(Switch)findViewById(R.id.list_toggle); list_toggle.setOnCheckedChangeListener(this); } } public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { if(isChecked) { list_toggle.setText("Only Today's"); //To change the text near to switch Log.d("You are :", "Checked"); } else { list_toggle.setText("All List"); //To change the text near to switch Log.d("You are :", " Not Checked"); } } 

Deuxième voie

 public class ActivityClass extends Activity { Switch list_toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.return_vehicle); list_toggle=(Switch)findViewById(R.id.list_toggle); list_toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { list_toggle.setText("Only Today's"); //To change the text near to switch Log.d("You are :", "Checked"); } else { list_toggle.setText("All List"); //To change the text near to switch Log.d("You are :", " Not Checked"); } } }); } } 

Pour ceux qui utilisent Kotlin, vous pouvez définir un écouteur pour un commutateur (dans ce cas, l’ID mySwitch ) comme suit:

 mySwitch.setOnCheckedChangeListener { _, isChecked -> run { // do whatever you need to do when the switch is toggled here } } 

isChecked est true si le commutateur est actuellement coché (ON) et false sinon.