Java 如何在android编程中管理事件

Java 如何在android编程中管理事件,java,android,Java,Android,我想问你一些关于android编程中管理事件的信息。 在java中,当事件发生时,会创建一个事件对象实例,并将其传递给实现它的侦听器类的方法;在android中,我注意到listeners类的所有方法都需要一个视图实例作为参数,那么第一个问题是:在android中,当事件发生时,不是创建了一个事件对象实例吗? 我遇到的第二个疑问是阅读以下内容,这里使用属性android:onClick,我可以指定在单击事件发生时要执行的方法,那么问题是:为什么我要指定一个方法?我是否应该指出实现监听器并在特定方


我想问你一些关于android编程中管理事件的信息。
在java中,当事件发生时,会创建一个事件对象实例,并将其传递给实现它的侦听器类的方法;在android中,我注意到listeners类的所有方法都需要一个视图实例作为参数,那么第一个问题是:在android中,当事件发生时,不是创建了一个事件对象实例吗?

我遇到的第二个疑问是阅读以下内容,这里使用属性android:onClick,我可以指定在单击事件发生时要执行的方法,那么问题是:为什么我要指定一个方法?我是否应该指出实现监听器并在特定方法中包含管理特定事件的类?

Android使用回调系统来管理此类事件(单击、触摸等)

例如,当您单击按钮
btnMyButton
时,框架将检查是否有附加的,如果有,则执行其
onClick()
方法

侦听器方法通常采用一个
视图
参数,因此您可以对多个
视图使用同一实例
,并根据受影响的视图调整行为(通常使用
视图.getId()

android:onClick只是一个XML快捷方式,对于小型应用程序来说非常方便。
对于更大的应用程序,我相信它更清晰,更不容易出错

Swing创建事件对象以发送到其侦听器中的方法。遵循这种模式是非常一致的。安卓并非如此一致。它发送一个
视图
,但它发送一个
视图
int
KeyEvent
。这表明Swing将所有内容包装到事件对象中的方法并不是处理事件的唯一方法


android:onClick
是为onClick事件分配回调方法的快捷方式。它假定将在单击的视图的上下文类中查找该方法。通常这是活动的一个子类。当然,API设计人员可能需要一个类名,并在该类中使用某个方法名(例如,
onClick()
)。但是,这并不比使用
setOnClickListener()

要好多少,您在第一句中描述的系统是由Swing使用的,但这肯定不是唯一的方法。请记住,除了接受最有用的答案外,您还可以对任何您认为有用的答案进行投票。但是,通过代码,是否可以像在快捷方式中一样为方法而不是类赋值,还是仅使用快捷方式才可行?@antox您必须将对象发送到`setOnClickListener()。通常,这个对象是从一个匿名的内部类创建的,它基本上实现了您所说的“分配一个方法”。