我有一个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相匹配。
例如,当我有一个文本 x =“123-456-789” 我从x手动删除文本“456”。 格式化后,我可编辑的值为“123-789-” 然而,在我的EditText显示的数值为“123--789”
他们在大多数情况下,相同的值,但。
我认为EditText是可编辑的,它们应该始终匹配。我错过了什么吗?
你能显示代码? – slayton
注释中的代码几乎不可读。您能否将代码添加到代码块中的原始文章中,以便我可以阅读它? – slayton
@slayton对不起!我已将代码添加到我的原始帖子中。谢谢。 – Karthz