每次用户输入一个字母时,它被存储在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) {
}
};
有两个问题:
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(), "");
}
字符串比较使用'equals'方法。
String1.equals(String2)代替==.
equals方法用于比较内容,==用于比较引用和原语,而不是内容。