2012-04-02 40 views
2

我已经在我的Android应用程序&创建一个按钮,我试图设置的onclick听者运行的onClick方法类似如下的Android setOnClickListener(这)错误

... 
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 2012-04-02 16:34:30

回答

7

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

+0

Thanx ..它的工作 – Grant 2012-04-02 16:36:38

5

onClick方法的签名是错误的,这导致我相信你实际上没有实现接口View.OnClickListener

签名应该是:

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

注意,被点击的看法是传递作为参数,所以没有必要调用findViewByIdonClick方法内部。

2

setOnClickListener采取OnClickListener实例作为参数和OnClickListener是一个接口,其内容的onClick()方法和要传递此处setOnClickListener(本);当前上下文。所以你有两个选择要么在你的活动和第二次使用实现OnClickListener这样:

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

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

希望它能帮助。

1

确保您所用的接口View.OnClickListener,并通过查看到的onClick方法