如何在使用 dagger2 创建模型时将模型注入 Presenter?
How can inject Model to Presenter when create it wit dagger2?
我尝试创建 MVP + dagger2
我创建模型 模块:
@Module
class ModelsModule {
@Provides
BasketModel provideBasketModel() {
return new BasketModel();
}
@Provides
ProductModel provideProductModel() {
return new ProductModel();
}
}
我需要创建 Presenter。我的演示者必须使用模型
主持人:
public class ProductPresenter {
private ProductModel;
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
publict void test(){
productModel.someMethod();
}
并且我在创建Presenter时无法设置ProductModel。我创建的 Presenter 是这样的:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter() {
return new ProductPresenter();//What I need set to constructor? new ProductModel()?
}
由于您要在演示者中传递 ProductModel
class,您还需要告诉 PresenterModule
如何构建演示者:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter(ProductModel model) {
return new ProductPresenter(model);
}
}
Dagger 足够聪明,可以发现您已经在另一个 @Module
class.
中构建了模型实例
我认为您还需要使用 @Inject
注释 Presenter 的构造函数,例如:
@Inject
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
编辑:显然您需要一个 @Component
界面。您没有 post 任何相关代码,但我假设您有一个。
我尝试创建 MVP + dagger2
我创建模型 模块:
@Module
class ModelsModule {
@Provides
BasketModel provideBasketModel() {
return new BasketModel();
}
@Provides
ProductModel provideProductModel() {
return new ProductModel();
}
}
我需要创建 Presenter。我的演示者必须使用模型
主持人:
public class ProductPresenter {
private ProductModel;
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
publict void test(){
productModel.someMethod();
}
并且我在创建Presenter时无法设置ProductModel。我创建的 Presenter 是这样的:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter() {
return new ProductPresenter();//What I need set to constructor? new ProductModel()?
}
由于您要在演示者中传递 ProductModel
class,您还需要告诉 PresenterModule
如何构建演示者:
@Module
public class PresentersModule {
@Provides
ProductPresenter provideProductPresenter(ProductModel model) {
return new ProductPresenter(model);
}
}
Dagger 足够聪明,可以发现您已经在另一个 @Module
class.
我认为您还需要使用 @Inject
注释 Presenter 的构造函数,例如:
@Inject
public ProductPresenter(ProductModel productModel) {
this.productModel = productModel;
}
编辑:显然您需要一个 @Component
界面。您没有 post 任何相关代码,但我假设您有一个。