2009-04-12 163 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