【发布时间】:2018-07-20 16:29:51
【问题描述】:
我有两种片段。其中一个是ListFragment,另一个是ListWithFilterFragment,即ListWithFilterFragment extend ListFragment。我也有两个演示者来处理这些片段ListWithFilterPresenter extend ListPresenter。所以我在 Dagger 中为演示者和单独的组件定义了单独的模块。我想向这些片段注入正确的演示者,但出现错误
这是ListFragment:
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) 错误:如果没有 @Provides- 或 @Produces-annotated.method.com.sober.appModules.List.presenter.ListPresenter,则无法提供 com.sober.appModules.List.presenter.ListPresenter被注射在 com.sober.appModules.List.ui.ListFragment.presenter com.sober.appModules.List.ui.ListWithFilterFragment 在 com.sober.appModules.List.injection.ListWithFilterComponent.inject(fragment) 处注入
【问题讨论】:
-
createPresenter 是基类中的方法吗?
-
是的,这是抽象基类中的抽象方法
标签: java android generics inheritance dagger-2