过去几天我一直在和 Otto 一起玩,这真是太棒了。但是,我遇到了一个问题,我正在尝试从 Fragment 与 Activity 进行通信。为了简单起见,我有一个 Activity 来保存 Fragment,并且在 Fragment 中我有一个 Button,它只是发布一个事件。
@Inject Bus bus;
...
...
bus.post(new ReadStatusEvent("23"));
在活动中,我有一个订阅方法。
@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(..) 时,它都会继续搜索但没有找到任何东西(到目前为止没有找到任何用法)。我想我在某个地方做错了什么。