gpt4 book ai didi

android - TextWatcher afterTextChanged 导致 android 中的 stackoverflow

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:52 25 4
gpt4 key购买 nike

我有一个方法 drawItems(),它每次都会创建一个新布局并将其设置为 contentView。而且我还有一个控件 EditText,它应该在内容更改时删除其他元素。

edit.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
currentText = s.toString();
drawItems();
}

public void beforeTextChanged(CharSequence s,
int start, int count, int after) {
}

public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
});

我想做的是保存它的当前文本,删除所有元素,只留下这个 EditTextsaved string。当我尝试运行此应用程序时,引发的错误是 StackOverflow,因为它无限次地呈现 drawItems 方法。为什么即使我不更改其内容,它也会在 afterTextChanged 中呈现 drawItems?它甚至在整个页面加载之前就已呈现。

最佳答案

这个小 fragment 可能会有所帮助:

editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}

@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}

@Override
public void afterTextChanged(Editable s) {

idAnswerEditText.removeTextChangedListener(this);

String someString = StringUtil.doSomething(s.toString());
idAnswerEditText.getText().clear();
idAnswerEditText.getText().append(someString);
idAnswerEditText.setSelection(someString.length());

idAnswerEditText.addTextChangedListener(this);

}

});

当您在用户键入时编辑字符串时,移除监听器并对文本执行任何您需要执行的操作,然后将监听器重新附加到 EditText。

关于android - TextWatcher afterTextChanged 导致 android 中的 stackoverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628437/

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