2010-07-27 4 views
2

J'ai des difficultés à déclencher l'événement onKey de mon View principal. Je ne suis pas sûr de ce que je fais mal, j'ai correctement implémenté l'événement onClick mais je n'arrive pas à comprendre l'événement onKey.Problème lors du déclenchement d'un événement onKey avec Android

Voici le code correspondant:

public class MyActivity extends Activity { 
    private RelativeLayout main; 
    private ApplicationToolbar toolbar; 

    public void onCreate(Bundle savedInstanceState) { 
     ... 
     this.main = (RelativeLayout) this.findViewById(R.id.main); 
     this.toolbar = new ApplicationToolbar(this); 

     // toolbar is added to main later on in the code... 

     this.main.setOnClickListener(mClickListener); 
     this.main.setOnKeyListener(mKeyListener); 
    } 

    private OnClickListener mClickListener = new OnClickListener() { 
     public void onClick(View v) { 
      toolbar.setVisibility(View.VISIBLE); // Works correctly. 
     } 
    }; 

    private OnKeyListener mKeyListener = new OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      toolbar.setBackgroundColor(0xFF0000FF); // Does not work. 
      return true; 
     } 
    }; 
} 

En fait, peu importe ce code que je mets dans les mKeyListener il n'exécute pas, ce qui me porte à croire que l'événement lui-même est jamais déclenchée, même quand je pressais un tas de touches sur mon clavier physique (Motorola Droid, Android 2.1).

Répondre

0

Vous pouvez essayer primordial onKeyDown(int keyCode, KeyEvent event)

Vérifier:

+0

Merci, outrepassant l'événement onKeyDown fonctionne, et il est une solution viable pour ma situation. Une idée de pourquoi ma méthode ci-dessus ne fonctionne pas correctement? – celestialorb

+0

@celestialorb: Peut-être que vous n'avez aucun enfant 'onFocus' de RelativeLayout lorsque vous appuyez sur une touche. Essayez d'ajouter un 'EditText' à l'intérieur. – Macarse

Questions connexes