我有一个蓝牙bcr连接到我的平板电脑。我想让它清除文本框,如果它不以R
开头。问题在于它存在字符间延迟(约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;
}
}
你可以用'editText.postDelayed(新的Runnable(){@Override 公共 无效的run(){ }} ,500);' – Vucko
另外你的代码使用火柴,这是一个正则表达式的表达,也许你应该考虑每次只看第一个字符而不是正则表达式。 – JoxTraex