Android自学 -- 回调函数

Android自学 – 回调函数

自定义界面时使用到了回调函数实现类似Android的点击事件的函数,即使用时只要实现onClick方法就行了。

https://blog.csdn.net/wojiaotianyong/article/details/70948632
(回调函数就是在一个不确定实现的方法METHOD中用interface或者它的抽象方法留个口子,留给具体调用者(调用前边那个不确定的方法METHOD)在调用时提供具体实现来补上那个口子。从而达到更灵活地编码的目的,也大大减少了子类的使用)

1.声明一个方法接口

    public interface OnSatelliteMenuItemClickListener
    {
        void onClick(View view, int pos); // 这个是最终在调用类里实现的调用的
    }

2.声明注册方法(接受自定义组件调用者传过来的回调方法的)

在回调的内部注册

	public OnSatelliteMenuItemClickListener mMenuItemClickListener;
    public void setOnSatelliteMenuItemClickListener(OnSatelliteMenuItemClickListener l){
        mMenuItemClickListener = l;
    }

这里注册方法名叫setOnSatelliteMenuItemClickListener,类似使用Android点击事件是需要先注册监听器setOnClickListener,这里也是一样,使用时需要先注册,后面会讲到

3.在内部调用回调

你需要在哪里使用到这个回调。
就比如说,在我的例子中,当按钮被点击时,会调用我定义的接口方法onClick(View view, int pos);但是这个onClick方法到底里面是怎么写的我还不知道,我只需要在我自定义的界面中调用就好了,具体调用了之后要干什么,需要你自己去定义,就像android的按钮点击一样,具体的实现要在onClick(View view)中自己写。

		childView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mMenuItemClickListener != null)
                        mMenuItemClickListener.onClick(childView, pos);

4.具体接口函数的实现

在最终需要使用的时候,实现一下,参考android的点击事件

        SatelliteMenu s = findViewById(R.id.satelliteMenu); //我自定义的控件
        // 注册回调,将具体的实现函数传到自定义控件那里,让他知道我调用onClick时,具体需要做什么
        s.setOnSatelliteMenuItemClickListener(new SatelliteMenu.OnSatelliteMenuItemClickListener() {
            @Override
            public void onClick(View view, int pos) {
            	// 具体实现
                Toast.makeText(MainActivity.this,pos+""+view.getTag(),Toast.LENGTH_SHORT).show();
            }
        });
硬要理解的话,
  1. 我对朋友讲,这个月我有一个计划,这个计划我还没确定是什么,但是名字想好了,叫sb计划。
  2. 我决定,这个计划具体做什么有你来定,你想好了可以通过电话,把这个sb计划内容告诉我。
  3. 这个sb计划具体定在这个月15号执行(触发事件,方法在哪使用)。
  4. 朋友想好了,把sb计划通过电话告诉我。这样当我15号执行sb计划时,就知道要干什么了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值