私はEditTextとTextWatcherを持っています。TextWatcherでテキストを変更した後にEditTextが更新されない
私のコードのスケルトン:
EditText x;
x.addTextChangedListener(new XyzTextWatcher());
XyzTextWatcher implements TextWatcher() {
public synchronized void afterTextChanged(Editable text) {
formatText(text);
}
}
マイformatText()メソッドは、テキストのいくつかの位置で、いくつかのハイフンを挿入します。
private void formatText(Editable text) {
removeSeparators(text);
if (text.length() >= 3) {
text.insert(3, "-");
}
if (text.length() >= 7) {
text.insert(7, "-");
}
}
private void removeSeparators(Editable text) {
int p = 0;
while (p < text.length()) {
if (text.charAt(p) == '-') {
text.delete(p, p + 1);
} else {
p++;
}
}
}
私の問題は、私のEditTextに表示されているものが、編集可能なものと同期していないことです。コードをデバッグすると、可変テキスト(Editable)が期待値を持つことがわかりましたが、EditTextに表示されているものが必ずしもEditableと一致するわけではありません。例えば
Iテキスト X = "123-456-789" を持っている場合、私は手動でXからテキスト "456" を切断します。フォーマット後、私の編集可能な値を持っている 「123-789-」 は、しかし、私のEditTextに示す値は「123--789」
である彼らは、しかし、ほとんどの場合、同じ値を持っています。
私は、EditTextが編集可能であり、それらは常に一致していると仮定しました。何か不足していますか?
をテストしていませんが、あなたがのEditText /編集可能なテキストを変更するコードを表示することができますか? – slayton
コメントのコードはほとんど読めません。私はそれを読むことができるようにコードブロック内の元の投稿にそのコードを追加していただけますか? – slayton
@slaytonそれは申し訳ありません!元の投稿にコードを追加しました。ありがとう。 – Karthz