我尝试创建MVP + dagger2
我创建了模型 moudule:
@Module
class ModelsModule {
@Provides
BasketModel provideBasketModel() {
return new BasketModel();
}
@Provides
ProductModel provideProductModel() {
return new ProductModel();
}
}
我需要创建演示者。我的演示者必须使用模型
主持人:
public class ProductPresenter {
private ProductModel;
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
publict void test(){
productModel.someMethod();
}
创建Presenter时无法设置ProductModel。演示者我这样创建:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter() {
return new ProductPresenter();//What I need set to constructor? new ProductModel()?
}
答案 0 :(得分:1)
由于您在演示者课程中传递ProductModel
,因此您还需要告诉PresenterModule
如何构建演示者:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter(ProductModel model) {
return new ProductPresenter(model);
}
}
Dagger非常聪明地发现您已经在另一个@Module
类中构建了模型实例。
我认为你还需要用@Inject
注释你的Presenter的构造函数,如:
@Inject
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
编辑:显然你需要一个@Component
界面。你没有发布任何相关的代码,但我认为你有一个。