2010-10-05 18 views
0

Je suis nouveau sur Android de développement et ayant un problème avec ce qui DEVRAIT être une tâche très simple. Je souhaite recevoir KeyEvents chaque fois qu'un utilisateur saisit un champ EditText car je souhaite enregistrer ses valeurs saisies dans les structures de données en arrière-plan à chaque frappe de touche.Android Key Events pour EditText ne se passe pas sur l'appareil

J'ai mimé le code dans le guide de développement de débutant au http://developer.android.com/resources/tutorials/views/hello-formstuff.html#EditText et mis en place un OnKeyListener. Voici un extrait de mon code:

cell.amountEditText.setOnKeyListener(new View.OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event) { 
    System.err.println("onKey for Amount, key="+event.getDisplayLabel()); 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     return onKeyDownInAmount(finalPosition, (EditText)v, keyCode, event); 
    } else { 
     return false; 
    } 
} 

});

Comportement sur l'émulateur est tachetée au mieux, quelques fois il livrera les KeyEvents pour le clavier virtuel, parfois il ne sera pas. Lorsque j'installe l'application sur mon appareil (HTC Hero qui a un clavier virtuel uniquement) alors AUCUN des événements ne se déclenche. Je ne reçois jamais un seul KeyEvent.

Qu'est-ce que je fais mal?

Toute aide est appréciée.

Répondre

-1

L'onKeyListener ne reçoit que les événements d'un clavier matériel. Utilisez TextWatcher à la place.

+0

Merci, ça a marché pour moi. Je ne sais pas pourquoi le Guide du développeur Android a dit d'utiliser l'écouteur de touche sur la page Form Stuff! –

+0

Oui, c'est définitivement déroutant. –