实际上我的应用程序中有两个EditText,
第一个从扫描仪获得第二个数量的BarCode。
但我必须这样做,如果我在qta EditText和长度是>那4我将它识别为条形码,我将把它放在条形码EditText。
我试图通过设置onFocus更改,但这不起作用,我甚至尝试使用TextWatched onTextChange来检查qta edittext lenght> 4但这只是将4个数字放入条形码EditText
您必须使用焦点更改事件而不是文本更改事件。因为文本更改将触发每个文本更改。
如果onFocus更改事件不起作用,您可以尝试以下代码段
您的活动应该实现OnFocusChangeListener。这样,您所有的更改都将在该方法上,但您必须通过使用v.getId()获取视图ID并相应地处理来检查哪个视图更改了焦点。
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus)
{
switch(v.getId()){
case r.id.editText1:
//TODO:your_logic_goes_here
break;
}
}
}
我在这里看到使用TextChangedListener没有任何问题:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length()>4){
editTextBarCode.setText(s.toString());
}else {
//else you can set it to the same edit text or whatever you want
}
}
});