码迷,mamicode.com
首页 > 其他好文 > 详细

20行代码理解回调机制

时间:2015-08-30 12:59:28      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:android   回调机制   监听机制   

最近在学习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行代码理解回调机制

标签:android   回调机制   监听机制   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!