Sob que circunstâncias devo usar em afterTextChanged
vez de onTextChanged
e vice-versa?
Sob que circunstâncias devo usar em afterTextChanged
vez de onTextChanged
e vice-versa?
Esses eventos são chamados na seguinte ordem:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Isso significa que os caracteres estão prestes a ser substituídos por algum novo texto. O texto não é editável.
Use: quando você precisar dar uma olhada no texto antigo que está prestes a mudar.
onTextChanged (CharSequence s, int start, int before, int count) .
Alterações foram feitas, alguns caracteres foram substituídos. O texto não é editável.
Use: quando você precisar ver quais caracteres no texto são novos.
afterTextChanged (Editável) .
O mesmo que acima, exceto que agora o texto é editável .
Use: quando você precisar ver e possivelmente editar o novo texto.
Se estou apenas ouvindo alterações EditText
, não precisarei usar os dois primeiros métodos. Apenas receberei novos valores no terceiro método e, se necessário, corrigirei o novo texto. No entanto, se eu tivesse que rastrear as mudanças exatas que acontecem com os valores, usaria os dois primeiros métodos. Se eu também precisasse editar o texto depois de ouvir as alterações, faria isso no terceiro método.
public void afterTextChanged (Editável)
public void beforeTextChanged (CharSequence s, int start, int count, int after)
public void onTextChanged (CharSequence s, int start, int before, int count)
Direto da Referência do Android para o TextWatcher .
fonte
afterTextChanged (Editable s)
- Este método é chamado quando o texto foi alterado. Como qualquer alteração feita fará com que esse método seja chamado novamente recursivamente, você deve estar atento ao executar operações aqui, caso contrário, isso pode levar a um loop infinito .onTextChanged (CharSequence s, int start, int before, int count)
- Esse método é chamado para notificá-lo de que, dentro de s, os caracteres de contagem iniciados no início substituíram o texto antigo com tamanho anterior. É um erro tentar fazer alterações em s desse retorno de chamada.fonte