安卓Kotlin:如何获取应用程序类的对象?

bkkx9g8r  于 2023-02-16  发布在  Kotlin
关注(0)|答案(2)|浏览(109)

这里我创建了应用程序类依赖关系。现在我想访问

@Module
@InstallIn(SingletonComponent::class)
class MyApplicationModule {
    @Provides
    fun providesMainApplicationInstance(application: MainApplication): MainApplication =
        application
}

我的应用程序类是:

@HiltAndroidApp
class MainApplication : Application() {
    override fun onCreate() {
        super.onCreate()
    }

    fun printData(){
        Log.d("Test","Awesome print data")
    }

}

**我想从活动调用printData()函数。**我已使用字段注入访问应用程序类,但它给出错误...

@Inject lateinit var mainApplication: MainApplication

错误

[Dagger/DependencyCycle] Found a dependency cycle:
 MainApplication is injected at MyApplicationModule.providesMainApplicationInstance(application)
11dmarpk

11dmarpk1#

这应该行得通:

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

    @Provides
    fun providesMainApplicationInstance(@ApplicationContext context: Context): MainApplication {
        return context as MainApplication
    }
}

Hilt可以注入应用程序上下文。您只需要简单地强制转换它。
好的话告诉我。

wfauudbj

wfauudbj2#

Hilt自动生成ApplicationContextModule.java,它同时提供ContextApplication

相关问题