2009-04-12 9 views
14

Ich benutze onLongClick und onClick Ereignisse einer Schaltfläche, um Benutzereingaben zu erhalten. Wann immer; Wenn der Benutzer lange klickt und das Ereignis onLongClick auslöst, wird auch das Ereignis onClick ausgelöst. Ich konnte mein Problem nicht finden. Der Code von zwei Methoden wird unten gezeigt:LongClick-Ereignis löst auch Click-Ereignis

@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; 
    } 

Eigentlich ist mein Projekt Open Source. So können Sie den ganzen Code bei http://code.google.com/p/guessthenumber/

finden Danke.

Antwort

32

Ich bin nicht sicher, in welcher Reihenfolge diese Ereignisse auftreten, aber der onLongClick-Handler gibt ein Bool zurück, um anzuzeigen, ob das Ereignis behandelt wurde. Sie sollten "true" zurückgeben, wenn Sie es so gehandhabt haben, dass andere Klickereignisse nicht aufgerufen werden. Ich weiß nicht, ob das verhindern wird, dass onClick() abfeuert.

Sie können auch diese Ereignisse aus- und wieder einschalten mit setClickable (boolean) und setLongClickable (boolean)

Sie diese Informationen finden können und mehr über UI-Ereignisse here.

+2

Wie komme ich den Booleschen verpasst. Du hast definitiv Recht. true sollte onClick verhindern. Vielen Dank. –

Verwandte Themen