gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:23:36 24 4
gpt4 key购买 nike

美好的一天,

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com