我正在尝试在我的项目中实现 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/