Android Xml属性android:onClick =“...”如何在幕后工作?

时间:2013-04-05 17:41:23

标签: java android xml

我问这个有点因为我很感兴趣,主要是因为我害怕使用我不理解的属性\代码。根据我的理解,通过实现适合于事件的侦听器接口,java工作中的所有事件。如果我在我的活动中为2个按钮实现onClick并且第三个使用android:onClick =“...”属性定义一个方法会发生什么?我找到了这个article,所以在阅读之后我明白它可以使用一个实现OnClickListener的匿名类来实现,  但我想确定\更多地了解它,以及以什么方式可能会破坏某些东西\将这些知识用于我的优势? android reference不清楚它是如何工作的,

2 个答案:

答案 0 :(得分:8)

它使用反射来确定在运行时调用的方法。它是视图的属性,因此View具有相关代码,该代码查看是否设置了此属性,然后找出活动上的方法名称并触发它。

视图始终绑定到特定活动的上下文,因此,可以通过反射调用此公共方法。

您可以在此处查看视图类的源代码。您可以看到正在处理此情况的行号2003。

Source code for View class

答案 1 :(得分:1)

要以更简单的方式回答您的问题,您在此处指定的名称是加载该布局的Activity中的公共方法。该方法必须采用View类型的单一论证。

如:

android:onClick="myMethod"


public void myMethod(View view) {
}