Подтвердить что ты не робот

Вызывается обратный вызов 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");
    }
}

Я также установил фрагмент, чтобы сохранить его состояние, и я сохраняю экземпляр фрагмента в активности.

4b9b3361

Ответ 1

Отредактированное решение:

Как кажется, текст был изменен со второго раза, когда фрагмент был прикреплен, потому что фрагмент восстановил предыдущее состояние представлений.

Мое решение добавляло text watcher в onResume(), так как было восстановлено состояние до.

@Override
public void onResume() {
    super.onResume();
    myEditText.addTextChangedListener(textWatcher);
}