2017-02-16 54 views
0

我有一类的模块,并且组件满足的依赖性对于类A的实例时添加依赖性 - 匕首2

  @Module 
      public class ModuleA { 

       private ClassA classA; 

       public ModuleA(ClassA classA) { 
        this.classA = classA; 
       } 

       @Provides 
       ClassA providesClassA(){ 
        return this.classA; 
       } 
      } 


      @Component(modules = {ModuleA}) 
      public interface ComponentA { 

       void inject(ClassNeedingA classNeedingA); 

      } 

      @Module 
      public class ModuleB { 

       private ClassB classB; 

       public ModuleB(ClassB classB) { 
        this.classB = classB; 
       } 

       @Provides 
       ClassB providesClassB(){ 
        return this.classB; 
       } 

      @Provides 
       ClassA providesClassA(ClassA classA){ 
        return classA; 
       } 

      } 

     @Component(modules = {ModuleB}) 
      public interface ComponentB { 

       void inject(ClassNeedingB classNeedingB); 

      } 

    public class classNeedingB{ 

    @Inject 
    ClassB classB 

    @Inject 
    ClassA classA 
    public classNeedingB{ 
DaggerComponentB.builder().moduleB(new ModuleB(new ClassB()).componentA(DaggerComponentA.builder().moduleA(new ModuleA(new ClassA())).build()).build().inject(); 
    } 

    } 

ModuleB是在一个完全不同的包,我希望以满足ModuleB中类A的实例的依赖关系。 我如何获得匕首在ClassNeedingB中注入ClassA的实例。 那么如何确保ModuleB依赖于ModuleA。

感谢

回答

1

您可以创建组件之间的依赖关系,以达到你想要的东西:

@Component(modules = {ModuleB}, dependencies = ComponentA.class) 
    public interface ComponentB { 

     void inject(ClassNeedingB classNeedingB); 
    } 

创建链接所有你需要的是你的ComponentA例如提供给以componentB建设者:

ComponentB componentB = DaggerComponentDependency_ComponentB.builder() 
       .moduleB(moduleB) 
       .componentA(componentA) 
       .build(); 
+0

这就是我做的,但它似乎并没有工作。 @Inject无法注入classA的对象 – Sunny

+0

您可以添加您正在注入的类的代码吗? –

+0

确定现在添加... – Sunny