问题描述
我想使用otto事件总线将数据从活动发送到我的片段
根据我的活动:
@Produce
public EventAvailableEvent produceEvent() {
return new EventAvailableEvent(mEvent);
}
分割:
@Subscribe
public void onProvideEvent(EventAvailableEvent event) {
mEvent = event.getEvent();
}
我正在使用匕首2注入总线
@Inject Bus mBus;
private void injectDepedencies() {
App.from(getActivity()).getComponent().plus(new MyModule(mEvent));
}
我的模块取决于事件总线返回的事件。
现在,我要做的是先注入主要组件,寄存器总线,然后注入子组件
AppComponent appComponent = App.from(getActivity()).getComponent();
appComponent.inject(this)
mBus.register(this)
SubComponent subComponent = appComponent.plus(new MyModule(mEvent));
subComponent.inject(this)
我正在寻找一种更好的方法,谢谢
1楼
由于我猜您的SubComponent是AppComponent的子组件,因此它继承了它提供的所有项。
这种关系允许子组件实现在声明时从其父项继承整个绑定图。
这意味着,您只需要踢出前2行,而您只需要创建SubComponent。
App.from(getActivity()).getComponent().plus(new MyModule(mEvent)).inject(this);
mBus.register(this);
实际上就足够了。