Android中接口的回调,Activity或Fragment与普通类之间的互相调用

来源:互联网 发布:淘宝热搜词在哪里看 编辑:程序博客网 时间:2024/04/29 08:44

Android中接口的回调,Activity或Fragment与普通类之间的互相调用

废话不多说,你查回调说明你遇到了相同的问题,这里是我根据我的理解做的最简单的回调Demo,Activity与普通类之间的回调,下边有代码,拷过去直接运行

1.创建一个接口

/** 对外提供状态信息的接口 */
public interface InterFace {
    public void show();
    public String getData(String str);
}

 

2.在普通类CallBack中定义接口

public  InterFace ife;

3.在普通类CallBack中定义接口对象入住
public void setCallBackListener(InterFace ife){
    this.ife= ife;
}

4.在普通类CallBack中定义一个普通方法,用于调用Activity中的方法

public void showData(){
    Log.i("测试","-------11111111111111------");
    str = "启迈斯";

    //调用接口中的方法,接口中的方法在哪个地方实现,就调用那个方法
    // 这里接口是在MainActivity中实现,所以调用MainActivity中的那个接口实现的方法
    
ife.show();     
    ife.getData(str);
}

6.Activity中定义Callback,并实例化

   Callbackmy  cb= new Callback();

7.创建监听,用于监听是否普通类要调用该方法

cb.setCallBackListener(newInterFace() {
    @Override
    public voidshow() {
        Log.i("测试","接口中的方法show");

        //由普通类调用Activity的方法
        
showMainActivity();
    }
    @Override
    publicString getData(String str) {
        Log.i("测试","接口中的方法  "+ str);
        return null;
    }
});

8.Activity创建一个普通方法,供普通类Callbackmy  调用

//这是Activity中的方法,由普通类调用
public void showMainActivity(){
    Log.i("测试","这是普通类调用的方法");
}

9.这里逻辑已经完成,详情看DEMO

下边是代码

这是接口
/**
 * Created by lenovo on 2016/9/13.
 */
public interface InterFace {
    public void show();
    public String getData(String str);
}

这是一个普通类

import android.util.Log;/** * Created by lenovo on 2016/9/13. */public class Callback{    public  InterFace ife;    //用于向Activity传递的参数    String str;    //定义接口入住对象    public void setCallBackListener(InterFace ife){        this.ife = ife;    }    /**     * Activity 中调用这个方法,实现Activity调用普通类方法     */    public void showData(){        Log.i("测试","这里是有Activity调用");        str = "启迈斯";        //调用接口中的方法,接口中的方法在哪个地方实现,就调用那个方法        // 这里是在MainActivity中,所以调用MainActivity中的那个接口实现的方法        ife.show();        ife.getData(str);    }}

这是MainActivity

import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity{    Callback cb;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        cb = new Callback();        cb.setCallBackListener(new InterFace() {            @Override            public void show() {                Log.i("测试","接口中的方法show");                //由普通类调用Activity的方法                showMainActivity();            }            @Override            public String getData(String str) {                Log.i("测试","这是由普通类传过来的值  " + str);                return null;            }        });        cb.showData();    //调用普通类中的方法        setContentView(R.layout.activity_main);    }    //这是Activity中的方法,由普通类调用    public void showMainActivity(){        Log.i("测试","这是普通类调用的方法");    }}

 

代码是可以运行的,直接拷过去运行就行了

0 0
原创粉丝点击