Android Kotlin:Hilt如何获取Application类的对象?

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)

Shl*_*iel 6

这应该有效:

@Module
@InstallIn(SingletonComponent::class)
class MyApplicationModule {

    @Provides
    fun providesMainApplicationInstance(@ApplicationContext context: Context): MainApplication {
        return context as MainApplication
    }
}
Run Code Online (Sandbox Code Playgroud)

Hilt 可以注入应用程序上下文。您只需简单地投射它即可。

让我知道是否好。