2012-03-03 18 views
5

En mi código, el detector ontouch de un botón se dispara dos veces. Por favor encuentre abajo el código. Estoy usando Google API 2.2.Android: el oyente táctil se disparó dos veces

Código en el archivo 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;  
       }  
      }); 

por favor me ayude en la solución de este problema.

Respuesta

7

en lugar de utilizar onTouchListener, se debe utilizar OnClickListener para los botones.

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

Gracias funcionó. – Prem

0

¿Ha conectado el oyente dos para ver los elementos? Antes de reaccionar en el evento, compruebe desde qué vista proviene utilizando el parámetro View arg0.

14

Dispara dos veces porque hay un evento hacia abajo y un evento hacia arriba.

El código en la rama if se ejecuta siempre ya que la acción se establece en 0 (que, por cierto, es el valor de MotionEvent.ACTION_DOWN).

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

¿Tal vez se proponía escribir el siguiente código en su lugar?

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

Pero realmente debería usar OnClickListener como Waqas sugirió.

+0

realmente útil, muchas gracias. – katzenhut

0
int action = event.getActionMasked(); 

Use esto.

+3

¿Qué es eso? ¿Como se supone que funciona? Las respuestas de este tipo son menos que útiles. Proporcione alguna explicación en lugar de solo una línea de código. Gracias – katzenhut

Cuestiones relacionadas