2012-11-14 149 views
5

我见过几篇文章,例如one,描述了如何使用按钮处理长按事件。我可以按照这些指示,但我想知道是否可以像我处理点击一样进行。我办理了点击的方式是定义XML的处理程序,例如:长按钮事件处理程序

<Button 
    android:id="@+id/btn_NextLift" 
    ... 
    android:onClick="btn_NextLiftClick" /> 

然后在代码这样的:

public void btn_NextLiftClick(View vw_Current) 
    {...} 

我看到在XML中的布尔属性longClickable但我不”看看在哪里定义一个事件处理程序,以便...?

TIA JB

回答

17

您无法通过XML做到这一点。相反,使用:

Button button = (Button) findViewById(R.id.btn_NextLift); 

button.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 

确保此代码来setContentView()被称为后。

此外,请确保longClickable属性设置为true。

+0

这令人沮丧。我肯定在setContentView之后设置了代码,但我的按钮仍然显示为空,因此我得到NullRef异常。 – GPGVM

+0

如果我将LongClick处理程序添加到XML定义的点击处理程序,那么它可以工作。就好像我的按钮隐藏起来,直到它引发事件才能找到它? – GPGVM

+0

编辑您的问题以包含代码。 –