que necesito para detectar cambios en el texto en un EditarTexto. Intenté TextWatcher, pero no funciona de la manera que esperaría. Tome el método OnTextChanged:detectar cambios en EditarTexto (TextWatcher ineficaz)
public void onTextChanged(CharSequence s, int start, int before, int count)
Digamos que tiene el texto "John" en ya en el EditarTexto. Si presiona otra tecla, "e", s
será "Johne", start
será 0, before
habrá 4, y count
habrá 5. La forma en que sería de esperar que este método funcione sería la diferencia entre lo que el EditarTexto previamente era, y en lo que se convertirá.
Por lo tanto, sería de esperar:
s = "Johne"
start = 4 // inserting character at index = 4
before = 0 // adding a character, so there was nothing there before
count = 1 // inserting one character
tengo que ser capaz de detectar cambios individuales cada vez que se pulsa una tecla. Así que si tengo texto "John", necesito saber "e" se añadió al índice 4. Si retroceso "e", lo que necesito saber "e" fue eliminado del índice 4. Si pongo el cursor después de "J "y retroceso, necesito saber que" J "se eliminó del índice 0. Si pongo una" G "donde estaba" J ", quiero saber que" G "reemplazó a" J "en el índice 0.
Cómo puedo lograr esto? No puedo pensar en una manera confiable de hacer esto.
onKeyListener intento de EditarTexto –
¿Qué hay de pegar desde el portapapeles? –
Otro problema que tengo es que digo que tengo seleccionado un rango de texto. En cualquiera de los métodos de TextWatcher, getSelectionStart y End son siempre del mismo índice, independientemente de si tengo texto seleccionado o no. –