Android setOnClickListener(this)错误

时间:2012-04-02 16:25:08

标签: java android

我在Android应用程序中创建了一个按钮&我尝试设置onclick listner来运行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”需要Cast Argument。铸造之后就像这样

btn_ok.setOnClickListener((OnClickListener) this);

然后当我运行程序时,Emulator说“程序意外停止了”...... 我怎么解决这个问题 ?

5 个答案:

答案 0 :(得分:8)

确保您的类实现了View.OnClickListener。你不能只添加onClick方法,你必须实现接口

答案 1 :(得分:5)

onClick方法的签名是错误的,这使我相信您实际上并未实现接口View.OnClickListener

签名应为:

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

请注意,单击的视图作为参数传入,因此无需从findViewById方法中调用onClick

答案 2 :(得分:5)

从您的活动中实现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;
 }
}

希望它有所帮助。

答案 3 :(得分:2)

setOnClickListenerOnClickListener实例作为参数,OnClickListener是一个内容为onClick()方法的接口,您将在此处传递setOnClickListener(this);目前的背景。所以你有两个选项可以在你的活动中实现OnClickListener,第二个使用这种方式:

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

答案 4 :(得分:1)

确保您正在实现View.OnClickListener接口,并将View传递给onClick方法