首页 > 解决方案 > onClick(View v) 是如何自动执行的?

问题描述

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

标签: javaandroid

解决方案


简而言之,当您创建一个 Button 对象时,它具有一些侦听器对象:

例子:

class Button extends View{
   private OnClickListener clickListener;

   public void setOnClickListener(OnClickListener clickListener){
          this.clickListener = clickListener;
   }
}

当你这样称呼时:

button.setOnClickListener();

基本上,您将值分配给 Button 类中的 clickListener ,然后每次单击它触发的按钮

clickListener.onClick(this)

并执行您定义的内容。


推荐阅读