【发布时间】:2016-11-02 10:13:18
【问题描述】:
假设 Activity 有 NavigationView 和 3 个项目 {timeline , profile,programs}
所以我们有3个片段
我遵循 MVP 模式,每个片段都有它的演示者,对于 DI 我使用 Dagger2
我想在导航视图中单击每个项目时将每个演示者注入活动
我为每个演示者创建一个这样的模块和组件
@Module()
public class FooPresenterModule {
private final FooFragment view;
public FooPresenterModule(FooFragment view) {
this.view = view;
}
@FragmentScope
@Provides
public FooFragment provideView() {
return view;
}
}
和组件
@FragmentScope
@Component(modules =FooPresenterModule.class)
public interface FooPresenterInjector {
void inject(MainActivity mainActivity);
}
在Activity中按字段注入presenter ->
@Inject TimelinePresenterInjector mTimeLinePresenter;
@Inject ProfilePresenterInjector mProfilePresenter;
@Inject ProgramPresenterInjector mProgramPresenter;
并有 3 个函数用于替换片段 ->
private void replaceTimelineFragment() {
TimeLineFragment fragment = TimeLineFragment.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
DaggerTimelinePresenterInjector.builder()
.timeLinePresenterModule(new TimeLinePresenterModule(fragment))
.build().inject(this);
}
替换配置文件片段功能->
private void replaceProfileFragment() {
ProfileFragment fragment = ProfileFragment.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
DaggerProfilePresenterInjector.builder()
.timeLinePresenterModule(new ProfilePresenterModule(fragment))
.build().inject(this);
}
但是当我重建项目时出现错误
这是错误的模式吗? 如果是,在活动中注入不同演示者的最佳模式是什么?
【问题讨论】:
标签: java android dependency-injection dagger