首页 > 解决方案 > 为什么fragment-ktx而不是viewmodel-ktx库中提供了Android viewModels()扩展函数?

问题描述

当我使用viewModels()如下

class MainActivity : AppCompatActivity() {

    private val viewModel: MainViewModel by viewModels()

    // ... more codes
}

为什么它可以在

implementation 'androidx.fragment:fragment-ktx:1.3.0'

相反,当我包含以下内容时,它们不可用?

implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

我以为它应该在viewmodel-ktx图书馆而不是fragment-ktx图书馆

标签: androidkotlinandroid-gradle-pluginandroid-viewmodel

解决方案


根据文档by viewModels()扩展是Fragment类的扩展,因此,必须属于fragment-ktx工件 -lifecycle-viewmodel-ktx并且lifecycle-runtime-ktx对片段没有任何依赖关系,并且工件已完全弃用,并且根据Lifecycle 2.2lifecycle-extensions根本不应该使用。 0 发行说明


推荐阅读