Risposte:
Questi eventi vengono richiamati nel seguente ordine:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Ciò significa che i caratteri stanno per essere sostituiti con del nuovo testo. Il testo non è modificabile.
Usa: quando devi dare un'occhiata al vecchio testo che sta per cambiare.
onTextChanged (CharSequence s, int start, int before, int count) .
Sono state apportate modifiche, alcuni personaggi sono stati appena sostituiti. Il testo non è modificabile.
Usa: quando hai bisogno di vedere quali caratteri nel testo sono nuovi.
afterTextChanged (Modificabili) .
Come sopra, tranne che ora il testo è modificabile .
Usa: quando hai bisogno di vedere ed eventualmente modificare il nuovo testo.
Se sto solo ascoltando i cambiamenti in EditText
, non avrò bisogno di usare i primi due metodi. Riceverò solo nuovi valori nel terzo metodo e correggerò il nuovo testo se necessario. Tuttavia, se dovessi rintracciare le modifiche esatte che si verificano ai valori, utilizzerei i primi due metodi. Se avessi anche bisogno di modificare il testo dopo aver ascoltato le modifiche, lo farei nel terzo metodo.
public void afterTextChanged (Modificabili)
Questo metodo viene chiamato per avvisarti che, da qualche parte all'interno
s
, il testo è stato modificato. È legittimo apportare ulteriori modifiche as
da questo callback, ma fai attenzione a non entrare in un ciclo infinito, perché qualsiasi modifica apportata farà sì che questo metodo venga chiamato di nuovo in modo ricorsivo. (Non viene detto dove il cambiamento è avvenuto perché altri afterTextChanged () metodi possono già hanno fatto altri cambiamenti e invalidato gli offset. Ma se avete bisogno di sapere qui, è possibile utilizzaresetSpan(Object, int, int, int)
inonTextChanged(CharSequence, int, int, int)
per segnare il tuo posto e poi cercare da qui, dove la durata è finita.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Questo metodo viene chiamato per notificare che, all'interno
s
, icount
caratteri che iniziano perstart
stanno per essere sostituiti da un nuovo testo con lunghezzaafter
. È un errore tentare di apportare modifiche as
da questo callback.
public void onTextChanged (CharSequence s, int start, int before, int count)
Questo metodo viene chiamato per avvisarti che, all'interno
s
, icount
caratteri che iniziano constart
hanno appena sostituito il vecchio testo che aveva lunghezzabefore
. È un errore tentare di apportare modifiche as
da questo callback.
Direttamente dal riferimento di Android per TextWatcher .
Android Textwatcher
è un tipo di trigger che viene chiamato al cambio di testo di un campo di input.
afterTextChanged (Editable s)
- Questo metodo viene chiamato quando il testo è stato modificato. Poiché qualsiasi modifica apportata farà sì che questo metodo venga chiamato di nuovo in modo ricorsivo, devi stare attento all'esecuzione di operazioni qui, altrimenti potrebbe portare a un ciclo infinito .
onTextChanged (CharSequence s, int start, int before, int count)
- Questo metodo viene chiamato per avvisarti che, entro s, i caratteri di conteggio che iniziano all'inizio hanno appena sostituito il vecchio testo che aveva lunghezza prima. È un errore tentare di apportare modifiche a s da questo callback.