我有一個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