您好,我是Android开发的入门者。我知道基本的Java核心。所以我对这个特定的代码有疑问:
button.setOnClickListener(new View.OnClickListener()
{
@Override public void onClick(View v)
{
// do something when the button is clicked
}
});
我知道这是匿名类,OnClickListener是一个接口。但是我不明白的是onClick(View v)方法,v是被单击的按钮,但是在幕后如何自动执行此方法?我的意思是不是要能够调用方法,您必须首先创建一个对象,然后再在其旁边创建一个方法?我只需要了解这个概念,谢谢。
答案 0 :(得分:2)
简单地说,当创建一个Button对象时,它就有一些侦听器对象:
示例:
class Button extends View{
private OnClickListener clickListener;
public void setOnClickListener(OnClickListener clickListener){
this.clickListener = clickListener;
}
}
当您称呼它时:
button.setOnClickListener();
基本上,您将值分配给Button类中的clickListener,然后每次单击按钮都会触发
clickListener.onClick(this)
并执行您定义的内容。
答案 1 :(得分:1)
您的侦听器将提供给Button
对象,然后单击按钮,Android框架将尝试通过调用您提供的OnClickListener
方法来调用onClick
(如果有) 。
因此,它并不是真正自动的。您的操作触发了点击,Android框架调用了您的onClick
。