我正在尝试在我的项目中实施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'
有什么问题吗?
答案 0 :(得分:2)
您正试图从既不是Activity也不是Fragment的地方使用by inject()
委托,这就是IDE导入的原因:
import org.koin.java.KoinJavaComponent.inject
如果要使用MPCUtilSharedPreference
中的MPCNetworkInterceptor
,则可以将其作为参数传递给MPCNetworkInterceptor
构造函数。显然,将此添加到您的模块中。
否则,您可以实现KoinComponent