接口回调

接口回调的实现方式,在我看来,大概分为以下两种情形:
第一种方式:定义内部接口(我们通过两个类A类和B类即可实现)

A类:此类中存在我们想要获取的信息
1.定义内部接口 CallBack
2.接口内定义抽回调方法 onCallBack();
3.定义接口的引用 CallBack listener;
4.定义接口注册方法 setOnCallBack(CallBack listener){
this.listener = listener;}

public class A extends Activity {
    //③定义接口引用
    CallBack listener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //④定义接口注册方法
    public void setOnCallBack(CallBack listener) {
        this.listener = listener;
    }

    //①定义内部接口
    public interface CallBack {
        //②定义回调方法(可以根据需要设置我们需要回调的参数)
        void onCallBack(String result);
    }
}

B类:此类用来从A类获取信息
1.获取A类实例
2.调用A类中注册接口方法,传递接口对象给A
3.获取回调结果String result(可以根据需要,设置回调内容)

public class B extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        //①实例化A对象
        A a = new A();
        //②调用A类中注册接口方法,传递接口对象给A
        //到此为止,我们就能够从回调方法onCallBack中取得我们需要的内容,此处我们回调的是一个字符串
        a.setOnCallBack(new A.CallBack() {
            @Override
            public void onCallBack(String result) {

            }
        });
    }
}

第二种方式:定义公共接口(我们需要通过一个接口,两个类A类和B类来实现)

接口CallBack:定义回调方法

public interface CallBack {
    void onCallBack(String result);
}

A类:数据的提供方

public class A extends Activity {
    //①声明接口引用
    CallBack listener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listener.onCallBack("来追我啊!");
    }
    //②定义接口注册方法
    public void setOnCallBack(CallBack listener) {
        this.listener = listener;
    }

}

B类:数据的获取方

public class B extends Activity {
    public final String TAG = getClass().getSimpleName();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        //①实例化A类
        A a = new A();
        //②调用A类注册接口的方法
        a.setOnCallBack(new CallBack() {
            @Override
            public void onCallBack(String result) {
                Log.i(TAG, result);
            }
        });
    }

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值