如何在使用 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 任何相关代码,但我假设您有一个。