面对在android上实现OnClickListener的问题

时间:2011-09-12 05:54:58

标签: android button buttonclick

我想在主视图上为按钮实现一个点击监听器。我的代码如下所示

protected void onCreate(Bundle savedValues) {
    ...
    // Capture our button from layout
    Button button = (Button)findViewById(R.id.btnFinish);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(mFinishListener);
    ...
}

private OnClickListener mFinishListener = new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};

但是显示错误如下

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (DialogInterface.OnClickListener)  MobileTrackerActivity.java  /MobileTracker/src/com/example/mobiletracker    line 37 Java Problem

我不知道该怎么做。请帮忙。

6 个答案:

答案 0 :(得分:2)

您没有使用正确的接口来实例化mFinishLinstener变量...

您可能有一个指定DialogInterface的导入,这会使视图混乱。

尝试明确指定View.OnClickListener

private View.OnClickListener mFinishListener = new View.OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};

答案 1 :(得分:2)

根据我的意见实施最佳实施方式按钮的点击事件。

不是将OnClickListener应用于活动中的按钮,而是使用android:onClick属性为XML布局中的按钮指定方法。例如:

 <Button
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:text="@string/self_destruct"
     android:onClick="selfDestruct" />

现在,当用户单击该按钮时,Android系统会调用活动的selfDestruct(View)方法。为了使其工作,该方法必须是公共的并接受View作为其唯一参数。例如:

public void selfDestruct(View view) {
     // Kabloey
 }

注意:上面的代码在Android SDK - Button中给出。

答案 2 :(得分:1)

试试这段代码:::

final Button button = (Button) findViewById(R.id.btnFinish);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });

答案 3 :(得分:0)

只需尝试以下内容:

 button.setOnClickListener(new OnClickListener() {  
@Override   
 public void onClick(View v) {
      // do something when the button is clicked
    }
};

答案 4 :(得分:0)

您也可以使用以下代码..

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

button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
   //Write Your code here
}
});

答案 5 :(得分:0)

您也可以在xml中声明onclick。

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="buttonClick" />

在您的代码中,您将函数定义为:

public void buttonClick(View view)
{
    // handle click
}