如何解决Dagger2错误:如果没有@Inject构造函数或@Provides注释的方法,则无法提供LoginUI
将项目迁移到AndroidX时遇到问题,并在项目中添加了Kotlin。
当我使用Kapt并运行项目时,出现此异常:
[Dagger / MissingBinding]如果没有@Inject构造函数或@Provides注释的方法,则无法提供LoginUI。此类型支持成员注入,但不能隐式提供。
这是我的代码:
MyApplicationComponent
@Component(modules = {AndroidInjectionModule.class,ActivityModule.class,FragmentModule.class,......})
@AccountCore
@Singleton
public interface MyApplicationComponent extends AndroidInjector<App> {
AccountComponent.Builder getAccountComponent();
SprintComponent.Builder getSprintComponent();
void inject(App app);
}
ActivityModule
@Module(includes = {AccountViewModule.class,.......})
public abstract class ActivityModule {
}
AccountViewModule
@Module(includes = {xxxx.class,xxx.class})
public abstract class AccountViewModule {
@Binds
abstract LoginPresenter provideLoginPresenter(LoginPresenterImpl presenter);
@ContributesAndroidInjector()
public abstract LoginUI provideLoginUI();
@Binds
public abstract AccountView.LoginView provideLoginView(LoginUI loginUI);
}
LoginUI
public class LoginUI extends DaggerActivity {
@Inject
LoginPresenter accountPresenter;
}
LoginPresenterImpl
public class LoginPresenterImpl extends AccountPresenter implements LoginPresenter {
@Inject
AccountClient accountClient;
@Inject
AccountView.LoginView loginView;
@Inject
AccountModel accountModel;
}
ext{
buildToolsVersion = "29.0.2"
supportVersion = "29.0.2"
compileSdkVersion = 28
minSdkVersion = 18
targetSdkVersion = 28
lifecycleVersion = "1.1.1"
daggerVersion = "2.28.3"
rxJavaVersion = "1.2.1"
okHttpVertion = "3.9.1"
retrofitVersion = "2.1.0"
kotlin_version = "1.3.72"
gradle_version = "3.1.4"
glide_version = "4.11.0"
}
implementation 'com.google.dagger:dagger:' + daggerVersion
implementation 'com.google.dagger:dagger-android:' + daggerVersion
implementation 'com.google.dagger:dagger-android-support:' + daggerVersion
kapt 'com.google.dagger:dagger-android-processor:' + daggerVersion
kapt 'com.google.dagger:dagger-compiler:' + daggerVersion
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。