我问这个问题是因为我很感兴趣,主要是因为我害怕使用我不理解的属性\代码。据我了解,java 中的所有事件都通过实现适合事件的监听器接口(interface)来工作。如果我在我的 Activity 中为 2 个按钮实现 onClick 并为第三个按钮定义一个具有 android:onClick="..."属性的方法,会发生什么情况?我找到了这个 article ,所以在阅读它之后我明白它是使用实现 OnClickListener 的匿名类来实现的, 但我想确定\了解更多关于它的信息,以及我可能会以何种方式破坏某些东西\利用这些知识对我有利?机器人reference不清楚它是如何工作的,,,
最佳答案
它使用反射来确定在运行时调用的方法。这是一个 View 的属性,所以 View 有相关的代码来查看是否设置了这个属性,然后找出 Activity 上的方法名称并触发它。
View 始终绑定(bind)到特定 Activity 的上下文,因此能够通过反射调用此公共(public)方法。
您可以在此处查看 View 类的源代码。您可以看到第 2003 行,正在处理这种情况。
关于java - android xml属性android :onClick ="..." work behind the scenes?怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840144/