Maison > Java > javaDidacticiel > le corps du texte

Comment empêcher une boucle infinie lors de la suppression des champs EditText lors d'une modification de texte ?

Barbara Streisand
Libérer: 2024-11-20 12:19:09
original
213 Les gens l'ont consulté

How to Prevent Infinite Loop When Clearing EditText Fields on Text Change?

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("");
   }
  });
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal