我正在尝试学习 android 编程,但在深入理解概念方面,我陷入了困境。
所以有这段代码监听 View (一个按钮)的点击事件。顺便说一句,代码来自一个站点,并且工作正常。但我痴迷于了解它的具体细节。
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 期望从回调返回一个 View (我认为:))。有没有其他方法可以完成它,或者这是将事件监听器设置为 View 的唯一方法?我是否必须按原样接受它并拥抱它,而不是为它苦苦挣扎:)我问这个只是为了理解结构的逻辑,代码工作得很好。
4. 传递给 View.OnClickListener 函数的 View 是什么?这是当前的观点吗(我怀疑是)?传递给 View 的 View 的用例是什么。
5. 我在哪里(或我可以)查看 View.OnClickListener 函数的代码以更好地理解它?
6. 所有这些练习在我脑海中引发了另一个关于回调的问题,但它可能完全是另一个问题的主题:)
最佳答案
- 这有点难以解释,但您正在传递可以视为
函数
的内容。 - > View包含在 Android 框架中。
- 您还可以通过 xml 设置
onClick
监听器。检查这个很有帮助post . - 根据我的理解,这是它所关联的 View 。例如,它是
button1
的 onClickListener, View 引用button1
。 - > View.OnClickListener
- ...好吧。我认为您最好先学习教程(我建议 udacity :D)
不是很确定,但我希望这能以某种方式给你一个想法。快乐学习和编码!干杯! :D
关于java - Android Studio 事件监听器之谜(给我)(setOnClickEventListener),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066186/