参考 只是写了最简单和最常用的用法。 1,在哪个界面 接受就要在哪个页面注册 2,接受数据。 3,发送数据(如果这个页面只是负责发送数据,就没必要注册、) 4,定义实体类(用于发送和接受)
一,前提
compile 'org.greenrobot:eventbus:3.0.0'场景: 页面A—>页面B—>页面C 1,A通过B跳到C。如果是A—>B 当B 改变数据。返回A也要更改数据。这个时候,我们通常使用回调。 2, 那么。当A—>B—>C 问题:当C改变时,返回后要求改变A的数据。 这时候通过回调是不能实现的。B在中间呢。(。。。)至少我无法实现、、、、
步骤: 1,C页面:发送数据给A。 这个时候不要考虑B了。
//发送事件给A String msg="C页面的数据"; EventBus.getDefault().post(new EventBusInfo(a));2,A页面接受
//初始化。。。 EventBus.getDefault().register(this);//在当前界面注册一个订阅者 //把这个方法复制过去。直接敲不出来 @Subscribe public void onEventMainThread(EventBusInfo event){ //收到事件后。要做的逻辑操作。 event.getMsg();//这个就是 "C页面的数据" }3,忘记了一个步骤:他们之前传输数据的桥梁 也就是 实体类或者 是事件。
public class EventBusInfo { private String msg; public EventBusInfo(String msg) {//事件传递参数 this.msg = msg; } public String getMsg() {//取出事件参数 return msg; } public void setMsg(String msg) { this.msg = msg; } }这里需要注意的是:每两个页面只能有一个实体类 比如:A–B 是UserInfo 实体类作为桥梁 那么:A–C就不能用这个实体类了。要新建一个。
最后记得取消注册
@Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }