不能使用活动中的"by viewModel“
我想为一个活动注入一个ViewModel,所以我尝试了一下。但是它失败了,Android找不到它的参考。
private val mainViewModel: MainViewModel by viewModel()
我的活动扩展了AppCompatActivity
,而gradle依赖项包括以下库:
implementation 'androidx.core:core-ktx:1.3.2'
def koin_version = '2.2.1'
implementation "org.koin:koin-android:$koin_version"
implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
implementation "org.koin:koin-androidx-fragment:$koin_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$koin_version"
我尝试了什么:
下面的代码正在工作,但我想使用KOIN2.2.0的新默认"SavedStateHandle“特性。
private val mainViewModel: MainViewModel by inject()
我发现这段代码已经包含了,Android找不到它。
ActivityExt.kt:
inline fun <reified T : ViewModel> ComponentActivity.viewModel(
qualifier: Qualifier? = null,
noinline state: BundleDefinition? = null,
noinline owner: ViewModelOwnerDefinition = { from(this, this) },
noinline parameters: ParametersDefinition? = null,
): Lazy<T> {
return lazy(LazyThreadSafetyMode.NONE) {
getViewModel(qualifier, state, owner, parameters)
}
}
在片段中,viewModel
和sharedViewModel
都工作得很好。
private val viewModel by viewModel<SearchViewModel>()
private val mainViewModel by sharedViewModel<MainViewModel>()
问题:,用Koin 2.2.0+版本注入ViewModel的最佳方法是什么?
发布于 2020-11-22 11:13:45
我手动添加了这个,它运行得很好。
import org.koin.androidx.viewmodel.ext.android.viewModel
发布于 2021-07-30 21:03:00
我错过了koin-android的依赖:
// Koin for the dependencies injections
def koin_version = "3.1.2"
implementation "io.insert-koin:koin-core:$koin_version"
implementation "io.insert-koin:koin-test:$koin_version"
implementation "io.insert-koin:koin-android:$koin_version"
implementation "io.insert-koin:koin-core-ext:$koin_version"
https://stackoverflow.com/questions/64953131
复制相似问题