什么调用Android View.OnClickListener API方法?

时间:2018-06-16 23:58:48

标签: java android oop onclicklistener

我已经学习了大约2到3年的OOP,但我仍然对界面感到困惑。

在Java中,例如有一个名为View.OnClickListener的接口。 现在我知道实现这个接口的类必须为它的抽象方法提供body,但是我没有得到的是它在API文档中写的是在单击视图时调用onClick方法。 / p>

那么谁叫这个方法?是否有任何其他类实现接口,然后在单击视图时以某种方式调用该方法?

链接(https://developer.android.com/reference/android/view/View.OnClickListener

2 个答案:

答案 0 :(得分:1)

这些方法由Android框架本身调用。这是框架代表您做的有用的事情之一,因此您不需要解释原始用户手指输入并找出构成“点击”的内容!

来自https://developer.android.com/guide/topics/ui/ui-events(我的重点):

  

在用于构成布局的各种View类中,您可能会注意到几种对UI事件有用的公共回调方法。 当在该对象上发生相应的操作时,Android框架会调用这些方法

具体来说,对于onClick,同一页说:

  

当用户触摸项目(处于触摸模式时)或使用导航键或轨迹球聚焦项目并按下合适的“输入”键或按下轨迹球时调用此方法。

答案 1 :(得分:1)

你可能对界面的困惑比你想象的要少得多。

基本上,像Android的视图框架,经典的Java Swing,JavaFX,Eclipse SWT等GUI框架都是大而复杂的 1 。但他们都通过将应用程序“颠倒”来工作。而不是您的应用程序代码控制一切,框架是可控的。您的应用程序注册了一堆监听器或“回拨”。然后它控制着对框架的控制,并等待回叫做某事。

GUI框架将有一个主“事件线程”,它读取来自设备的低级事件流(点击和从鼠标移动,或触摸屏事件,按键和键盘上的释放等)。对于每一个,它将低级事件映射到应用程序的相应部分,然后调用您的应用程序来说出已发生的事情。

假设Android用户在屏幕上点击她的手指。该框架将触摸屏事件的物理屏幕位置转换为应用程序某些“组件”的虚拟屏幕位置。如果该组件是一个按钮,并且您(之前)已为该按钮注册OnClickListener,则框架将找到该按钮,并调用侦听器的onclick()方法来告诉您的应用程序“刚刚点击了这个按钮“。

这一切都相当简单而优雅......并且声音很好。但是你的代码和框架之间的关系是你所期望的那样。

1 - 对于大多数人来说完全理解太复杂了。事实上,你并不需要来完全理解它们才能使用它们。