安卓 setOnClickListener(this) 错误

3

我在我的安卓应用程序中创建了一个按钮,并尝试设置onclick监听器来运行以下onClick方法

...
Button btn_ok;
    btn_ok = (Button)findViewById(R.id.button1);
    btn_ok.setOnClickListener(this);


}
public void onClick() {
     EditText uN = (EditText) findViewById(R.id.EditText04);
     uN.setText("Clicked!");
    }

但是Eclipse显示了一个错误,并且说“setOnClickListener”需要转换参数。在转换之后,代码如下:

btn_ok.setOnClickListener((OnClickListener) this);

当我运行程序时,模拟器显示“程序意外停止”...我该如何解决这个问题?

1
很可能您正在导入/实现错误的onClickListener,请确保它是针对View而不是DialogInterface的。 - Squonk
5个回答

8

请确保你的类实现了View.OnClickListener接口。你不能只是添加一个onClick方法,而是必须实现整个接口。


5

您的onClick方法的签名是错误的,这让我认为您实际上没有实现接口View.OnClickListener

签名应该是:

public void onClick(View v)
{
    //your implementation, v is your button that was clicked
}

请注意,被点击的View作为参数传递进来了,因此在您的onClick方法中不需要调用findViewById


5

从您的活动中实现onClickListener并重写该方法:

从您的活动中实现onClickListener并覆盖该方法:
@override

public void onClick(View v)
{
    switch(v.getId()){
      case R.id.button1:
         EditText uN = (EditText) findViewById(R.id.EditText04);
         uN.setText("Clicked!");
         break;
       case default:
         break;
 }
}

希望它有所帮助。

2

setOnClickListener方法需要传入一个OnClickListener实例作为参数,而OnClickListener是一个包含onClick()方法的接口。在这里,你传递了this,表示当前上下文。因此,你有两个选择:要么在你的活动中实现OnClickListener,要么使用以下方式:

  this.btn_ok.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    //do your work here
    }
  });

1
请确保您实现了 View.OnClickListener 接口,并将 View 传递给 onClick 方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接