2009-04-12 6 views
14

J'utilise les événements onLongClick et onClick d'un bouton pour obtenir des entrées utilisateur. N'importe quand; l'utilisateur clique longuement et déclenche l'événement onLongClick, l'événement onClick est également déclenché. Je n'ai pas pu trouver mon problème. Le code de deux méthodes est montré ci-dessous:L'événement LongClick déclenche également l'événement Click

@Override 
    public void onClick(View v) { 
     switch(((Button) v).getId()) 
     { 
     case R.id.enter: 
      EntertheNumber(); 
      break; 
     case R.id.clear: 
      CleartheNumber(); 
      break; 
     case R.id.number_zero: 
     case R.id.number_one: 
     case R.id.number_two: 
     case R.id.number_three: 
     case R.id.number_four: 
     case R.id.number_five: 
     case R.id.number_six: 
     case R.id.number_seven: 
     case R.id.number_eight: 
     case R.id.number_nine: 
      AddtotheNumber(mEditor, (Button) v); 
      break; 
     } 
@Override 
    public boolean onLongClick(View view) { 
     if(SMBGuesstheNumber.bDisplayFlagList) 
     { 
      theActiveButton = (Button) view; 
      showDialog(R.id.display_flaglist); 
     } 
     return false; 
    } 

En fait, mon projet est Open Source. Donc, vous pouvez trouver tout le code au http://code.google.com/p/guessthenumber/

Merci.

Répondre

32

Je ne suis pas sûr de l'ordre dans lequel ces événements se produisent, mais le gestionnaire onLongClick renvoie un booléen pour indiquer si l'événement a été géré. Vous devriez renvoyer true si vous l'avez géré afin que les autres événements de clic ne soient pas appelés. Je ne sais pas si cela empêchera le onClick() de tirer quand même.

Vous pouvez également activer ces événements hors et sur l'utilisation setClickable (Boolean) et setLongClickable (Boolean)

Vous pouvez trouver ces informations et plus sur les événements de l'interface utilisateur here.

+2

Comment se fait-je raté le booléen. Tu as définitivement raison. retourner vrai devrait empêcher onClick. Merci. –

Questions connexes