ho un EditText con TextWatcher. Dovrebbe formattare il testo a un'altezza umana di 5'9 ", ma quando l'utente commette un errore e desidera eliminare il carattere digitato il TextWather non gli consente di farlo. Diciamo che l'utente vuole eliminare" TextWather aggiunge subito la sua parte posteriore. Di seguito è riportato il codice. Quindi, come posso consentire all'utente di eliminare il testo in EditText?Come si elimina il testo in EditText con TextWatcher? Ogni volta che rileva una stringa e formatta la sua
private class CustomTextWatcher implements TextWatcher {
private EditText mEditText;
public CustomTextWatcher(EditText e) {
mEditText = e;
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
public void afterTextChanged(Editable s) {
int count = s.length();
String str = s.toString();
if (count == 1) {
str = str + "'";
} else if (count == 3) {
str = str + "\"";
} else if ((count > 4) && (str.charAt(str.length() - 1) != '\"')) {
str = str.substring(0, str.length() - 2)
+ str.charAt(str.length() - 1) + "\"";
} else {
return;
}
mEditText.setText(str);
mEditText.setSelection(mEditText.getText().length());
}
}
Grazie Stefan. Ha risolto il problema. Ho spostato il codice sui metodi afterTextChanged() e ho usato boolean per controllare lo stato della chiave. Ha funzionato. Grazie ancora. –
Per qualche motivo TextWatcher non funziona quando l'utente prova a digitare dopo aver corretto l'errore? Voglio dire quando digita un carattere e poi lo cancella e poi prova a digitare di nuovo TextWatcher non aggiunge i simboli "e" Come posso correggerlo? –
OnKeyListener non funziona su Samsung Galaxy ma funziona bene su Motorola Xoom. –