Respuestas:
Estos eventos se denominan en el siguiente orden:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Esto significa que los caracteres están a punto de ser reemplazados por texto nuevo. El texto no se puede editar.
Uso: cuando necesite echar un vistazo al texto antiguo que está a punto de cambiar.
onTextChanged (CharSequence s, int start, int before, int count) .
Se han realizado cambios, algunos personajes acaban de ser reemplazados. El texto no se puede editar.
Usar: cuando necesite ver qué caracteres del texto son nuevos.
afterTextChanged (editable s) .
Lo mismo que el anterior, excepto que ahora el texto es editable .
Usar: cuando necesite ver y posiblemente editar el nuevo texto.
Si solo estoy escuchando cambios en EditText
, no necesitaré usar los dos primeros métodos en absoluto. Solo recibiré nuevos valores en el tercer método y corregiré el texto nuevo si es necesario. Sin embargo, si tuviera que rastrear los cambios exactos que ocurren en los valores, usaría los dos primeros métodos. Si también tuviera la necesidad de editar el texto después de escuchar los cambios, lo haría en el tercer método.
public void afterTextChanged (Editable s)
Este método se llama para notificarle que, en algún lugar dentro
s
, se ha cambiado el texto. Es legítimo realizar más cambioss
desde esta devolución de llamada, pero tenga cuidado de no meterse en un bucle infinito, porque cualquier cambio que realice hará que este método se vuelva a llamar de forma recursiva. (No se le dice dónde tuvo lugar el cambio porque otros métodos afterTextChanged () pueden haber realizado otros cambios e invalidado las compensaciones. Pero si necesita saber aquí, puede usarsetSpan(Object, int, int, int)
inonTextChanged(CharSequence, int, int, int)
para marcar su lugar y luego mirar hacia arriba desde aquí donde el lapso terminó.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Este método se llama para notificarle que, dentro
s
, loscount
caracteres que comienzan enstart
están a punto de ser reemplazados por texto nuevo con longitudafter
. Es un error intentar realizar cambioss
desde esta devolución de llamada.
public void onTextChanged (CharSequence s, int start, int before, int count)
Este método se llama para notificarle que, dentro
s
, loscount
caracteres que comienzan enstart
acaban de reemplazar el texto antiguo que tenía longitudbefore
. Es un error intentar realizar cambioss
desde esta devolución de llamada.
Desde la Referencia de Android para TextWatcher .
Android Textwatcher
es un tipo de disparador que se llama al cambiar el texto de un campo de entrada.
afterTextChanged (Editable s)
- Este método se llama cuando se ha cambiado el texto. Debido a que cualquier cambio que realice hará que este método se vuelva a llamar de forma recursiva, debe estar atento a la realización de operaciones aquí, de lo contrario, podría conducir a un bucle infinito .
onTextChanged (CharSequence s, int start, int before, int count)
- Este método se llama para notificarle que, dentro de s, los caracteres de recuento que comienzan en el inicio acaban de reemplazar el texto antiguo que tenía longitud antes. Es un error intentar realizar cambios en los correos electrónicos desde esta devolución de llamada.