Réponses:
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)
Cette méthode est appelée pour vous informer que, quelque part à l'intérieur
s
, le texte a été modifié. Il est légitime d'apporter d'autres modifications às
partir de ce rappel, mais veillez à ne pas vous plonger dans une boucle infinie, car toute modification que vous apportez entraînera l'appel de cette méthode de manière récursive. (On ne vous dit pas où la modification a eu lieu car d'autres méthodes afterTextChanged () ont peut-être déjà apporté d'autres modifications et invalidé les décalages. Mais si vous avez besoin de savoir ici, vous pouvez utilisersetSpan(Object, int, int, int)
inonTextChanged(CharSequence, int, int, int)
pour marquer votre place, puis rechercher à partir d'ici où la travée s'est terminée.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Cette méthode est appelée pour vous informer que, dans
s
, lescount
caractères commençant àstart
sont sur le point d'être remplacés par un nouveau texte de longueurafter
. C'est une erreur d'essayer d'apporter des modifications às
partir de ce rappel.
public void onTextChanged (CharSequence s, int start, int before, int count)
Cette méthode est appelée pour vous avertir que, à l'intérieur
s
, lescount
caractères commençant àstart
viennent de remplacer l'ancien texte qui avait de la longueurbefore
. C'est une erreur d'essayer d'apporter des modifications às
partir de ce rappel.
À partir de la référence d' Android pour TextWatcher .
Android Textwatcher
est un type de déclencheur qui est appelé lors du changement de texte d'un champ de saisie.
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.