Ser*_*gey 5 stack-overflow layout android
我有一个方法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) {
}
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是保存其当前文本,删除所有的元素,只有离开这个EditText用saved string.当我尝试运行此应用程序时,引发的错误是StackOverflow,因为它呈现drawItems方法无限次.afterTextChanged即使我不更改其内容,为什么它会渲染drawItems ?它甚至在整个页面加载之前呈现.
正如 @DroidIn.net 在评论中所说,您可能在 afterTextChanged 处理中触发文本更改事件 - 可能在 drawItems() 中。
您可以通过使用处理程序推迟绘制项目的处理来解决堆栈溢出异常,但这可能会让您陷入无限循环。您应该查看drawItems,并确保它们不会更改您的编辑文本,导致更改再次更改编辑文本等等。