Dans quelles circonstances dois-je utiliser à la afterTextChanged
place onTextChanged
et vice versa?
la source
Dans quelles circonstances dois-je utiliser à la afterTextChanged
place onTextChanged
et vice versa?
Ces événements sont appelés dans l'ordre suivant:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Cela signifie que les caractères sont sur le point d'être remplacés par du nouveau texte. Le texte n'est pas modifiable.
Utilisation: lorsque vous avez besoin de jeter un œil à l'ancien texte qui est sur le point de changer.
onTextChanged (CharSequence s, int start, int before, int count) .
Des modifications ont été apportées, certains caractères viennent d'être remplacés. Le texte n'est pas modifiable.
Utilisation: lorsque vous avez besoin de voir quels caractères du texte sont nouveaux.
afterTextChanged (modifiables) .
La même chose que ci-dessus, sauf que maintenant le texte est modifiable .
Utilisation: lorsque vous avez besoin de voir et éventuellement de modifier le nouveau texte.
Si j'écoute simplement les changements EditText
, je n'aurai pas du tout besoin d'utiliser les deux premières méthodes. Je recevrai simplement de nouvelles valeurs dans la troisième méthode et corrigerai le nouveau texte si nécessaire. Cependant, si je devais suivre les changements exacts qui se produisent dans les valeurs, j'utiliserais les deux premières méthodes. Si j'avais également besoin de modifier le texte après avoir écouté les modifications, je le ferais dans la troisième méthode.
public void afterTextChanged (modifiables)
public void beforeTextChanged (CharSequence s, int start, int count, int after)
public void onTextChanged (CharSequence s, int start, int before, int count)
À partir de la référence d' Android pour TextWatcher .
la source
afterTextChanged (Editable s)
- Cette méthode est appelée lorsque le texte a été modifié. Étant donné que toute modification apportée entraînera le nouvel appel de cette méthode de manière récursive, vous devez être vigilant sur l'exécution des opérations ici, sinon cela pourrait conduire à une boucle infinie .onTextChanged (CharSequence s, int start, int before, int count)
- Cette méthode est appelée pour vous avertir que, à l'intérieur de s, les caractères de comptage commençant au début viennent de remplacer l'ancien texte qui avait une longueur avant. C'est une erreur de tenter d'apporter des modifications aux s à partir de ce rappel.la source