'by viewModels()' Kotlin 属性 委托未解析的引用

'by viewModels()' Kotlin property delegate unresolved reference

我正在尝试使用 kotlin 实现视图模型。首先我添加了所需的依赖项:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
// Annotation processor
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0"

然后我创建了一个简单的视图模型:

class MyViewModel: ViewModel() {
    val greeting = "Hello World"
}

但是当我尝试使用 kotlin 属性 委托从 activity 访问视图模型时:

val model by viewModels<MyViewModel>()

编译器不解析 viewModels。我不知道是什么问题。我错过了什么吗?

添加这些依赖项:

implementation "androidx.activity:activity-ktx:$activity_version"
implementation "androidx.fragment:fragment-ktx:$fragment_version"

您可以在此处找到最新版本的库:

https://developer.android.com/jetpack/androidx/releases/activity

https://developer.android.com/jetpack/androidx/releases/fragment

对我来说,上面的解决方案不起作用。

我需要导入:

implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'

对我来说,上面的解决方案不起作用。

添加此依赖项::

implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'

添加此依赖项:

 implementation "androidx.lifecycle:lifecycleviewmodel:2.2.0"

已解决此错误,在模块级别使用以下依赖项build.gradle

implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'

implementation 'androidx.lifecycle:lifecycle-extensions-ktx:2.2.0'
implementation 'androidx.activity:activity-ktx:1.4.0'
implementation 'androidx.fragment:fragment-ktx:1.3.6'

我还添加了以下依赖项以在 Kotlin

中实现 ViewModel
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'

我的模块级别 build.gradle 按照下面开始

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

就我而言,我只是使用了错误类型的 Activity。我有一个 android.app.Activity 而不是 androidx.appcompat.app.AppCompatActivityviewModels() 仅在后者中可用。