Existe-t-il un moyen de supprimer un écouteur d'un View
dans Android? J'ai un Checkbox
auquel j'ai attaché un CheckChangedListener
. Le problème est qu'en appelant setChecked()
dessus, mon auditeur se déclenche.
Si je ne peux pas simplement supprimer un écouteur, y a-t-il un moyen d'empêcher l'écouteur de se déclencher lorsque j'appelle setChecked()
manuellement par opposition à sa vérification à partir d'un événement tactile?
Eh bien, j'ai trouvé la réponse. Cela ne semble être documenté nulle part, mais j'ai parcouru le code de la classe View
et si vous passez null aux méthodes setClickListener, il supprimera l'écouteur.
checkbox.setOnCheckChangedListener(null);
Cela devrait fonctionner pour tout écouteur d'événements.
Pourquoi avez-vous un checkChangeListener
? Si vous utilisiez un onClicklListener
cela pourrait bien fonctionner pour vous?
Vous pouvez essayer de définir l'écouteur sur celui qui ne fait rien avant d'appeler setChecked()
puis de remettre l'utile par la suite.
J'ai rencontré des problèmes similaires avec la vue Spinner. Ma solution était de créer une variable membre de classe que j'archivais dans la méthode OnItemSelected
. Avant de modifier le contenu/la sélection du Spinner par programme, j'ai défini cette variable sur true
. Lorsque OnItemSelected
se déclenche, si la variable est true
je la change en false
et juste return
sans faire aucun travail. L'inconvénient est que cela rend le dépannage difficile car cette variable est définie tout au long de mon code.