我的蓝牙bcr连接到我的平板电脑。如果它不以R
开头,我希望它清除文本框。问题是在它上面有Inter-Character延迟(大约5ms)以防止数据在传输过程中丢失,因此在完成输入之前它已经清除了EditText
。因此,名为KM70083
的条形码在EditText中看起来像M70083
,所以它实际上只删除第一个字符而不是清除整个EditText
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
final String text = shelfnumberbox.getText().toString().trim();
if (text.matches("K")) {
Toast.makeText(getApplicationContext(), "First charater has to be R", Toast.LENGTH_SHORT).show();
shelfnumberbox.setText("");
shelfnumberbox.requestFocus();
return;
}
}
答案 0 :(得分:2)
将您的if
声明更改为if(!text.startsWith("R"))
。这样,无论字符串中有多少个字符,您都会清除文本。
答案 1 :(得分:0)
使用TextWatcher afterTextChanged()方法完成您的工作。您可以使用计时器并在那里安排清洁任务。