我正在开发一个使用EventBus
向客户提供消息的Android项目。我使用下面的代码行初始化我的总线并注册活动。
bus = new EventBus();
bus.register(this);
我还创建了一个名为onEvent的方法但是我遇到了以下错误:
Subscriber "my_activity" has no methods called onEvent.
许多线程建议使用:
EventBus.getDefault().register(this);
创建一个方法调用onEventMainThread
并没有真正帮助。问题是为什么在创建方法onEvent
之后,IDE会告诉该方法永远不会被使用。
有人认出这个错误吗?
答案 0 :(得分:2)
您应该使用:
EventBus.getDefault().register(this);
我不确定为什么这样做没有用,因为你没有发布你的onEvent方法签名。但它可能是你用过的名字。应该是这样的:
public onEvent(EventObject event){...}
您的onEvent方法应该具有名称" onEvent"使用单个参数。基本上,GreenRobot EvenBus的工作方式是查找名为onEvent的方法,该方法采用正在发送的事件的参数类型。
因此,例如,如果要发送对象类型FooEvent,请执行此操作。
public void onEvent(FooEvent event){
// handle event
}
EventBus.getDefault().register(this);
EventBus.getDefault().post(new FooEvent());
希望有所帮助。如果没有,请发布您的onEvent方法签名。如果可以,我会帮忙。祝你好运。答案 1 :(得分:-1)
感谢@startoftext的回答。 我尝试过但不是很有帮助。我终于切换到OTTO,其方法与EventBus相同(注册一个对象,在总线上发布...)。
Bus bus = new Bus();
bus.register(context);
bus.post(new MyObject(xxx));
所以EventBus的区别在于事件方法。添加@Subscribe(如下所述)。
@Subscribe
public void onAnswerEvent (MyObject mObject) {
//do something
}