接口回调

来源:互联网 发布:udp端口怎么测试 编辑:程序博客网 时间:2024/06/03 07:20

接口回调的实现方式,在我看来,大概分为以下两种情形:
第一种方式:定义内部接口(我们通过两个类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 0
原创粉丝点击