在没有实际更改文本的情况下调用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"); } } 

我还设置片段以保持其状态,并将片段的实例保留在活动中。

Related of "在没有实际更改文本的情况下调用afterTextChanged()回调"

编辑解决方案:

因为看起来文本是从第二次附加片段而改变的,因为片段恢复了先前的视图状态。

我的解决方案是在onResume()中添加text watcher ,因为在调用onResume 之前状态已恢复。

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