如何在某些功能上设置定时器或延迟

时间:2016-07-14 20:45:36

标签: android delay

我的蓝牙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;
    }
}

2 个答案:

答案 0 :(得分:2)

将您的if声明更改为if(!text.startsWith("R"))。这样,无论字符串中有多少个字符,您都会清除文本。

答案 1 :(得分:0)

使用TextWatcher afterTextChanged()方法完成您的工作。您可以使用计时器并在那里安排清洁任务。