尝试使用Koin但在Android上无法正常工作

时间:2020-04-16 21:30:02

标签: android dependency-injection koin

我正在尝试在我的项目中实施Koin。到目前为止,我做到了:

我的共享首选项班:

class MPCUtilSharedPreference(private val sharedPreferences: SharedPreferences{}

我想将该课程注入其他课程。因此,我创建了MainApplication类:

class MPCMainApplication : Application() {

override fun onCreate() {
    super.onCreate()
    startKoin {
        androidContext(this@MPCMainApplication)
        modules(modules)
    }
}

}

这是我的模块类:

private val appModule = module {
single {
    MPCUtilSharedPreference(
        androidContext().getSharedPreferences(
            BuildConfig.APP_PREFERENCE,
            Context.MODE_PRIVATE
        )
    )
  }
}
val modules = listOf(appModule)

然后我正在尝试注入它:

class MPCNetworkInterceptor : Interceptor {

private val utilSharedPreferences: MPCUtilSharedPreference by inject() }

错误提示:

没有传递参数'clazz'的值

我正在尝试使用

import org.koin.android.ext.koin.androidContext

但是AS使用

import org.koin.java.KoinJavaComponent.inject

这是我的礼物:

implementation 'org.koin:koin-android:2.1.5'
implementation 'org.koin:koin-androidx-scope:2.1.5'
implementation 'org.koin:koin-androidx-viewmodel:2.1.5'
implementation 'org.koin:koin-androidx-fragment:2.1.5'

有什么问题吗?

1 个答案:

答案 0 :(得分:2)

您正试图从既不是Activity也不是Fragment的地方使用by inject()委托,这就是IDE导入的原因:

import org.koin.java.KoinJavaComponent.inject

如果要使用MPCUtilSharedPreference中的MPCNetworkInterceptor,则可以将其作为参数传递给MPCNetworkInterceptor构造函数。显然,将此添加到您的模块中。

否则,您可以实现KoinComponent