Comment savoir si l'utilisateur a changé l'état du bouton à bascule?
J'ai dix boutons à bascule. Je veux enregistrer l'état de cinq de ces boutons lorsque vous cliquez sur le bouton d'accueil. Mais je veux l'enregistrer uniquement si l'utilisateur a apporté une modification à l'un des boutons de l'état. Est-il possible de savoir le changement dans les états sans l'aide de setOnClickListener()?
OriginalL'auteur nila | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
J'ai fait ce qui suit, le son n'est pas très joli, mais il fonctionne:
et je ne la suivante, si je veux changer le bouton par programmation sans exécuter le changement écouteur:
Nettoyeur exemple et la description ici: developer.android.com/guide/topics/ui/controls/...
OriginalL'auteur
Utilisation
CompoundButton.OnCheckedChangeListener
classe.MODIFIER: Si vous souhaitez utiliser un seul écouteur:
Mais il y a beaucoup de façons de mettre en œuvre cette vraiment. Ainsi, vous pouvez faire une autre méthode qui convient à votre besoin de mieux que de celui-ci.
Comme je vois que cela ne répond pas à la question. Une formulation plus précise serait: Comment faire la différence entre le bouton.setChecked(); et un clic de l'utilisateur? onCheckedChanged est appelée, dans les deux cas.
Et comme je peux le voir sur la question, l'auteur ne s'intéresse pas à faire la distinction entre une action de l'utilisateur et d'un appel de méthode et veut juste savoir quand les états des boutons sont modifiées.
Magnifique réponse, merci!
Je reçois un autre id dès que le bouton est coché !,
.getId()
ne retourne pas l'attendre id !OriginalL'auteur
Il y a un moyen simple de savoir si l'utilisateur clique sur le CompoundButton (Case à cocher, Interrupteur, bouton radio, ToggleButton), utilisez la commande suivante:
new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if (compoundButton.isPressed()) {
//do something related to user click/tap
} else {
//do something related to programmatically state changes (checked/unchecked)
}
}
}
.isPressed()
ne pas basculer pour d'autres périphériques d'entrée comme un stylet (mais j'en doute)OriginalL'auteur
Utiliser un affichage personnalisé
XML exemple d'utilisation
Maintenant, l'idée est d'appeler la méthode setCheckedProgrammatically dans le code. setChecked est appelée par Android lorsque les utilisateurs des changements de l'état de la compund bouton
Remarque que je suis à l'aide d'un commutateur, qui s'étend de la compund bouton, vous pouvez utiliser essentiellement le même code sur un autre (case à cocher, ...)
OriginalL'auteur
D'abord vérifier ce lien http://developer.android.com/resources/tutorials/views/hello-formstuff.html#ToggleButton
Un simple onChangeListener fera:
OriginalL'auteur
Utilisation Vue.OnTouchListener à écouter pour détecter les interactions de l'utilisateur.
J'ai mis en place dans ma classe d'adaptateur.
}
OriginalL'auteur