【发布时间】:2011-11-18 03:17:59
【问题描述】:
我有一个 EditText 和一个 TextWatcher。
我的代码骨架:
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 不同步。当我调试代码时,我看到变量文本(Editable)具有预期值,但 EditText 上显示的内容并不总是与 Editable 匹配。
例如,当我有一个文本 x = "123-456-789" 我手动从 x 中剪切了文本“456”。 格式化后,我的 Editable 的值为“123-789-” 但是,我的 EditText 上显示的值是“123--789”
但在大多数情况下,它们具有相同的值。
我假设 EditText 是可编辑的,它们应该始终匹配。我错过了什么吗?
【问题讨论】:
-
你能显示你在EditText/Editable中更改文本的代码吗?
-
cmets 中的代码难以阅读。您能否将该代码添加到代码块中的原始帖子中,以便我阅读?
-
@slayton 对不起!我现在已将代码添加到我的原始帖子中。谢谢。
标签: android android-edittext textwatcher