Écouteur de changement de texte pour Android EditText Fields
Problème :
Dans une application Android, vous voulez vous assurer qu'un seul des deux champs EditText (field1 et field2) peut avoir du contenu à un moment donné. Lorsque l'utilisateur modifie le texte du champ 1, le champ 2 doit être effacé, et vice versa.
Cependant, l'ajout d'un TextWatcher aux deux champs provoque le crash de l'application en raison d'une boucle infinie où chaque champ déclenche l'autre. effacé.
Solution :
Pour résoudre ce problème, ajoutez une vérification à la méthode onTextChanged de TextWatcher pour effacer l'autre champ uniquement s'il a un contenu non vide. Voici le code modifié :
field1.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() != 0) field2.setText(""); } }); field2.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() != 0) field1.setText(""); } });
Avec cette modification, l'application n'effacera l'autre champ que lorsque l'utilisateur tape quelque chose dans le champ actuel, garantissant ainsi qu'un seul champ a du contenu à la fois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!