我想在2活动之间进行沟通。两者都是register()和unregister()方法:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
当我点击列表(项目选择)时,ActivityB启动。 ActivityB的目的是更新一些信息,并将这些新信息发送给ActivityA;所以在ActivityB中我打电话:
EventBus.getDefault().post(new MyNewEvent(bla bla bla));
在我的ActivityA中,我有这个方法:
public void onEvent(MyNewEvent event) {
...
}
不幸的是,从未调用此方法onEvent。为什么?因为当ActivityB启动时,调用ActivityA中的方法onStop(),所以完成了对总线的取消注册...
那么如何通过使用EventBus在这两个Activity之间进行通信?
谢谢你们!
答案 0 :(得分:5)
你可以通过使用Sticky Events来实现这一点。
http://greenrobot.org/eventbus/documentation/configuration/sticky-events/
基本上,您在活动B上发布了一个粘贴.postSticky()
的事件,当活动A再次注册时,它会自动收到该粘性事件。
但正如@ jlhonora的回答所述,startActivityForResult可能更适合您的需要。
答案 1 :(得分:3)
正如您已经想到的那样,您无法使用EventBus在两个活动之间进行通信,因为您无法同时注册事件。
startActivityForResult模式更适合您尝试实现的目标:http://developer.android.com/reference/android/app/Activity.html#StartingActivities