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

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

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

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

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

View类的源代码

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

如:

android:onClick="myMethod" public void myMethod(View view) { }