发布网友 发布时间:2022-05-07 08:09
共5个回答
热心网友 时间:2023-10-21 23:48
很多时候,对某个控件实现点击事件的监听,会像下面这样做:
Button btn = new Button(this);按照上面所说的,可以调用接口的方法,但是接口需要一个具体的实现,所以应该知道,setOnClickListener中的参数应该是一个接口
public interface OnClickListener {接口中还有一个onClick方法。既然是回调,再看看这个方法在哪里被调用了
先看setOnClickListener方法
public void setOnClickListener(@Nullable OnClickListener l) {关键是把OnClickListener的对象赋值给了ListenerInfo的mOnClickListener,再看下去
public boolean performClick() {看到在这个叫做performClick的方法中调用了onClick方法,还有另外一个叫做callOnClick的方法也会调用onClick,区别可以去看看源码的说明,这里不详细。其实都是在屏幕接收到点击信号的时候,把数据一层一层的往上传递给framework,由framework来调用。对于了解回调要明白的一点就是,在这个类中,调用的是接口的方法。就是让编译器知道,调用接口方法的时候,去回调设置的OnClickListener子类的对应方法。
热心网友 时间:2023-10-21 23:49
是的,只要是你写的代码但不是你直接调用的,基本都是回调。热心网友 时间:2023-10-21 23:49
是的,用的就是匿名的方式,新建了一个回调函数,然后通过注册监听,当触摸屏幕时,就会执行该方法里面的逻辑代码.其实回调机制,我的理解就是使用了类似于c语言的指针概念.热心网友 时间:2023-10-21 23:48
很多时候,对某个控件实现点击事件的监听,会像下面这样做:
Button btn = new Button(this);按照上面所说的,可以调用接口的方法,但是接口需要一个具体的实现,所以应该知道,setOnClickListener中的参数应该是一个接口
public interface OnClickListener {接口中还有一个onClick方法。既然是回调,再看看这个方法在哪里被调用了
先看setOnClickListener方法
public void setOnClickListener(@Nullable OnClickListener l) {关键是把OnClickListener的对象赋值给了ListenerInfo的mOnClickListener,再看下去
public boolean performClick() {看到在这个叫做performClick的方法中调用了onClick方法,还有另外一个叫做callOnClick的方法也会调用onClick,区别可以去看看源码的说明,这里不详细。其实都是在屏幕接收到点击信号的时候,把数据一层一层的往上传递给framework,由framework来调用。对于了解回调要明白的一点就是,在这个类中,调用的是接口的方法。就是让编译器知道,调用接口方法的时候,去回调设置的OnClickListener子类的对应方法。
热心网友 时间:2023-10-21 23:49
是的,只要是你写的代码但不是你直接调用的,基本都是回调。热心网友 时间:2023-10-21 23:50
1. 肯定是回调机制热心网友 时间:2023-10-21 23:50
是通过回调来把方法暴露出来的
通过匿名内部类实现方法
热心网友 时间:2023-10-21 23:49
是的,用的就是匿名的方式,新建了一个回调函数,然后通过注册监听,当触摸屏幕时,就会执行该方法里面的逻辑代码.其实回调机制,我的理解就是使用了类似于c语言的指针概念.热心网友 时间:2023-10-21 23:50
1. 肯定是回调机制热心网友 时间:2023-10-21 23:51
是通过回调来把方法暴露出来的
通过匿名内部类实现方法