2012-05-01 8 views
5

Duplicar posible:
public boolean onKey() called twice?Android View.OnKeyListener: haga clic una vez, ejecutar dos veces

Aquí está mi código

public class TestKeyActivity extends Activity { 

private int i=1; 
private ScrollView sv; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    sv=(ScrollView) this.findViewById(R.id.read_scrollView); 

    sv.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { 

     Toast.makeText(TestKeyActivity.this, "what is wrong!!!!"+(i++), 2).show(); 
      return true; 
      } 
      return false; 
     } 
    }); 
    } 
} 

que utilizo emulador de Android y Eclipse, No sé por qué, pero cuando hago clic en la tecla una vez, el código de toast se ejecutará dos veces. ¿Hay algún problema con mi código?

Respuesta

11

Acabo de responder a una pregunta muy similar (here). El problema es que está activando en KeyEvent.ACTION_DOWN y KeyEvent.ACTION_UP. Solo debe ejecutar su código si KeyEvent.getAction() == KeyEvent.ACTION_UP

+0

sí! Es similar pero no lo mismo. Mi problema es OnKeyListener, no tendrá KeyEvent.ACTION_DOWN y KeyEvent.ACTION_UP este tipo de problema. Y gracias dmon. tienes ese puntaje, genial! – lok4u

+0

¿Puedo controlar esto con el código: si hago clic en la tecla y en 1 segundo, esta tecla se bloqueará? de todos modos hay – lok4u

+0

Hmmmm ¿qué estás tratando de lograr? – dmon

Cuestiones relacionadas