如何在使用dagger2创建模型时将模型注入Presenter?

时间:2017-12-27 09:43:39

标签: android dagger-2 android-mvp

我尝试创建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()?
    }

1 个答案:

答案 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界面。你没有发布任何相关的代码,但我认为你有一个。