EditText inputField = (EditText) findViewById(R.id.inputfield);
inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
Teria como eu passar uma expressão regular para ele, ou algo assim?-Bruno
2011/9/3 Júlio Cesar Bueno Cotta <julioc...@gmail.com>:
Evitar o loop é simples. Use um atributo de clase pra indicar se você
está editando ou não (um boolean cabe perfeitamente aqui). Ai, no seu
método, cheque essa variavel e tome as as ações adequadas. Algo como:
private boolean processingText;
[...]
public void afterTextChanged(Editable s) {
if (!processingText) {
processingText = true;
[Altere o editable como quiser]
processingText = false;
}
}
-Bruno
2011/9/4 Júlio Cesar Bueno Cotta <julioc...@gmail.com>:
-Bruno
2011/9/5 Júlio Cesar Bueno Cotta <julioc...@gmail.com>:
O método onTextChanged precisa ser synchronized (como eu já havia mencionado).
A legibilidade de "editando = !editando" é quase 0. Mude para
"editando = true" e "editando = false".
Por que exatamente você espera que no número de telefone entrado pelo
usuário exista uma barra invertida ("\")?
Você pode mudar as 4 chamadas encadeadas do replaceAll() em uma única.
Mova a string com o regex para uma constante.
Use parentesis em cada subexpressão nos blocos if. Fica mais legível.
Por exemplo, mude:
if (fone.length() >= 2 && fone.length() > tamVelho)
para:
if ((fone.length() >= 2) && (fone.length() > tamVelho))
Isso deve te dar uma idéia.
"Alguns", não "muitos". Vamos lá.
O método onTextChanged precisa ser synchronized (como eu já havia mencionado).
A legibilidade de "editando = !editando" é quase 0. Mude para
"editando = true" e "editando = false".
Por que exatamente você espera que no número de telefone entrado pelo
usuário exista uma barra invertida ("\")?
Você pode mudar as 4 chamadas encadeadas do replaceAll() em uma única.
Mova a string com o regex para uma constante.
Use parentesis em cada subexpressão nos blocos if. Fica mais legível.
Por exemplo, mude:
para:
if (fone.length() >= 2 && fone.length() > tamVelho)
if ((fone.length() >= 2) && (fone.length() > tamVelho))