2009-04-12 22 views
14

Uso gli eventi LongLockClick e onClick di un pulsante per ottenere gli input dell'utente. Ogni volta; l'utente clic lungo e trigger su evento LongClick, anche l'evento onClick viene attivato. Non sono riuscito a trovare il mio problema Il codice di due metodi è mostrato di seguito:L'evento LongClick si attiva anche Evento 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; 
    } 

In realtà, il mio progetto è Open Source. Quindi, è possibile trovare tutto il codice a http://code.google.com/p/guessthenumber/

Grazie.

risposta

32

Non sono sicuro sull'ordine in cui si verificano questi eventi, ma il gestore onLongClick restituisce un valore booleano per indicare se l'evento è stato gestito. Dovresti restituire true se lo hai gestito in modo che non vengano chiamati altri eventi click. Non so se questo impedirà comunque l'attivazione di onClick().

Si può anche trasformare questi eventi off e sull'utilizzo setClickable (booleana) e setLongClickable (booleano)

È possibile trovare queste informazioni e di più su eventi dell'interfaccia utente here.

+2

Come mai ho perso il booleano. Hai perfettamente ragione. restituire true dovrebbe impedire onClick. Grazie. –

Problemi correlati