我最近几天一直在尝试使用Otto,发现它非常好用。但是我遇到了一个问题,我正在尝试从一个片段(Fragment)向活动(Activity)通信。为了简单起见,我只有一个活动来容纳这个片段,在这个片段中我有一个按钮,它只是简单地发布一个事件。
@Inject Bus bus;
...
...
bus.post(new ReadStatusEvent("23"));
在 Activity 中,我有一个“Subscribe”方法。
@Subscribe
public void onReadStatusEvent(ReadStatusEvent event){
Timber.i("sub:"+event.getReadStatusID());
}
这里是事件
public class ReadStatusEvent {
private final String readStatusID;
public ReadStatusEvent(String readStatusID) { this.readStatusID = readStatusID; }
public String getReadStatusID() { return readStatusID; }
}
我正在使用Dagger,所以我的Otto Bus是一个单例,由SimpleModule文件注入。
@Provides @Singleton
Bus provideBus() {
return new Bus(ThreadEnforcer.ANY);
}
我已经整天在做这个,但不知何故Subscribe方法从未被调用。
编辑: 我刚刚尝试使用Android Studio的Otto插件,每当我点击@Subscribe或bus.post(..)时,它会继续搜索但找不到任何东西(至今没有发现任何用法)。我想我在某个地方做错了什么。