0

我尝试创建MVP + dagger2

我创建模型模块:

@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()?
    }
4

1 回答 1

1

由于您正在传递ProductModel您的演示者课程,因此您还需要告诉您PresenterModule如何构建您的演示者:

@Module
public class PresentersModule {

@Provides
ProductPresenter provideProductPresenter(ProductModel model) {
    return new ProductPresenter(model);
    }
}

Dagger 足够聪明,可以发现您已经在另一个@Module类中构建了模型实例。

我认为你还需要用@Injectlike 注释你的 Presenter 的构造函数:

@Inject
public ProductPresenter(ProductModel productModel) {
    this.productModel = productModel;
}

编辑:显然你需要一个@Component界面。你还没有发布任何相关的代码,但我假设你有一个。

于 2017-12-27T10:51:20.000 回答