android中不同类之间的数据通信之接口回调
众所周知,在android中不同类之间的数据传递方式有许多,例如使用application共享变量,存放本地数据库,sharepreference,intent等等,我们一期介绍的是在android开发中经常使用到的---接口回调机制来实现不同类之间的数据通信。
public class MainActivity extends ActionBarActivity {
private Button btTest;
private TestClass testClass=new TestClass();//初始化类对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化方法
}
private void init() {
btTest = (Button) findViewById(R.id.bt_test);
btTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {//通过setData方法,将数据传递给TestClass类
testClass.setData("我是参数一", 2, "我是参数三");
}
});
testClass.setOnCallBackListener(new TestClass.OnCallBackListener() {
@Override
public void onCallBackListener(String str) {//设置接口来接受TestClass类中回调回来的参数
Log.d("hainan", "hainan===TestClass类传来的数据"+str);
}
});
}
}
public class TestClass {
private String myTestOne;
private int myTestTwo;
private String myTestThree;
private String myTestFour="回调参数";
private OnCallBackListener listener;
//拿到前面页面传来的数据
public void setData(String testOne,int testTwo,String testThree){
this.myTestOne=testOne;
this.myTestTwo=testTwo;
this.myTestThree=testThree;
Log.d("hainan","hainan==="+"参数一"+myTestOne+"参数二"+myTestTwo+"参数三"+myTestThree);
listener.onCallBackListener(myTestFour);
}
//向外暴露接口
public void setOnCallBackListener(OnCallBackListener listener){
this.listener=listener;
}
//创建一个回调接口
public interface OnCallBackListener{
public void onCallBackListener(String str);
}
}
我们还可以通过利用构造函数的方式,省去创建setOnCallBackListener方法
public class MainActivity extends ActionBarActivity {
private Button btTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
btTest = (Button) findViewById(R.id.bt_test);
btTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
TestClass testClass=new TestClass(new OnCallBackListener() {
@Override
public void onCallBackListener(String str) {
Log.d("hainan", "hainan===TestClass类中传递过来的参数"+str);
}
});
testClass.setData("我是参数一", 2, "我是参数三");
}
});
}
}
public class TestClass {
private String myTestOne;
private int myTestTwo;
private String myTestThree;
private String myTestFour="回调参数";
private OnCallBackListener listener;
public TestClass(OnCallBackListener listener) {
super();
this.listener=listener;
}
//拿到前面页面传来的数据
public void setData(String testOne,int testTwo,String testThree){
this.myTestOne=testOne;
this.myTestTwo=testTwo;
this.myTestThree=testThree;
Log.d("hainan","hainan==="+"参数一"+myTestOne+"参数二"+myTestTwo+"参数三"+myTestThree);
listener.onCallBackListener(myTestFour);
}
//创建一个回调接口
public interface OnCallBackListener{
public void onCallBackListener(String str);
}
}
下面是日志输出