Question

J'ai une liste dans mon application.

Lorsqu'un utilisateur touche un élément de liste avec le doigt, les feux de gestionnaire onListItemClick et je l'ai l'ouverture d'une nouvelle activité.

Cependant, lorsqu'un utilisateur utilise la boule de commande / pad pour cliquer, je veux exécuter certaines fonctionnalités différentes. J'ai onTrackballEvent et tout l'emportait sur fonctionne parfaitement bien dans le mode boule de commande de l'émulateur.

Malheureusement, lors du test sur le Samsung Moment, en cliquant sur le trackpad déclenche le gestionnaire onListItemClick, pas le gestionnaire onTrackballEvent.

quelqu'un ne sait pourquoi? Quelqu'un at-il un moyen de contourner cela?

Était-ce utile?

La solution

Dans listview vous pouvez setOnKeyListener et faire code lorsque keycode est KeyEvent.KEYCODE_DPAD_CENTER

listview.setOnKeyListener(new OnKeyListener() {

            public boolean onKey(View v, int keyCode, KeyEvent event) {
               switch(keyCode){
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                    if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
                   // do the code while trackball/pad is clicked
                    }
                   return true;
                 default:
                    return false;
                 }
              }
         }
});

Il fonctionne pour moi. Espérons que cela vous donnera une idée

Autres conseils

Essayez l'événement primordial dispatchTrackball et saisir ces événements. En outre, une suggestion -. Je ne voudrais pas utiliser une autre action sur la boule de commande car tous les téléphones Android ont la boule de commande

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top