赞
踩
问题:在监听输入框回车键,回调方法返回为true时,发现其回调方法调用了两次。代码如下:
binding.etItemCode.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { if( EditorInfo.IME_ACTION_DONE == actionId || EditorInfo.IME_ACTION_NEXT == actionId ||actionId == EditorInfo.IME_ACTION_UNSPECIFIED){ if(binding.etItemCode.isEmpty()){ XToastUtils.warning("请输入物料代码"); binding.etItemCode.requestFocus(); }else if(binding.etWaveOrderCode.isEmpty()){ XToastUtils.warning("请输入相关单号"); binding.etWaveOrderCode.requestFocus(); }else { parseInputData(binding.etItemCode.getEditValue()); } } return true; } });
通过DeBug 发现两次回调action不同,分别是ACTION DOWN 和ACTION UP,即键盘的按下和抬起两个操作,这里两次回调就是回车按下时,回调一次,回车键抬起时,回调一次。
解决方案:
1.在回调方法下,if的条件中加上
keyEvent.getAction() == KeyEvent.ACTION_DOWN
2.使回调方法返回false。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。