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