我想问你一些关于 android 编程中管理事件的信息。
在java中,当事件发生时,会创建一个Event对象实例,并将其传递给实现它的监听类的方法;在android中我注意到listeners类的所有方法都需要一个View实例作为参数,那么第一个问题是:当一个事件发生时,在android中,是不是创建了一个Event对象实例?
我遇到的第二个疑问是阅读以下http://developer.android.com/training/basics/firstapp/starting-activity.html,这里用属性 android:onClick 可以指定点击事件发生时要执行的方法,那么问题来了:为什么要指定方法?我不应该指出实现侦听器并在管理该特定事件的特定方法内部的类吗?
2 回答
Android 使用回调系统来管理这些事件(点击、触摸等)
例如,当您单击一个按钮btnMyButton
时,框架将检查是否有一个OnClickListener
附加到它,如果有,则执行它的onClick()
方法。
侦听器方法通常带有一个View
参数,因此您可以将同一个实例用于多个Views
,并根据受影响的视图调整行为(通常使用View.getId()
)
这android:onClick
只是一个 XML 快捷方式,可以方便地用于小型应用程序。对于更大的应用程序,我相信它更清晰,更不容易出错View.setOnClickListener()
。
Swing 创建 Event 对象以发送到其侦听器中的方法。遵循这种模式是非常一致的。Android不是那么一致。它发送onClick()
一个View
,但它发送onKey
一个View
,int
和KeyEvent
。这表明 Swing 将所有内容包装在 Event 对象中的方法并不是处理事件的唯一方法。
android:onClick
是为 onClick 事件分配回调方法的快捷方式。它假定将在单击的视图的上下文类中查找该方法。通常这是 Activity 的子类。当然,API 设计者可能需要一个类名,并在该类中假定一个特定的方法名(例如onClick()
)。但是,这并不比使用setOnClickListener()
.