I would like to communicate between 2 Activity. Both are the register() and the unregister() methods:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
The ActivityB is started when I click in my list (item selection). The aim of ActivityB is to update some informations, and to send these new informations to ActivityA; so in ActivityB I call:
EventBus.getDefault().post(new MyNewEvent(bla bla bla));
In my ActivityA I have this method:
public void onEvent(MyNewEvent event) {
...
}
Unfortunately this method onEvent is never called. Why ? Because when ActivityB starts the method onStop() in ActivityA is called, so the unregister with the bus is done...
So how to communicate in this case between these 2 Activity by using EventBus ?
Thank you guys!
You can actually do that by using Sticky Events.
http://greenrobot.org/eventbus/documentation/configuration/sticky-events/
Basically, you post an event as sticky with .postSticky()
on your Activity B and when Activity A is registered again, it will automatically receive that sticky event.
But as stated in @jlhonora's answer, startActivityForResult might be better suited for your need.
As you already figured out, you won't be able to use EventBus to communicate between two activities, since you can't have both registered for events at the same time.
The startActivityForResult pattern is much better suited for what you're trying to achieve : http://developer.android.com/reference/android/app/Activity.html#StartingActivities
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With