2010-10-04 20 views
3

Je veux une certaine fonctionnalité lorsque la touche Entrée est pressée sur un bouton. Lorsque je redéfinis onKey(), j'écris le code à exécuter pour KEY_ENTER. Cela fonctionne bien.Android: Problème avec overrider onKeyListener pour un bouton

setupButton.setOnKeyListener(new OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (KeyEvent.KEYCODE_ENTER == keyCode) 
       { 
        Intent setupIntent = new Intent(getApplicationContext(),SetUp.class); 
        startActivityForResult(setupIntent, RESULT_OK); 
       } 
       return true; 
      } 
     }); 

Mais aucune autre clé pour travailler sur le bouton maintenant comme le haut, les touches fléchées etc. Je sais que c'est parce que je suis le overriden OnKey() pour seulement ENTRER.

Mais y a-t-il un moyen de conserver la fonctionnalité pour toutes les autres clés et de ne remplacer que certaines clés spécifiques?

Remarque: Tout cela est dû au fait que mon onClick() n'est pas appelé lorsque la touche Entrée est enfoncée. Par conséquent, j'ai besoin de surcharger onKey() lui-même.

- Kiki

Répondre

5

Lorsque vous revenez vrai dans la fonction, qui indique Android, vous gérez toutes les clés, pas seulement sur la touche Entrée.

Vous ne devez renvoyer true qu'à la fin, dans l'instruction if et renvoyer false à la fin de la fonction.

setupButton.setOnKeyListener(new OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (KeyEvent.KEYCODE_ENTER == keyCode) 
      { 
       Intent setupIntent = new Intent(getApplicationContext(),SetUp.class); 
       startActivityForResult(setupIntent, RESULT_OK); 
       return true; 
      } 
      return false; 
     } 
    }); 
+0

Salut, merci Matthieu. Je n'aurais aucune idée jusqu'à ce que tu me l'aies dit! – kiki