3
我正在测试Dagger的新功能:Android模块。而且我不能够当我使用@ContributesAndroidInjector
我总是收到以下错误编译代码:Dagger @ContributesAndroidInjector ComponentProcessor无法处理此接口
错误:(12,8)错误:dagger.internal.codegen.ComponentProcessor无法处理该接口,因为不是所有的的依赖关系可以得到解决。用生成的代码检查编译错误或循环依赖。
我试图执行我的组件,如here,但仍然出现错误。
这里是最小的例子:
@PerApplication
@Component(modules = {AndroidInjectionModule.class, LoginBindingModule.class})
public interface ApplicationComponent {
void inject(ExampleApplication application);
}
@Module
public abstract class LoginBindingModule {
@ContributesAndroidInjector
abstract LoginActivity contributeYourActivityInjector();
}
public class LoginActivity extends Activity {
@Inject
LoginPresenter loginPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);
}
}
public class LoginPresenter {
@Inject
public LoginPresenter() {
}
}
如果我从ApplicationComponent删除LoginBindingModule应用程序将建立,但会失败,运行时异常:
java.lang.IllegalArgumentException异常:没有工厂喷油器绑定对于类
项目设置:
gradle 3.3
buildToolsVersion "25.0.2"
dagger 2.11
请看看这个例子: https://material.uplabs.com/posts/daggerandroidinjector 我有同样的问题,因为你,但我错过了 annotationProcessor“com.google.dagger:dagger- android-processor:2.11“ ”在gradle文件中。 – exkoria
您没有在代码示例中提供'ExampleApplication'。如果你想使用'AndroidInjection.inject(Activity)',你必须让你的应用程序实现'HasActivityInjector'。我试过你的代码,它似乎工作正常。如果您继续看到错误,那么它不是来自您发布的代码。如果您需要更多帮助,请将整个项目发布到某处。另外,你有没有尝试清理/重建你的项目。 –