poc*_*coa 3 android barcode barcode-scanner android-edittext
我正在使用条形码扫描仪将条形码字符串插入到格式为"12345 \n"的EditText中.我想用"\n"字符触发搜索事件,而不是使用搜索按钮.我使用了TextEdit的addTextChangedListener,并在我正在做的函数中:
protected TextWatcher readBarcode = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
char lastCharacter = s.charAt(s.length() - 1);
if (lastCharacter == '\n') {
String barcode = s.subSequence(0, s.length() - 1).toString();
searchBarcode(barcode);
}
}
};
Run Code Online (Sandbox Code Playgroud)
它第一次工作得很好,但我也想在每次扫描后清除EditText.但是在afterTextChanged事件中不可能这样做,因为它会进入一个递归循环或其他东西.
这是另一个解决方案,它工作得很好:
editBarcode.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
String barcode = editBarcode.getText().toString();
if (keyCode == KeyEvent.KEYCODE_ENTER && barcode.length() > 0) {
editBarcode.setText("");
searchBarcode(barcode);
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
实际上我不确定这样做的正确方法是什么.也许我可以使用EditText的OnKeyListener事件.有什么建议?
谢谢
如果清除了EditText内容,afterTextChanged()则不应该有无限循环.
@Override
public void afterTextChanged(Editable s) {
if (s.length > 0) {
char lastCharacter = s.charAt(s.length() - 1);
if (lastCharacter == '\n') {
String barcode = s.subSequence(0, s.length() - 1).toString();
myEditText.setString("");
searchBarcode(barcode);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11369 次 |
| 最近记录: |