// 最近在负责PDA的开发,在扫描事件的处理上,花费了一些时间,但是,最终功夫不负有心人,总算找到一个好点的解决方案,不说了,上代码。
// 该文本框添加扫描事件.
// 但是该扫描事件有一个明显的bug,当扫描出的字符是一个的时候,就无法区分出是扫描事件还是手动输入的事件。
editText.addTextChangedListener(textwatcher);
/**
* 扫描事件.
**/
private MTextWatcher textwatcher = new MTextWatcher();
private class MTextWatcher implements TextWatcher {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
/**
* 三个参数的值
* start before count
* 0 0 13 <br>
* 扫描时触发的 :start=0,before=0,count=1 <br>
* 手动输入时,显示的数据 012 023 034 045<br>
* start=0,before=1,count=2,<br>
* start=0,before=2,count=3,<br>
* start=0,before=3,count=4,<br>
* start=0,before=4,count=5,<br>
* 手动通过键盘输入:是每个字母都会触发textWatcher事件 扫描是整体触发,不会单个触发. **
**/
if (start == 0 && before == 0 && count > 1) {
// 当扫描一个字符时,会出错
// 当扫描事件触发的时候,去执行自己的方法.
} else {
// 为手动输入触发的事件.
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
**总结**
**单个输入是:触发多个TextWatcher事件**
**PDA扫描是:触发一个TextWatcher事件**
**缺点**
**当扫描一个字符的时候,无法区分这两个事件**