DaggerApplicationComponent未解决的参考
我正在尝试通过修改MVP应用程序Belajar应用程序在MVVM架构中应用DaggerApplicationComponent,但我刚刚遇到了未解决的参考错误:DaggerApplicationComponent。 Kotlin Kapt已被应用,我尝试重建项目,但是我从应用程序组件中获得了错误: C:\Users\3\AndroidStudioProjects\belajar3 - Copy (3)\app\build\tmp\kapt3\stubs\debug\id\kotlin\belajar\di\component\ApplicationComponent.java:8: error: [Dagger/MissingBinding ] RetRofit2.如果没有@Inject构造函数或 @提供的通知方法,则无法提供retrofit。 公共抽象接口应用程序Component扩展了匕首。Android.androidinjector< id.kotlin.belajar.belajarapp> gt; { ^ Retrofit2.ReTrofit注入 id.kotlin.belajar.di.module.homemodule.provideshomedatasource(Raterofit) id.kotlin.belajar.data.homedatasource注入 id.kotlin.belajar.presentation.homeviewmodel(dataSource) id.kotlin.belajar.presentation.homeviewmodel注入 id.kotlin.belajar.di.module.homemodule.bindhomeviewmodel(viewModel) java.util.map< java.lang.class<?扩展Androidx.lifeCycle.ViewModel>,Javax.Inject.Provider< androidx.lifecycle.viewmodel>>>注射在 id.kotlin.belajar.di.factory.viewmodelfactory(viewModels) id.kotlin.belajar.di.factory.viewmodelfactory被注入 id.kotlin.belajar.di.builder.activitybuilder.bindviewmodelfactory(工厂) androidx.lifecycle.viewmodelprovider.factory注入 id.kotlin.belajar.presentation.homectivity.viewmodelfactory id.kotlin.belajar.presentation.homctivity注入 Dagger.android.androidinjector.Indject(ID.Kotlin.Belajar.Presentation.homectivity)[id.kotlin.belajar.di.di.component.application.applicationcomponent? id.kotlin.belajar.di.builder.activitybuilder_contributehomectivity.homeyctivitysubcomponent]
我需要有关此问题的建议。谢谢。
这是代码:
applicationComponent:
import dagger.Component
import dagger.android.AndroidInjector
import dagger.android.support.AndroidSupportInjectionModule
import id.kotlin.belajar.BelajarApp
import id.kotlin.belajar.di.builder.ActivityBuilder
import id.kotlin.belajar.di.module.Networkmodule
import javax.inject.Singleton
@Singleton
@Component(modules = [
AndroidSupportInjectionModule::class, Networkmodule::class,
ActivityBuilder::class
])
interface ApplicationComponent : AndroidInjector<BelajarApp>
Belajarapp:
import dagger.android.AndroidInjection.inject
import dagger.android.AndroidInjector
import dagger.android.DaggerApplication
import id.kotlin.belajar.di.component.DaggerApplicationComponent
class BelajarApp : DaggerApplication(){
override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
return DaggerApplicationComponent.create().apply { inject(this@BelajarApp) }
}
}
我的GitHub repo:
I'm trying to apply DaggerApplicationComponent in MVVM architecture by modifying MVP app, Belajar App, but I've just got error of Unresolved reference: DaggerApplicationComponent. Kotlin kapt has been applied and I've tried to rebuild project, but instead I got error from application component:
C:\Users\3\AndroidStudioProjects\belajar3 - Copy (3)\app\build\tmp\kapt3\stubs\debug\id\kotlin\belajar\di\component\ApplicationComponent.java:8: error: [Dagger/MissingBinding] retrofit2.Retrofit cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract interface ApplicationComponent extends dagger.android.AndroidInjector<id.kotlin.belajar.BelajarApp> {
^
retrofit2.Retrofit is injected at
id.kotlin.belajar.di.module.HomeModule.providesHomeDatasource(retrofit)
id.kotlin.belajar.data.HomeDatasource is injected at
id.kotlin.belajar.presentation.HomeViewModel(datasource)
id.kotlin.belajar.presentation.HomeViewModel is injected at
id.kotlin.belajar.di.module.HomeModule.bindHomeViewModel(viewModel)
java.util.Map<java.lang.Class<? extends androidx.lifecycle.ViewModel>,javax.inject.Provider<androidx.lifecycle.ViewModel>> is injected at
id.kotlin.belajar.di.factory.ViewModelFactory(viewModels)
id.kotlin.belajar.di.factory.ViewModelFactory is injected at
id.kotlin.belajar.di.builder.ActivityBuilder.bindViewModelFactory(factory)
androidx.lifecycle.ViewModelProvider.Factory is injected at
id.kotlin.belajar.presentation.HomeActivity.viewModelFactory
id.kotlin.belajar.presentation.HomeActivity is injected at
dagger.android.AndroidInjector.inject(id.kotlin.belajar.presentation.HomeActivity) [id.kotlin.belajar.di.component.ApplicationComponent ? id.kotlin.belajar.di.builder.ActivityBuilder_ContributeHomeActivity.HomeActivitySubcomponent]
I need suggestion for this problem. Thank you.
This is the code:
ApplicationComponent:
import dagger.Component
import dagger.android.AndroidInjector
import dagger.android.support.AndroidSupportInjectionModule
import id.kotlin.belajar.BelajarApp
import id.kotlin.belajar.di.builder.ActivityBuilder
import id.kotlin.belajar.di.module.Networkmodule
import javax.inject.Singleton
@Singleton
@Component(modules = [
AndroidSupportInjectionModule::class, Networkmodule::class,
ActivityBuilder::class
])
interface ApplicationComponent : AndroidInjector<BelajarApp>
BelajarApp:
import dagger.android.AndroidInjection.inject
import dagger.android.AndroidInjector
import dagger.android.DaggerApplication
import id.kotlin.belajar.di.component.DaggerApplicationComponent
class BelajarApp : DaggerApplication(){
override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
return DaggerApplicationComponent.create().apply { inject(this@BelajarApp) }
}
}
My github repo:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题在于,在您的家庭模型中,您需要改造依赖性。
但是没有类似的方法:
创建上述方法,并且它们都可以使用。
您在网络模块中看到的您只提供构建器,但是您实际上并没有真正构建它:
The problem is that in your HomeModule you need a Retrofit dependency.
But there is no method like:
Create the above method and it will all work.
As you can see in your NetworkModule you only provide a Builder, but you do not actually build it:
由于我真的不知道使用Kotlin,因此只遵循它,我想我需要您的意见。
Since I really don't know about using Kotlin, only follow it, I think I need your opinion about it.