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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android ,可以使用接口回调来实现两个 Activity 之间的数据传递和通信。下面是一个简单的示例: 首先,在定义接口时,创建一个名为 `DataListener` 的接口,用于定义数据传递的方法: ```java public interface DataListener { void onDataReceived(String data); } ``` 然后,在发送数据的 Activity(Activity A),需要持有一个 `DataListener` 型的引用,并在某个操作时调用接口方法将数据传递给监听者: ```java public class ActivityA extends AppCompatActivity { private DataListener dataListener; public void setDataListener(DataListener listener) { this.dataListener = listener; } private void sendDataToActivityB(String data) { if (dataListener != null) { dataListener.onDataReceived(data); } } } ``` 在接收数据的 Activity(Activity B),需要实现 `DataListener` 接口,并在方法处理接收到的数据: ```java public class ActivityB extends AppCompatActivity implements DataListener { // ... @Override public void onDataReceived(String data) { // 处理接收到的数据 // ... } } ``` 在 Activity B ,可以通过以下方式将自身作为监听者注册到 Activity A : ```java ActivityA activityA = new ActivityA(); ActivityB activityB = new ActivityB(); activityA.setDataListener(activityB); ``` 当 Activity A 调用 `sendDataToActivityB()` 方法发送数据时,Activity B 实现的 `onDataReceived()` 方法将会被触发,并在该方法进行相应的处理。 需要注意的是,在 Android ,Activity 之间的启动和通信通常使用 `Intent` 或 `startActivityForResult()` 方法。接口回调通常用于 Activity 之间的松耦合通信,例如在两个独立的 Activity 进行数据传递和通知。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值