¿En qué circunstancias debería utilizar en afterTextChanged
lugar de onTextChanged
y viceversa?
¿En qué circunstancias debería utilizar en afterTextChanged
lugar de onTextChanged
y viceversa?
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)
public void beforeTextChanged (CharSequence s, int start, int count, int after)
public void onTextChanged (CharSequence s, int start, int before, int count)
Desde la Referencia de Android para TextWatcher .
fuente
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.fuente