每次用户输入一个字母时,它都存储在outData中,然后清除TextView。为什么这是一个恒定的循环?我以为条件语句会退出它但它会不断循环?
writeText = (TextView) rootView.findViewById(R.id.WriteText);
writeText.addTextChangedListener(watch);
TextWatcher watch = new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
if (writeText.getText() == "") {
return;
}
else{
String writeData = writeText.getText().toString();
byte[] OutData = writeData.getBytes();
ftDevice.write(OutData, writeData.length());
writeText.setText("");
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence s, int a, int b, int c) {
}
};
答案 0 :(得分:1)
有两个问题:
1-字符串不能与==符号进行比较,这里有一个equals
函数,这里你可以简单地检查字符串长度== 0作为返回的基本条件。
2-调用setText()
将再次触发TextWatcher
回调,而是编辑作为参数传递的Editable
对象,并且会反映更改。
这样做:
if (writeText.getText().length() == 0) {
return;
}
else{
String writeData = writeText.getText().toString();
byte[] OutData = writeData.getBytes();
ftDevice.write(OutData, writeData.length());
arg0.replace(0, arg0.length(), "");
}
答案 1 :(得分:0)
比较使用'equals'方法的字符串。
String1.equals(String2)而不是==。
equals方法用于比较内容,==用于比较 引用和原语,而不是内容。