我希望使用Dagger 2来实现MVP模式。因此我有这个场景,每个View
都有自己的Component
,例如MyFragment
有一个如下的组件:
@PerFragment @Component(dependencies = ActivityComponent.class, modules = MyFragmentModule.class)
public interface MyFragmentComponent {
void inject(MyFragment fragment);
}
在MyFragmentModule
中,我提供了一个Presenter和一个Model,它们将被用于MyFragment
中。
@Module public class MyFragmentModule {
@Provides @PerFragment public MyPresenter providePresenter() {
return new MyPresenter();
}
@Provides @PerFragment public Model provideModel() {
return new Model();
}
}
现在我正在向
MyFragment
中注入组件:public class MyFragment extends Fragment{
@Inject MyPresenter presenter;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
component = DaggerMyFragmentComponent.builder()...build();
component.inject(this);
}
}
此外,MyPresenter
的样子就像这样:
public class MyPresenter {
@Inject Model model;
}
问题
我不知道如何在我的Presenter中注入Model
。我不想像在MyFragment
中那样注入一个组件。
有没有其他方法可以实现这种方式?