我在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说“程序意外停止了”...... 我怎么解决这个问题 ?
答案 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)
setOnClickListener
将OnClickListener
实例作为参数,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方法