我尝试将 viewModelScope 添加到基本 viewModel 但 android studio 无法识别它。
我尝试使用我找到的一些解决方案更改我的 gradle 构建文件,但没有任何效果。
这是我的 build.gradle 应用程序的摘录
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
当我在 viewModel 中输入 viewModelScope 时,它会显示
Unresolved reference: viewModelScope
。
目前处于 alpha 阶段,因此请更新您的 gradle 以使用以下依赖项:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
就我而言,我忘记在该类中扩展 ViewModel,您用于 viewModelScope 的类必须类似于 kotlin 中的
yourModelClass : ViewModel()
和 java yourModelClass extends ViewModel
希望有帮助
我遇到了同样的问题,我刚刚导入:
"androidx.navigation:navigation-fragment-ktx:2.2.0-rc03"
"androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc03"
尽管我认为fragment-ktx并没有真正相关。我花了一段时间才弄清楚这一点。希望有帮助!
还要检查您所在的文件是否正确。我有一段时间遇到了同样的问题,然后我来到了这个页面,但后来我意识到我不小心尝试在我的
Fragment上运行
viewModelScope.launch
。
viewModelScope.launch
仅在您的 ViewModel 中可用并且
lifecycleScope.launch
在您的生命周期感知组件中。
有关该工件的最新版本,请参阅 Maven 存储库 Android 生命周期 ViewModel Kotlin 扩展
在应用程序级别的 build.gradle 文件中添加以下内容:-
def lifecycle_version = "2.2.0-rc03"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
不要忘记在 app/build.gradle 文件顶部添加
apply plugin: 'kotlin-kapt'
也许您没有使用 ViewModel 类扩展 ActivityViewModel
class SampleActivityViewModel: ViewModel() {
fun getData(){
viewModelScope.launch{
// Make an API call
}
}
}
viewModelScope
随版本 2.1.0
一起引入,请参阅 此处。
检查
lifecycle-viewmodel-ktx-2.2.0-alpha01.aar
是否安装。对我来说,您编写的设置没有错误消息。但是,使用早期版本时会出现错误消息:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0"
但这有效:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"
从 build.gradle(:app)
中删除以下配置configurations {
all {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx'
}
}
在 Build.gradle (应用程序级别)
更改您的代码:
def lifecycle_version = "2.0.0"
或者如果您使用任何低于此的版本:
def lifecycle_version = "2.2.0"
viewModelScope
已在生命周期模块的2.2.0
版本中启动,因此在此之前您不会找到它。
看起来您正在使用两个不同版本的 androidX 生命周期库。
将您的
app/build.gradle
更改为:
...
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"
...
ViewModelScope仅在2.2.0版本中添加,在更高版本上也不可用。我尝试使用 2.6.0 但遇到同样的错误。
您的
ViewModel
必须延伸 androidx.lifecycle.ViewModel
。如果没有,Android studio 无法识别viewModelScope
。
class RegisterViewModel() : ViewModel() {
fun postRegister(registerBody: RegisterBody) = viewModelScope.lunch{
}
}
添加
lifecycle-viewmodel-ktx
实施对我来说不起作用。
implementation("androidx.activity:activity-ktx:1.8.0")
// implementation("androidx.lifecycle:lifecycle-view-model-ktx:2.6.2")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
按照上述方式实现
activity-ktx
和 lifecycle-runtime-ktx
是有效的