我在使用匕首2時遇到了問題。我非常喜歡Dagger 1和Dagger 2之間所做的更改,但今天我撞上了牆壁。匕首2 - 在兩個活動之間共享實例
問題在於範圍。
我正在關注MVP架構。我有兩個活動(一個列表和詳細信息),我希望他們兩個分享一個主持人。其原因是,演示者處理分頁,細節視圖有一個視圖分頁器,我希望在刷過分頁器時能夠在細節視圖中保持分頁。
目前我有兩個組成部分:ItemComponent和AppComponent
@ApplicationScope
@Component(modules = {AppModule.class, UIModule.class, DataModule.class})
public interface AppComponent extends AppGraph {
//Application Scoped dependencies
}
@ItemScope
@Component(
dependencies = AppComponent.class,
modules = ItemModule.class)
public interface ItemComponent {
void inject(final ItemDetailsActivity itemDetailsActivity);
void inject(final ItemDetailsFragment itemDetailsFragment);
void inject(final ItemListActivity itemListActivity);
}
的ItemComponent具有一個模塊:ItemModule 的ItemModule提供ItemPresenter
@Module
public class ItemModule {
private ItemDetailsActivity itemDetailsActivity;
private ItemDetailsFragment itemDetailsFragment;
private ItemListActivity itemListActivity;
public ItemModule(final ItemDetailsActivity itemDetailsActivity) {
this.itemDetailsActivity = itemDetailsActivity;
}
public ItemModule(final ItemDetailsFragment itemDetailsFragment) {
this.itemDetailsFragment = itemDetailsFragment;
}
public ItemModule(final ItemListActivity itemListActivity) {
this.itemListActivity = itemListActivity;
}
// The presenter that handles the pagination
@Provides
@ItemScope
public ItemListPresenter provideItemListPresenter(final ItemService itemService) {
return new ItemListPresenter(itemService);
}
}
所有這些都有應付ItemScope
但在這兩個活動中,我需要初始化組件和模塊,因此提供了演示者的新實例。我在StackOverflow上已經閱讀了多個答案,我發現應該使用Component依賴和/或SubComponent來解決這個問題,但是我一直無法使它工作。
在此先感謝!
既然(極大地簡化了)同時不能有2個有效的Activity派生類的聲明,這是什麼意思? – Selvin
這不是我的目標。我的目標是讓ListPresenter的一個實例可以從ListActivity以及DetailsActivity訪問。 – palmithor