关于EventBus在Fragment中使用时的注意事项

在fagment中使用,由于项目中一般我们都会使用BaseFragment等基类,而Context也是作为基类的protected变量初始化,方便在其他地方获取context。但是在EventBus初始化中,register()方法传入的是一个Object,而不必须是Context,如果将基类的Context传入,就会导致应用直接崩溃,报错如下

Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.shawnway.nav.app.chb.module.MainActivity and its super classes have no public methods with the @Subscribe annotation

 

错误使用如下:

EventBus.getDefault().register(mContext);
EventBus.getDefault().unregister(mContext);

 正确使用

EventBus.getDefault().register(this);
EventBus.getDefault().unregister(this);

 

再来简单回顾一下EventBus最基本的使用步骤:

 

1.注册:

EventBus.getDefault().register(obj);

2.处理方法:

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event event) {
   //处理逻辑
}

3.发送事件:

 EventBus.getDefault().post(new Event());

4.解绑:

EventBus.getDefault().unregister(obj);

 

 

 

 

 

你可能感兴趣的:(Android,个人学习记录)