2009-04-12 220 views
14

我使用onLongClick和onClick事件按鈕來獲取用戶輸入。每當;用戶長時間點擊並觸發onLongClick事件,onClick事件也會被觸發。我找不到我的問題。兩種方法的代碼如下所示:LongClick事件也觸發點擊事件

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

其實我的項目是開源的。所以,你可以在http://code.google.com/p/guessthenumber/

找到所有的代碼謝謝。

回答

32

我不確定這些事件發生的順序,但onLongClick處理程序返回一個布爾值來指示事件是否被處理。如果您處理它,您應該返回true,以便不會調用其他點擊事件。我不知道這是否會阻止onClick()發起。

你也可以把這些事件和關閉使用setClickable(布爾)和setLongClickable(布爾)

你可以找到這個信息,更多的是UI事件here

+2

爲什麼我錯過了布爾。你絕對是對的。返回true應該防止onClick。謝謝。 – 2009-04-12 20:45:11