我有两种碎片。其中之一是
ListFragment
另一个是
ListWithFilterFragment
那个
ListWithFilterFragment extend ListFragment
. 我还有两个演示者来演示这些片段
ListWithFilterPresenter extend ListPresenter
. 所以我为presenter定义了单独的模块,并在Dagger中定义了单独的组件。我想将正确的演示者注入到这些片段中,但出现了错误
这是
列表片段
:
public class ListFragment<V extends ListView> extends BaseFragment<V, ListPresenter<V>> implements ListView {
@Inject
ListPresenter presenter;
@NonNull
@Override
public ListPresenter createPresenter() {
DaggerListComponent.builder().build().inject((ListFragment<ListView>) this);
return presenter;
}
这是
ListWithFilterFragment
:
public class ListWithFilterFragment extends ListFragment<ListWithFilterView> implements ListWithFilterView {
@Inject
ListWithFilterPresenter presenter;
@NonNull
@Override
public ListWithFilterPresenter createPresenter() {
DaggerListWithFilterComponent.builder().build().inject(this);
return presenter;
}
}
这是
ListComponent
:
@Singleton
@Component(modules = {ListPresenterModule.class,
ListInteractorModule.class})
public interface ListComponent {
void inject(ListFragment<ListView> fragment);
}
这是
ListWithFilterComponent
:
@Singleton
@Component(modules = {ListWithFilterPresenterModule.class,
ListInteractorModule.class})
public interface ListWithFilterComponent {
void inject(ListWithFilterFragment fragment);
}
和我的演示者模块
@Module
public class ListWithFilterPresenterModule {
@Provides @NonNull @Singleton
public ListWithFilterPresenter providePresenter(ListInteractor interactor) {
return new ListWithFilterPresenter(interactor);
}
}
@Module
public class ListPresenterModule {
@Provides @NonNull @Singleton
public ListPresenter providePresenter(ListInteractor interactor) {
return new ListPresenter(interactor);
}
}
错误:(16,10)错误:com。未醉appModules。列表节目主持人如果没有对@Provides或@products进行注释,则无法提供ListPresenter。方法通用域名格式。未醉appModules。列表节目主持人ListPresenter被注入
通用域名格式。未醉appModules。列表用户界面。ListFragment。节目主持人
通用域名格式。未醉appModules。列表用户界面。ListWithFilterFragment在com中注入。未醉appModules。列表注射ListWithFilterComponent。注入(片段)