Android EditText : écoute des modifications de texte et vidage des autres champs
Pour garantir qu'un seul champ sur deux contient des données, il devient impératif de effacer l'autre champ si l'un d'entre eux est modifié. Ce besoin survient dans les situations où field1 et field2, deux champs EditText, ne doivent pas tous deux contenir des valeurs simultanément.
Comme présenté dans la question, attacher un TextWatcher à field1 et field2 provoque une boucle infinie où les champs s'effacent les uns les autres. les autres indéfiniment.
Solution :
Pour résoudre ce problème, implémentez une vérification pour effacer le champ opposé uniquement lorsque le champ actuel contient du texte. Ceci peut être réalisé en examinant la longueur de la chaîne d'entrée.
Dans le code modifié ci-dessous, une instruction "if" vérifie si la longueur de la chaîne d'entrée (c'est-à-dire le texte saisi dans le champ actuel) est différent de 0. Si tel est le cas, le champ opposé est effacé :
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(""); } });
En incorporant cette vérification, la boucle infinie est rompue et la fonctionnalité souhaitée est obtenue, garantissant qu'un seul des champs contient des données à tout moment.
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!