简体   繁体   English

Dagger 2 Android应用程序组件缺少注入方法

[英]Dagger 2 Android application component is missing inject method

I tried a small Android project with the newly released Dagger 2.10 with the dagger.android package. 我尝试了一个带有dagger.android包的新发布的Dagger 2.10的小型Android项目。 Only the MainApplication class should be injected by Dagger, nothing else has any dependencies yet: Dagger只应注入MainApplication类,其他任何依赖项都没有:

build.gradle 的build.gradle

dependencies {
  ...
  // Dagger
  compile 'com.google.dagger:dagger:2.10'
  compile 'com.google.dagger:dagger-android:2.10'
  annotationProcessor 'com.google.dagger:dagger-compiler:2.10'

  // Fix for incompatible library versions when adding dagger-android and having espresso-core:2.2.2 in tests
  androidTestCompile 'com.google.code.findbugs:jsr305:3.0.1'
}

MainApplication.java MainApplication.java

public class MainApplication extends Application implements HasDispatchingActivityInjector {

  @Inject DispatchingAndroidInjector<Activity> dispatchingAndroidInjector;

  @Override
  public void onCreate() {
      super.onCreate();
      DaggerMainApplicationComponent.create();
   // DaggerMainApplicationComponent.create().inject(this); does not work - no inject(...) method!
  }

  @Override
  public DispatchingAndroidInjector<Activity> activityInjector() {
      return dispatchingAndroidInjector;
  }
}

MainApplicationComponent.java MainApplicationComponent.java

@Component(modules = AndroidInjectionModule.class)
public interface MainApplicationComponent {}

Auto-generated DaggerMainApplicationComponent.java: 自动生成的DaggerMainApplicationComponent.java:

public final class DaggerMainApplicationComponent implements MainApplicationComponent {
  private DaggerMainApplicationComponent(Builder builder) {
    assert builder != null;
  }

  public static Builder builder() {
    return new Builder();
  }

  public static MainApplicationComponent create() {
    return new Builder().build();
  }

  public static final class Builder {
    private Builder() {}

    public MainApplicationComponent build() {
      return new DaggerMainApplicationComponent(this);
    }
  }
}

I am new to Dagger and there are lots of resources, but many are describing DI with an outdated Dagger library. 我是Dagger的新手,有很多资源,但很多人用过时的Dagger库描述DI。 What is wrong in my implementation? 我的实施有什么问题? I also found an auto-generated class named MainApplication_MembersInjector ... do I have to use this myself? 我还发现了一个名为MainApplication_MembersInjector的自动生成的类...我自己必须使用它吗?

@Component(modules = AndroidInjectionModule.class)
public interface MainApplicationComponent {
    void inject(DispatchingAndroidInjector dispatchingAndroidInjector);

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM