StackOverFlowError:为无限循环运行的addTextChangedListener
问题描述:
我正在尝试使用条形码扫描器从条形码读取值。在处理完值后,我需要重置用户界面。StackOverFlowError:为无限循环运行的addTextChangedListener
if(flag){
System.out.println("coming inside if");
scanned_barCode.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
AddRecord(scanned_barCode.getText().toString());
SetDataOnUI();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}else{
scanned_barCode.setText("");
}
它给了StackOverError,我想因为它会进入无限循环。我如何克服这个问题。每次调用AddRecord(String str)
我都需要将editText设置为null。
答
在afterTextChanged
应用此检查:
if(!scanned_barCode.getText().toString().equals(""))
{
AddRecord(scanned_barCode.getText().toString());
SetDataOnUI();
}
使其aftertextChange(的一部分) 不onTextChange() – 2013-03-04 07:11:27
仍然没有改变 – onkar 2013-03-04 07:16:31