4

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

4

2 回答 2

8

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

View 始终绑定到特定活动的上下文,因此能够通过反射调用此公共方法。

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

View 类的源代码

于 2013-04-05T17:48:02.953 回答
1

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

如:

android:onClick="myMethod"


public void myMethod(View view) {
}
于 2013-04-05T17:56:56.750 回答