代码之家  ›  专栏  ›  技术社区  ›  ip696

使用dagger2创建模型时,如何将模型注入演示者?

  •  0
  • ip696  · 技术社区  · 7 年前

    我尝试创建 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()?
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   mt0s    7 年前

    既然你路过 ProductModel 在演示者课程中,您还需要告诉 PresenterModule 如何构建演示者:

    @Module
    public class PresentersModule {
    
    @Provides
    ProductPresenter provideProductPresenter(ProductModel model) {
        return new ProductPresenter(model);
        }
    }
    

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

    我认为您还需要使用 @Inject 例如:

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

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