java - Android- setOnClickListener 背后的逻辑

标签 java android onclicklistener

我是 Java/Android 编程新手,不幸的是我不完全理解这段代码背后的逻辑:

         button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // Perform action on click
         }
     }); 

我已经阅读了大量有关它的教程,但不幸的是,到目前为止,没有人对代码进行详细解释。也许是因为它太基础了,每个优秀的面向对象程序员都会立即理解该结构的原因。

我想知道为什么需要使用new View.OnClickListener()作为参数?对于 setOnClickListener 方法。换句话说,为什么不类似

         button.setOnClickListener(
         public void onClick(View v) {
             // Perform action on click
     });  

这个作品?

此外,我不太确定为什么 onClick 方法需要 View v 参数。

我非常感谢您的帮助,因为我目前很困惑。

最佳答案

View.OnClickListener 是一个当你想要处理点击事件时需要实现的接口(interface)。在您的代码中,您可以通过执行 new View.OnClickListener() 来实现这一点。在这里,您实际上创建了一个实现 View.OnClickListener 的匿名类。任何实现 View.OnClickListener 的类还必须实现其中声明的所有方法(例如 onClick 方法)。另外,在 public void onClick(View v) {..} 中, View v 表示单击的 View 或按钮,以便您可以使用它执行任何您想要的操作。例如,获取它的 id、更改它的颜色等。

关于java - Android- setOnClickListener 背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827663/

相关文章:

android - APK校验和-二进制代码保护

android: 无法从 RecyclerView.ViewHolder 加载新 Activity

android - LinearLayout 未被点击

java - 简单的进度对话框单击并在完成操作时隐藏

java - AntiSamy 可以防止 Java 中的 XSS?

java - 基于文件的数据提供者

java - 为什么 Hibernate 抛出异常 "java.lang.NoSuchMethodError: javax.persistence.UniqueConstraint.name()"?

java - 如何访问 RecyclerView 适配器的 ViewHolder 的数据源?

android - 方向更改后设置 imageview

java - 如何安全地更改 Android Studio 中的项目名称?