美好的一天,
为了简化我的应用程序,它是这样的:只有一个 Activity
、Fragment A
和 Fragment B
。
在 Fragment A
中,我试图发布一个空的 ScopeModel
对象:
EventBus.getDefault().post(new ScopeModel());
之后在我的日志中出现错误:
D/Event: No subscribers registered for event class com.commons.library.models.search.ScopeModel
D/Event: No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent
但是 fragment B
中有订阅者:
public void onEventMainThread(ScopeModel model){
Toast.makeText(getActivity(), "Event!", Toast.LENGTH_SHORT).show();
}
问:我在哪里使用它来注册和取消注册 EventBus?
EventBus.getDefault().register(this);
EventBus.getDefault().unregister(this);
答:
1) 在 Activity
中:onCreate()
和 onDestroy()
2) 在 Fragment A
中:我不这样做。
3) 在 Fragment B
中:onCreateView()
和 onDestroyView()
我觉得注册/注销有问题,怎么解决?
我简化了我的应用程序结构,一般来说:只有一个 Activity 和很多 fragment ,我正在使用 EventBus 在 fragment 之间进行通信,但只有一点它不起作用,我很困惑 - 为什么?
最佳答案
您在 MainActivity 中缺少此代码:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
关于android - 两个 fragment 之间的 EventBus - 没有注册订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340896/