onClick(View v)是如何自动执行的?

时间:2019-01-09 08:41:19

标签: java android

您好,我是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是被单击的按钮,但是在幕后如何自动执行此方法?我的意思是不是要能够调用方法,您必须首先创建一个对象,然后再在其旁边创建一个方法?我只需要了解这个概念,谢谢。

2 个答案:

答案 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