且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android EditText OnTouchListener事件重复

更新时间:2022-09-04 14:57:12

今天在做数字键盘输入法的时候,监听EditText的OnTouchListener事件,然后弹出输入法,发现事件里面的方法居然执行了两次。

代码如下:

 


  1. Java代码  
  2.       
  3. edit.setOnTouchListener(new OnTouchListener() {        
  4.         
  5.             @Override        
  6.             public boolean onTouch(View v, MotionEvent event) {        
  7.                 NumberInputApp.setEdit(edit);        
  8.                 Intent intent = new Intent();        
  9.                 intent.setClass(NumberKeyBoardActivity.this, NumberInputActivity.class);        
  10.                 startActivity(intent);        
  11.                 return false;        
  12.             }        
  13.         });    

经过同事的提示,发现有可能是EditText的事件太过灵敏了,在MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP各执行了一次,于是把代码改成如下即可:

 


  1. Java代码  
  2.       
  3. edit.setOnTouchListener(new OnTouchListener() {        
  4.         
  5.             @Override        
  6.             public boolean onTouch(View v, MotionEvent event) {        
  7.                 /**加这个判断,防止该事件被执行两次*/        
  8.                 if (event.getAction() == MotionEvent.ACTION_DOWN) {        
  9.                     NumberInputApp.setEdit(edit);        
  10.                     Intent intent = new Intent();        
  11.                     intent.setClass(NumberKeyBoardActivity.this, NumberInputActivity.class);        
  12.                     startActivity(intent);        
  13.                 }        
  14.                 return false;        
  15.             }        
  16.         });    

 



     本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/963236,如需转载请自行联系原作者