Domanda

In quali circostanze dovrei usare afterTextChanged invece di onTextChanged e viceversa?

È stato utile?

Soluzione

Questi eventi vengono chiamati nel seguente ordine:

  1. 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.

  2. onTextChanged (CharSequence s, int start, int before, int count) .
    Sono state apportate modifiche, alcuni personaggi sono appena stati sostituiti. Il testo non è modificabile.
    Usa: quando devi vedere quali caratteri nel testo sono nuovi.

  3. afterTextChanged (Modificabili) .
    Come sopra, tranne ora il testo è modificabile .
    Usa: quando devi vedere ed eventualmente modificare il nuovo testo.

Se sto solo ascoltando le modifiche in EditText , non dovrò usare i primi due metodi. Riceverò solo nuovi valori nel terzo metodo e, se necessario, correggerò il nuovo testo. Tuttavia, se dovessi rintracciare le modifiche esatte che accadono 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.

Altri suggerimenti

vuoto pubblico dopo Testo modificato (modificabili)

  

Questo metodo viene chiamato per avvisare che, da qualche parte all'interno di s , il testo è stato modificato. È legittimo apportare ulteriori modifiche a s da questo callback, ma fai attenzione a non entrare in un ciclo infinito, poiché qualsiasi modifica apportata farà sì che questo metodo venga richiamato in modo ricorsivo. (Non viene indicato dove è avvenuta la modifica perché altri metodi afterTextChanged () potrebbero aver già apportato altre modifiche e invalidato gli offset. Ma se è necessario sapere qui, è possibile utilizzare setSpan (Object, int, int, int ) in onTextChanged (CharSequence, int, int, int) per contrassegnare il tuo posto e quindi cercare da qui dove si è concluso lo span.

vuoto pubblico prima di Testo modificato (CharSequence s, int start, int count, int after)

  

Questo metodo viene chiamato per avvisare che, all'interno di s , i caratteri count che iniziano con start stanno per essere sostituiti da un nuovo testo con lunghezza dopo . È un errore tentare di apportare modifiche a s da questo callback.

vuoto pubblico onTextChanged (CharSequence s, int start, int before, int count)

  

Questo metodo viene chiamato per avvisare che, all'interno di s , i caratteri count che iniziano con start hanno appena sostituito il vecchio testo che aveva lunghezza prima . È un errore tentare di apportare modifiche a s da questo callback.

Direttamente da Riferimento Android per TextWatcher .

  

Android Textwatcher è un tipo di trigger che viene chiamato   sulla modifica del testo di un campo di input.

afterTextChanged ( Modificabili) : questo metodo viene chiamato quando il testo è stato modificato. Poiché qualsiasi modifica apportata farà sì che questo metodo venga richiamato in modo ricorsivo, è necessario fare attenzione quando si eseguono operazioni qui, altrimenti potrebbe portare a ciclo infinito .

onTextChanged (CharSequence s, int start, int before, int count) - Questo metodo viene chiamato per avvisare che, all'interno di s, il conteggio i caratteri che iniziano all'inizio hanno appena sostituito il vecchio testo che prima aveva una lunghezza. È un errore tentare di apportare modifiche a s da questo callback.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top