gpt4 book ai didi

android - Dagger 2 Android 应用程序组件缺少注入(inject)方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:59 27 4
gpt4 key购买 nike

我用新发布的 Dagger 2.10 和 dagger.android 包尝试了一个小的 Android 项目。只有 MainApplication 类应该被 Dagger 注入(inject),没有其他任何依赖:

构建.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'
}

主应用程序.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

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

自动生成的 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);
}
}
}

我是 Dagger 的新手,这里有很多资源,但很多都在用过时的 Dagger 库描述 DI。我的实现有什么问题?我还发现了一个名为 MainApplication_MembersInjector 的自动生成的类...我必须自己使用它吗?

最佳答案

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

}

关于android - Dagger 2 Android 应用程序组件缺少注入(inject)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com