您的位置:首页 > 移动开发 > Android开发

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

2016-09-13 16:19 543 查看
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(new
InterFace() {

@Override

public void
show() {

Log.i("测试","接口中的方法show");

//由普通类调用Activity的方法

showMainActivity();

}

@Override

public
String 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("测试","这是普通类调用的方法");
}
}


代码是可以运行的,直接拷过去运行就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息