android - 尝试使用 koin 但在 android 上无法正常工作

标签 android dependency-injection koin

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

我的共享偏好类:

class MPCUtilSharedPreference(private val sharedPreferences: SharedPreferences{}

我想将该类注入(inject)其他类。所以,我创建了我的 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)

我正在尝试注入(inject)它:
class MPCNetworkInterceptor : Interceptor {

private val utilSharedPreferences: MPCUtilSharedPreference by inject() }

错误说:

No value passed for parameter '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'

知道这里有什么问题吗?

最佳答案

您正在尝试使用 by inject()来自既不是 Activity 也不是 fragment 的地方的委托(delegate),这就是 IDE 正在导入的原因:

import org.koin.java.KoinJavaComponent.inject

如果你想使用 MPCUtilSharedPreference来自 MPCNetworkInterceptor ,您可以将其作为参数传递到 MPCNetworkInterceptor构造函数。显然,将其添加到您的模块中。

否则,您可以实现 KoinComponent

关于android - 尝试使用 koin 但在 android 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61260337/

相关文章:

php - Laravel、依赖注入(inject)和 Eloquent

kotlin - Dagger2和Kotlin:@Binds与@IntoMap不兼容

c# - IUnityContainer.CreateChildContainer() 抛出 NullReferenceException

android - 如何将 Fragment 的参数项添加到 Koin 依赖图中?

java - 如何从 Google Fit 检查启用或禁用状态

android - 如何在 Android 中升级 SQLite 数据库?

Android:我可以更改标题栏位置吗?

java - 重复类 Koin org.koin 和 io.insert-koin

android - 请使用覆盖选项或检查定义,koin android?

Android:导入时 Dex 转换失败