java - android xml属性android :onClick ="..." work behind the scenes?怎么办

标签 java android xml

我问这个问题是因为我很感兴趣,主要是因为我害怕使用我不理解的属性\代码。据我了解,java 中的所有事件都通过实现适合事件的监听器接口(interface)来工作。如果我在我的 Activity 中为 2 个按钮实现 onClick 并为第三个按钮定义一个具有 android:onClick="..."属性的方法,会发生什么情况?我找到了这个 article ,所以在阅读它之后我明白它是使用实现 OnClickListener 的匿名类来实现的, 但我想确定\了解更多关于它的信息,以及我可能会以何种方式破坏某些东西\利用这些知识对我有利?机器人reference不清楚它是如何工作的,,,

最佳答案

它使用反射来确定在运行时调用的方法。这是一个 View 的属性,所以 View 有相关的代码来查看是否设置了这个属性,然后找出 Activity 上的方法名称并触发它。

View 始终绑定(bind)到特定 Activity 的上下文,因此能够通过反射调用此公共(public)方法。

您可以在此处查看 View 类的源代码。您可以看到第 2003 行,正在处理这种情况。

Source code for View class

关于java - android xml属性android :onClick ="..." work behind the scenes?怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840144/

相关文章:

java - 对JAVA处理这个工作流程和引用情况的方式感到困惑。有人可以澄清一下吗?

java - Guice eager/lazy 单例实例化

android - Activity 和 PreferenceActivity 的公共(public)代码

android - 相对布局在不同的模拟器中搞砸了

具有 XML 命名空间的 SQL Server 2005 - 查询多个节点和属性

xml - XML 映射的 PATH 元素中的 POSITION() 函数在 XML 映射器中有效,但在 SAS 代码中无效

java - Swift 或 Objective C 中的 java ByteBuffer 等价于什么?

android - 点击通过 RecyclerView ViewHolder

java - 使用 XSL 将 XML 动态转换为 CSV - 无法获取标签名称

java - 安装 Play Framework 1.2.7 时出现问题