簡體   English   中英

Android:用Greenrobot EventBus如何在2個Activity之間進行通信?

[英]Android: with Greenrobot EventBus how to communicate between 2 Activity?

我想在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之間進行通信?

感謝你們!

你可以通過使用粘性事件來實現這一點。

http://greenrobot.org/eventbus/documentation/configuration/sticky-events/

基本上,您在活動B上使用.postSticky()發布一個粘性事件,當活動A再次注冊時,它將自動收到該粘性事件。

但正如@ jlhonora的回答所述,startActivityForResult可能更適合您的需求。

正如您已經想到的那樣,您將無法使用EventBus在兩個活動之間進行通信,因為您不能同時注冊兩個活動。

startActivityForResult模式更適合您要實現的目標: http//developer.android.com/reference/android/app/Activity.html#StartingActivities

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM