gpt4 book ai didi

android - 在没有实际更改文本的情况下调用 afterTextChanged() 回调

转载 作者:IT王子 更新时间:2023-10-28 23:28:36 26 4
gpt4 key购买 nike

我有一个带有 EditText 的 fragment ,在 onCreateView() 内我将 TextWatcher 添加到 EditText.

每次第二次添加 fragment 时,都会调用 afterTextChanged(Editable s) 回调,而不会更改文本。

这是一个代码 fragment :

@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");
}
}

我还将 fragment 设置为保留其状态,并将 fragment 的实例保留在 Activity 中。

最佳答案

修改后的解决方案:

看起来文本在第二次附加 fragment 时发生了更改,因为 fragment 恢复了 View 的先前状态。

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

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

编辑正如@MiloszTylenda 在评论中提到的,最好在 onPause() 回调中删除 Textwatcher 以避免泄漏 Textwatcher

@Override public void onPause() {
super.onPause();
myEditText.removeTextChangedListener(watcher);
}

关于android - 在没有实际更改文本的情况下调用 afterTextChanged() 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13721063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com