首页 > 其他 > 详细

20行代码理解回调机制

时间:2015-08-30 12:58:29      阅读:163      评论:0      收藏:0      [点我收藏+]

最近在学习android的过程中发现view的OnClickListener的回调机制很有趣,就学习回调的使用方法。
首先我们自己来实现一下:
1.定义一个接口用于定义回调的方法,这个接口用于定义在某种情形下需要处理的操作,如监听器接口监听button的点击事件。
OnClickListener.java

public interface OnClickListener{
    public void onClick(String str);
}

2.定义Button组件的类
Button.java

public class Button{
    //声明接口
    OnClickListener mOnClickListener;
    //定义设置监听器的方法,用于其他类绑定监听器到该方法上
    public void setOnClickListener(OnClickListener l){
        //传入的OnClickListener对象用来实例化mOnClickListener
        //接口的实例化相当于抽象类被继承实现后的实例化,传入的l已经对
        //该接口定义的onClick()方法进行了实现
        mOnClickListener = l;
    }
    //该方法用来模拟触发button点击事件。
    public void clickButton(){
        if(mOnClickListener != null){
            mOnClickListener.onClick("button");
        }
    }
}

3.Main.java

public class Main {
    public static void main (String args[]){
        //声明组件
        Button bt = new Button();
        //绑定监听器
            bt.setOnClickListener(new OnClickListener(){//匿名内部类,该类实现了OnClickListener接口的onClick()方法
            public void onClick(String str){
                //回调方法
                System.out.println("hello,i am onclick" + str);
            }
        });
        //点击button按钮,触发回调,相当于view类中的performClick()方法
        bt.clickButton();
    }
}

其实Mian类也可以这样实现:

public class Main implements OnClickListener{
    //实现的方法
    public void onClick(String str){
        System.out.println("hello,i am onclick" + str);
    }
    public static void main (String args[]){
        //声明组件
        Button bt = new Button();
        //绑定监听器,因为主类实现了OnClickLisetener接口,虽然传入的参数要求是OnClickListener对象,但是由于实现,Mian类可以向上转型为OnClickListener对象
        bt.setOnClickListener(this);
        //点击button按钮,触发回调,相当于view类中的performClick()方法,在不同的机制中触发的方式不同。可能由其他类触发
        bt.clickButton();
    }
}

运行的效果如下:
技术分享

总结一下,其实实现一个回调机制就四步:
1.定义回调接口;
2.定义功能类,并在该类中声明回调接口,创建方法用于其他类调用给方法传入接口对象,实现回调;创建触发方法,执行回调接口中的方法;
3.在要使用回调接口的类中实现接口中定义的方法;
4.在要使用回调接口的类中声明功能类,设置监听器;

表述的不是很清楚,如果自己将这段代码实现一遍我想会明白的。欢迎交流。

注:文章原创,完全自由,转载注明出处即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

20行代码理解回调机制

原文:http://blog.csdn.net/hlgyjg/article/details/48103257

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!