最近写一个安卓工具时,遇到这样一个奇怪的问题:
在某业务结束后,将Edittext内容清空并且默认获取焦点。因为设备是外接一个扫码的机器,那台设备会在扫码后在连接的设备获取焦点的位置输入扫码获取的值。
现在出现这样一个情况:
第一次输入正常,业务逻辑正常。当edittext清空内容并获取焦点后:
mBinding.xtkh.setFocusable(true);
mBinding.xtkh.setFocusableInTouchMode(true);
mBinding.xtkh.requestFocus();
mBinding.xtkh.setText("");
第二次扫码机录入的数据就会少第一个字符。比如扫码机应该录入的是"test",但是edittext显示的是"est"。
如果继续扫码,就会接收到正常数据,并且拼接到后面,变成"esttext"。
奇怪的是,如果第一次输入正常后,手动点击下edittext获取焦点,那第二次会正常输入。