Kri*_*one 4 android kotlin dagger-hilt
在这里我创建了应用程序类依赖项。现在我想访问
@Module
@InstallIn(SingletonComponent::class)
class MyApplicationModule {
@Provides
fun providesMainApplicationInstance(application: MainApplication): MainApplication =
application
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序类是:
@HiltAndroidApp
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
}
fun printData(){
Log.d("Test","Awesome print data")
}
}
Run Code Online (Sandbox Code Playgroud)
我想从活动中调用 printData() 函数。我已经使用字段注入来访问应用程序类,但它给出了错误......
@Inject lateinit var mainApplication: MainApplication
Run Code Online (Sandbox Code Playgroud)
错误
[Dagger/DependencyCycle] Found a dependency cycle:
MainApplication is injected at MyApplicationModule.providesMainApplicationInstance(application)
Run Code Online (Sandbox Code Playgroud)
这应该有效:
@Module
@InstallIn(SingletonComponent::class)
class MyApplicationModule {
@Provides
fun providesMainApplicationInstance(@ApplicationContext context: Context): MainApplication {
return context as MainApplication
}
}
Run Code Online (Sandbox Code Playgroud)
Hilt 可以注入应用程序上下文。您只需简单地投射它即可。
让我知道是否好。
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |