2012-03-03 154 views
5

在我的代码中,一个按钮的ontouch侦听器被触发两次。 请在下面找到代码。我正在使用Google API 2.2。Android - 触摸监听器被触发两次

在Java文件代码....

submit_button = (Button)findViewById(R.id.submit); 

submit_button .setOnTouchListener(new View.OnTouchListener() 
     {  
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       int action=0; 
       if(action == MotionEvent.ACTION_DOWN) 
       {     

        startActivity(new Intent(First_Activity.this, Second_Activity.class)); 
        finish(); 
       } 
       return true;  
       }  
      }); 

请帮我解决这个问题。

回答

7

而不是使用onTouchListener,你应该使用onClickListener按钮。

submit_button.setOnClickListener(new OnClickListener() {  
    public void onClick(View v) { 
     startActivity(new Intent(First_Activity.this, Second_Activity.class)); 
     finish(); 
    } 
}); 
+0

感谢它的工作。 – Prem 2012-03-03 19:34:30

0

您是否附加了侦听器二来查看元素?在使用View arg0参数进行事件检查之前,从哪个视图进行响应。

14

由于存在停机事件和停机事件,所以会触发两次。

由于动作设置为0(顺便说一句,是MotionEvent.ACTION_DOWN的值),因此if分支中的代码始终执行。

int action=0; 
if(action == MotionEvent.ACTION_DOWN) 

也许你打算写下面的代码呢?

if(arg1.getAction() == MotionEvent.ACTION_DOWN) 

但是你作为Waqas建议真的应该使用OnClickListener。

+0

真的很有帮助,非常感谢。 – katzenhut 2014-02-24 13:24:04

0
int action = event.getActionMasked(); 

使用此。

+3

它做什么?它应该如何工作?这种答案是没有帮助的。请提供一些解释,而不仅仅是一行代码。谢谢 – katzenhut 2014-02-24 13:20:13