У меня есть ситуация, когда есть два поля. field1
и field2
. Все, что я хочу сделать, это пусто, field2
когда field1
меняется, и наоборот. Таким образом, в конце только одно поле имеет содержимое.
field1 = (EditText)findViewById(R.id.field1);
field2 = (EditText)findViewById(R.id.field2);
field1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
field2.setText("");
}
});
field2.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
field1.setText("");
}
});
Он отлично работает , если я прилагаю addTextChangedListener
к field1
только, но когда я делаю это для обоих полей приложение падает. Очевидно, потому что они пытаются изменить друг друга на неопределенный срок. Как только field1
изменения, которые он очищает, field2
в этот момент
field2
изменяются, поэтому он очищается field1
и так далее ...
Может кто-нибудь предложить какое-нибудь решение?
starting waiting blocking gc alloc
такому типу ошибок, которые могут даже привести к сбою и зависанию ... так что идите на связывание данных, это безопасно и рекомендовано Google сейчас ..