Добре, след като се опитах да приложа този подход в моето приложение за „реален свят“, се оказа, че ако действително използвате данните, върнати от извикването на AJAX, това няма да работи (това означава, че IE9 ще продължи да показва само първия знак). .но хубавото е, че след много псувни и лоши думи успях да го накарам да проработи. Вижте моя приет отговор...
Отговори (3)
Добре, току-що започнах да преглеждам кода си отново. Защо никой не намери отговор? Наистина не е толкова трудно.
Така че просто оградих if-statements
във всеки блок за опит с друг if-statement
, който изглежда така:
if(edittext.isFocused()){
try-catch block
}
И сега всичко работи добре. Вече няма StackOverflowException
, защото textwatcher
започва да работи само там, където е фокусиран edittext
. Промените в текста вече не задействат безкраен цикъл.
person
mike.b93
schedule
04.05.2013
Блогът е премахнат
- person ; 22.03.2014
Трябва да проверите дали промяната в EditText
е станала поради промени, направени в други EditText
. Създайте поле boolean
в класа и го инициализирайте с false
:
private boolean mIsChanging = false;
В afterTextChanged()
проверете дали това поле е false
или излезте в противен случай:
public void afterTextChanged(Editable editable) {
if (mIsChanging) {
return;
}
mIsChanging = true;
// Then do what you did previously...
mIsChanging = false;
}
person
Michael
schedule
19.04.2013
Добре, StackOverFlowError изчезна, но получавам много странно поведение. когато въвеждам нещо в моето 2-ро
EditText
, се появява нещо много различно от това, което съм въвел, и когато изтривам въведеното от мен, тези числа стават по-големи и подскачат.. Малко трудно за обяснение..
- person mike.b93; 19.04.2013
Трудно е да ти препоръчам нещо в този случай. Можете да опитате да го отстраните. Сигурен съм, че ще можете да откриете къде е проблемът доста лесно.
- person Michael; 19.04.2013
С Editable е възможно, трябва да използвате hashCodeFunction
@Override
public void afterTextChanged(Editable s) {
if (editText.getText().hashCode() == s.hashCode()) {
// some
}
}
person
steving21
schedule
17.09.2015