Luego de mucho luchar hemos dado con la respuesta de este dilema que agunos usuarios de este espacio presentan. Si quieres compartir algún dato puedes aportar tu información.
Solución:
Tuve el mismo tipo de problema, cuando presioné la tecla de retroceso con el cursor al final de un texto continuo, después de que se llamara a TextChange 3 veces: – La primera vez con el valor s correcto – La segunda vez con un valor claro – La tercera vez con el valor correcto de nuevo
Después de buscar mucho en la web, traté de cambiar mi tipo de entrada EditText a
android:inputType="textNoSuggestions"
No me preguntes por qué, pero funcionó, afterTextChanged ahora se llama solo una vez.
boolean isOnTextChanged = false;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
isOnTextChanged = true;
@Override
public void afterTextChanged(Editable quantity) {
if (isOnTextChanged)
isOnTextChanged = false;
//dosomething
De acuerdo con las páginas de desarrolladores de TextWatcher, si se realiza un cambio en el Editable
dentro TextWatcher
activará más llamadas a todos los TextWatchers
vinculado a eso Editable
. Ahora, claramente su código no desencadena este comportamiento.
Sin embargo, es muy posible que si, por cualquier razón, el sistema tiene un TextWatcher
sobre el Editable
, la situación que describe puede ocurrir. “¿Por qué”, te escucho llorar, “debería suceder esto?”
Primero, la defensa clásica: no hay razón para que no suceda y, estrictamente, el código de la aplicación debe escribirse para que sea resistente.
En segundo lugar, no puedo probarlo, pero bien podría imaginar que el código que maneja el diseño del texto mostrado dentro de un EditText
usa un TextWatcher
para manejar la actualización de la visualización del texto en la pantalla. Este código podría insertar códigos de control (que no se muestran) en el Editable
para asegurar buenos saltos de línea y así sucesivamente. Incluso puede dar varias vueltas para hacerlo bien, y es posible que solo reciba su primera llamada después de que haya hecho todas sus…
EDITAR
Según el comentario de @Learn OpenGL ES, llamar a un TextWatcher sería normal para cosas como la autocorrección.
Te invitamos a añadir valor a nuestro contenido participando con tu experiencia en las observaciones.