android - 两个 fragment 之间的 EventBus - 没有注册订阅者

标签 android android-fragments

美好的一天,

为了简化我的应用程序,它是这样的:只有一个 ActivityFragment AFragment 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/

相关文章:

android - Android 中的短信文本计数器

android-ndk 添加静态库到 android.mk

android - 使用抽屉导航管理 fragment 生命周期

java - Android:OnClickListener 在初始加载时无响应?

android - 如何在android中以全屏模式显示电池图标和Wifi图标?

android - 在 fragment 中使用FragmentManager?

android - 如何将库项目中的可绘制对象引用到android中的主项目布局中?

java - 在 Intents 中传递 FirebaseFirestore 引用

java - Android XML fatal error

java - fragment Z 顺序在方向改变时改变