订阅者不会从eventBus

时间:2017-11-26 11:31:48

标签: android greenrobot-eventbus

我想将eventbus用于我的应用程序。为此,我将eventbus lib添加到我的gradle.then我创建了一个这样的类:

public class UserEvent {

private User eUser; // esup user model
private String domain;
private String securitySrv;
private Cookie cookie;
private int totalUsersSecurity;
private ExecutorService executorService;
// constructor and getter

然后进入主片段我添加了这些行,最后我发布了我的消息:

UserEvent userEvent = new UserEvent(eUser, domain, securitySrv, cookie,
totalUsersSecurity, executorService);
EventBus.getDefault().post(userEvent);

进入主片段我有ViewPager这个寻呼机加载了另一个名为 AllUsersFragment 的片段。

在AllUsersFragment中,我首先注册了eventbus:

EventBus bus = EventBus.getDefault();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_layout, container, false);
    bus.register(this);
    return rootView;
}

然后我写了这个方法:

    @Subscribe
public void onEvent(UserEvent event) {
    securitySrv = event.getSecuritySrv();
    cookie = event.getCookie();
    totalUsersSecurity = event.getTotalUsersSecurity();
    executorService = event.getExecutorService();

}

进入我的resume方法我想通过构造函数将UserEvent从eventbus传递到另一个类:

@Override
public void onResume() {
    super.onResume();
    paginator = new Paginator(getContext(),totalUsersSecurity,executorService);

}

但totalUsersSecurity和executorService为空?虽然这些变量是在主要片段填充的。在android工作室的调试模式中,public void onEvent(UserEvent event)永远不会被调用。 谢谢你的帮助?

我正在使用带有gradle:3.0.0'

的android studio 3

2 个答案:

答案 0 :(得分:0)

您是否已在OnStart()

上注册了该活动
 @Override
 public void onStart() {
     super.onStart();
     EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
     super.onStop();
     EventBus.getDefault().unregister(this);
 }

答案 1 :(得分:0)

最后我解决了这个问题。根据{{​​3}}

我只是使用粘性事件。现在我收到了我的帖子