Вызывается обратный вызов afterTextChanged() без фактического изменения текста
У меня есть фрагмент с EditText
и внутри onCreateView()
я добавляю TextWatcher
в EditText
.
Каждый раз, когда фрагмент добавляется во второй раз afterTextChanged(Editable s)
, вызывающий вызов вызывается без изменения текста.
Вот фрагмент кода:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
myEditText = (EditText) v.findViewById(R.id.edit_text);
myEditText.addTextChangedListener(textWatcher);
...
}
TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchProgressBar.setVisibility(View.INVISIBLE);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
Log.d(TAG, "after text changed");
}
}
Я также установил фрагмент, чтобы сохранить его состояние, и я сохраняю экземпляр фрагмента в активности.
Ответы
Ответ 1
Отредактированное решение:
Как кажется, текст был изменен со второго раза, когда фрагмент был прикреплен, потому что фрагмент восстановил предыдущее состояние представлений.
Мое решение добавляло text watcher
в onResume()
, так как было восстановлено состояние до.
@Override
public void onResume() {
super.onResume();
myEditText.addTextChangedListener(textWatcher);
}