Android sur Text Change Listener
Cette question cherche une solution pour éviter une boucle infinie lors de l'application d'un Text Change Listener à deux champs EditText, champ1 et champ2. Lors d'un changement de texte dans le champ 1, le champ 2 doit être effacé, et vice versa.
La mise en œuvre initiale impliquait d'attacher des TextWatchers aux deux champs, où lors d'un changement de texte dans le champ 1, le champ 2 serait effacé et vice versa. Cependant, cela a entraîné un crash dû aux champs tentant de se modifier indéfiniment.
Solution :
Pour éviter la boucle infinie, une vérification peut être ajoutée à les TextWatchers pour effacer l'autre champ uniquement lorsque son texte n'est pas vide (c'est-à-dire lorsque la longueur est différente de 0).
Voici une implémentation mise à jour :
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(""); } });
Cette approche garantit que lorsque field1 change et contient du texte, il efface field2. De même, field2 n'efface field1 que lorsque son texte n'est pas vide. Ainsi, la boucle infinie est évitée tout en obtenant le comportement souhaité.
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!