android中不同类之间的数据通信之接口回调

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);
		
	}
	
}
下面是日志输出



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值