构造函数注入找不到符号方法注入成员

时间:2018-03-09 06:37:12

标签: java android dependency-injection dagger-2 dagger

我正在开发一个具有匕首依赖关系的Android应用程序。通过构造函数注入注入类时,它会抛出一个无法找到符号的错误。如果我通过模块内定义的@Provides方法提供依赖,那么一切正常。

代码:

  public class SixthGenericTest {

        @Inject
        FirstTest firstTest;

        @Inject
        public SixthGenericTest()
        {
            Injection.create().getAppComponent().inject(this);
        }
        public String getData(){
            return firstTest.getTestName();
        }
    }

    @Singleton
    @Component(modules = {FirstModule.class})
    public interface AppComponent {
        void inject(SixthGenericTest sixthGenericTest);

    }

我得到的错误:

  

错误:(19,28)错误:找不到符号方法   injectMembers(MembersInjector,SixthGenericTest)

2 个答案:

答案 0 :(得分:1)

升级您的匕首版本

dependencies {
  compile 'com.google.dagger:dagger:2.x'
  annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
}

Check last version here

答案 1 :(得分:-2)

您不需要注入Injection.create().getAppComponent().inject(this); @Inject带注释的构造足够,因为它会自动添加到图表中,您可以将范围添加到您的类名之上

@Singleton
public class SixthGenericTest {

    FirstTest firstTest;

    @Inject
    public SixthGenericTest( FirstTest firstTest )
    {
        this.firstTest = firstTest;
    }

    public String getData()
    {
        return firstTest.getTestName();
    }
}

并从组件中删除:

 void inject(SixthGenericTest sixthGenericTest);