首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Koin 2.2.1 :我不能在活动中使用"by viewModel“

Koin 2.2.1 :我不能在活动中使用"by viewModel“
EN

Stack Overflow用户
提问于 2020-11-22 10:39:33
回答 2查看 3.7K关注 0票数 6

不能使用活动中的"by viewModel“

我想为一个活动注入一个ViewModel,所以我尝试了一下。但是它失败了,Android找不到它的参考。

代码语言:javascript
运行
复制
private val mainViewModel: MainViewModel by viewModel()

我的活动扩展了AppCompatActivity,而gradle依赖项包括以下库:

代码语言:javascript
运行
复制
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“特性。

代码语言:javascript
运行
复制
private val mainViewModel: MainViewModel by inject()

我发现这段代码已经包含了,Android找不到它。

ActivityExt.kt:

代码语言:javascript
运行
复制
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)
    }
}

在片段中,viewModelsharedViewModel都工作得很好。

代码语言:javascript
运行
复制
private val viewModel by viewModel<SearchViewModel>()
private val mainViewModel by sharedViewModel<MainViewModel>()

问题:,用Koin 2.2.0+版本注入ViewModel的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-22 11:13:45

我手动添加了这个,它运行得很好。

代码语言:javascript
运行
复制
import org.koin.androidx.viewmodel.ext.android.viewModel
票数 13
EN

Stack Overflow用户

发布于 2021-07-30 21:03:00

我错过了koin-android的依赖:

代码语言:javascript
运行
复制
// 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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64953131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档