Adi*_*ure 5 android kotlin dagger-hilt
我是 Hilt 的新手,从未正确使用过匕首。我收到以下错误。
[Dagger/MissingBinding] retrofit2.Retrofit cannot be provided without an @Inject constructor or an
@Provides-annotated method.
Run Code Online (Sandbox Code Playgroud)
我用@provides 注释了我的provideRetrofit 方法,并将其安装在应用程序组件中。我想在我的主要活动中注入它并在那里使用了注入注释。我尝试将它安装在活动组件中,但结果仍然相同。
这是我的改造模块。
@Module
@InstallIn(ApplicationComponent::class)
class RetrofitModule {
@Singleton
@Provides
fun provideGson(): Gson {
return GsonBuilder().create()
}
@Singleton
@Provides
fun provideRetrofit (gson: Gson): Retrofit{
return Retrofit.Builder().baseUrl("Base Url")
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava3CallAdapterFactory.create()).build()
}
}
Run Code Online (Sandbox Code Playgroud)
在我的主要活动中,我写了这个来注入它。
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var retrofit: Retrofit
Run Code Online (Sandbox Code Playgroud)
我认为您的 Retrofit 返回类型是错误的。试试这个(它对我有用):
@Singleton
@Provides
fun provideRetrofit (gson: Gson): Retrofit.Builder() {
return Retrofit.Builder()
.baseUrl("Base Url")
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
}
Run Code Online (Sandbox Code Playgroud)
编辑:哦,更改class RetrofitModule为object RetrofitModule!否则,@Provides永远不会执行。请记住,您只能在之后使用您的改造onCreate()
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |