Кинжал 2 + Ивентовый автобус

Я хочу отправить данные из активности в свой фрагмент, используя шину событий 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)

Я ищу лучший способ для этого, спасибо


person Miguel Fermin    schedule 19.10.2015    source источник


Ответы (1)


Поскольку я предполагаю, что ваш SubComponent является подкомпонентом AppComponent, он наследует все предоставленные ему элементы. Описано здесь

Эта связь позволяет реализации подкомпонента наследовать весь граф привязки от своего родителя при его объявлении.

Это означает, что вы можете просто выкинуть первые 2 строки и вам просто нужно создать свой подкомпонент.

App.from(getActivity()).getComponent().plus(new MyModule(mEvent)).inject(this);
mBus.register(this);

На самом деле хватило бы.

person David Medenjak    schedule 27.11.2015