【发布时间】:2019-06-14 11:14:23
【问题描述】:
我在一个项目中工作,我需要用 Dagger 2 注入 Retrofit 对象。我搜索信息但我只能执行几个步骤,现在我不知道如何继续:
我的组件:
@Singleton
@Component(modules = arrayOf(NetworkModule::class))
interface NetworkComponent {
fun inject(foo: TheApplication)
}
我的模块:
@Module
class NetworkModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl("https://api.chucknorris.io/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
}
现在我看到我必须创建一个从 Application 扩展的 Class 以初始化 Component 并创建一个 @Inject 下一个:
class TheApplication: Application() {
override fun onCreate() {
super.onCreate()
val net: NetworkModule = Dagger...
}
}
理论上,当我输入Dagger... 时,它应该是DaggerNetworkComponent,但我重建了项目,但仍然丢失。
任何人都可以向我解释 Application.class 的用途以及我该如何继续?
【问题讨论】:
-
请分享您的
component代码 -
我贴一个组件代码,不知道是不是和你问的一样
-
为什么你的
@Component被称为NetworkModule,它出于某种原因循环地将自己称为一个模块?而您的实际网络模块称为NetworksModule? -
名字随机选择与他们无关
-
您的代码一切正常。我假设匕首注释处理器未连接或未配置。检查是否通过“kapt”配置而不是“annotatinProcessor”将匕首注释处理器添加为依赖项
标签: android kotlin retrofit dagger-2