Dans quelles circonstances dois-je utiliser afterTextChanged
au lieu de 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.
Utilisez: 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.
Utilisez: lorsque vous devez voir quels caractères du texte sont nouveaux.
afterTextChanged (Editable s).
Comme ci-dessus, sauf que maintenant le texte est modifiable .
Utilisez: lorsque vous devez voir et éventuellement modifier le nouveau texte.
Si j'écoute simplement les changements dans EditText
, je n'aurai pas du tout besoin d'utiliser les deux premières méthodes. Je vais juste recevoir de nouvelles valeurs dans la troisième méthode et corriger le nouveau texte si nécessaire. Cependant, si je devais retrouver 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 (Modifiable s)
Cette méthode est appelée pour vous informer que, quelque part dans
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 mettre dans une boucle infinie, car toute modification que vous apporterez entraînera le rappel récursif de cette méthode. (On ne vous dit pas où la modification a eu lieu car d'autres méthodes afterTextChanged () peuvent déjà avoir apporté d'autres modifications et invalidé les décalages. Mais si vous avez besoin de savoir ici, vous pouvez utilisersetSpan(Object, int, int, int)
dansonTextChanged(CharSequence, int, int, int)
pour marquer votre place, puis recherchez à partir de là 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
, les caractèrescount
commençant parstart
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 informer que, dans
s
, les caractèrescount
commençant parstart
viennent de remplacer l'ancien texte de longueurbefore
. C'est une erreur d'essayer d'apporter des modifications às
à partir de ce rappel.
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 toutes les modifications que vous apporterez entraîneront le rappel de cette méthode de manière récursive, vous devez faire attention aux opérations ici, sinon cela pourrait conduire à boucle infinie.
onTextChanged (CharSequence s, int start, int before, int count)
- Cette méthode est appelée pour vous informer que, dans s, le nombre de caractères commençant à start vient de remplacer l'ancien texte qui avait de la longueur auparavant. C'est une erreur d'essayer d'apporter des modifications à s à partir de ce rappel.