web-dev-qa-db-fra.com

Android Comment puis-je obtenir correctement la valeur d'un commutateur?

Je crée une application Android qui utilise un Switch .
J'essaie d'écouter les changements et d'obtenir la valeur lorsqu'ils sont modifiés.
J'ai deux questions lorsque j'utilise des commutateurs:

  1. Quoi action listener dois-je utiliser?
  2. Comment obtenir la valeur switch?
50
stackoverflow
Switch s = (Switch) findViewById(R.id.SwitchID);

if (s != null) {
    s.setOnCheckedChangeListener(this);
}

/* ... */

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    Toast.makeText(this, "The Switch is " + (isChecked ? "on" : "off"),
                   Toast.LENGTH_SHORT).show();
    if(isChecked) {
        //do stuff when Switch is ON
    } else {
        //do stuff when Switch if OFF
    }
}

Astuce: isChecked est la nouvelle valeur de commutateur [true ou false] pas l'ancienne.

81
Kazekage Gaara

Puisqu'il s'étend de CompoundButton ( docs ), vous pouvez utiliser setOnCheckedChangeListener() pour écouter les changements; utilisez isChecked() pour obtenir l'état actuel du bouton.

59
dmon
Switch switch = (Switch) findViewById(R.id.Switch2);

switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {
                        ...switch on..
                    } else {
                       ...switch off..
                    }
                }
            });

j'espère que cela résoudra votre problème

8
Muhammad Numan