今天在做数字键盘输入法的时候,监听EditText的OnTouchListener事件,然后弹出输入法,发现事件里面的方法居然执行了两次。
代码如下:
- Java代码
- edit.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- NumberInputApp.setEdit(edit);
- Intent intent = new Intent();
- intent.setClass(NumberKeyBoardActivity.this, NumberInputActivity.class);
- startActivity(intent);
- return false;
- }
- });
经过同事的提示,发现有可能是EditText的事件太过灵敏了,在MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP各执行了一次,于是把代码改成如下即可:
- Java代码
- edit.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- /**加这个判断,防止该事件被执行两次*/
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- NumberInputApp.setEdit(edit);
- Intent intent = new Intent();
- intent.setClass(NumberKeyBoardActivity.this, NumberInputActivity.class);
- startActivity(intent);
- }
- return false;
- }
- });
本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/963236,如需转载请自行联系原作者