Android Studio 事件监听器之谜(对我来说)(setOnClickEventListener)

Android Studio Event Listener mysteries (to me) (setOnClickEventListener)

我正在尝试学习 android 编程,但在深入理解概念方面,我陷入了困境。

所以有这段代码监听视图(一个按钮)的点击事件。顺便说一句,代码来自一个站点,并且工作正常。但我痴迷于了解它的具体细节。

clearButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // do some stuff
    }
});

我有一些不同层次的问题:

1. 所以父函数 (clearButton.setOnClickListener) 是事件处理程序,据我所知,它在单击按钮时触发。然而我们正在向它传递一个对象的方法,据我所知,这是另一个事件监听器。它们都被命名为 "ClickListener" 所以我很困惑。其中两个真的是事件监听器吗?

2. View 对象(作为回调传递的对象)来自哪里?它是由系统隐式创建的吗?我的 MainActivity.java 文件中没有这样的定义。

3. 我笨拙地尝试用调用另一个简单函数的父函数来编写它,它只显示一个 AlertDialog,但我失败了,因为 clearButton.setOnClickEventListener 期望一个要从回调返回的视图(我认为:))。有没有其他方法可以完成它,或者这是将事件侦听器设置为视图的唯一方法?我是否必须按原样接受它并拥抱它,而不是为它苦苦挣扎:)我问这个只是为了理解结构的逻辑,代码工作得很好。

4.传递给View.OnClickListener函数的视图是什么?这是当前的观点吗(我怀疑是)?传递给视图的视图的用例是什么。

5. 我在哪里(或我可以)查看 View.OnClickListener 函数的代码以更好地理解它?

6. 所有这些练习在我脑海中引发了另一个关于回调的问题,但它可能完全是另一个问题的主题:)

  1. 有点难以解释,但您传递的是可以视为 function 的内容。
  2. View 包含在 Android 框架中。
  3. 您还可以通过 xml 设置 onClick 侦听器。检查这个很有用 post.
  4. 根据我的理解,它是与之相关的视图。例如,它是 button1 的 onClickListener,视图指的是 button1.
  5. View.OnClickListener
  6. ...好吧。我认为你最好先学习教程(我建议 udacity :D )

不是很确定,但我希望这能以某种方式给你一个想法。快乐学习和编码!干杯! :D