使用Hilt时Activity中viewModels()引用未解决问题求助
解决方案
在App级build.gradle的dependencies块中添加Activity KTX依赖:
implementation 'androidx.activity:activity-ktx:1.7.2'
原因说明
- Fragment里的
viewModels()扩展函数来自你已添加的fragment-ktx库,所以能正常使用 - Activity中的
viewModels()属于activity-ktx库提供的扩展函数,你的依赖列表里缺了这个库,才会出现Unresolved reference错误
另外建议移除过时的android.arch.lifecycle:extensions:1.1.1依赖——这个是旧的Support库版本,和你用的AndroidX库冲突,直接删除即可,你已经添加了AndroidX的lifecycle-viewmodel-ktx和lifecycle-livedata-ktx,完全能替代它的功能。
问题背景
已配置网上相关依赖,参考技术社区内容后仍无法解决:Activity中创建ViewModel实例时提示Unresolved reference: viewModels(),但Fragment中使用无此问题。
提供的依赖代码
App build.gradle
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-android' id 'kotlin-parcelize' id 'androidx.navigation.safeargs' id 'kotlin-kapt' id 'com.google.dagger.hilt.android' } dependencies { implementation 'androidx.core:core-ktx:1.10.1' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0' implementation 'androidx.navigation:navigation-ui-ktx:2.6.0' implementation 'androidx.fragment:fragment-ktx:1.6.1' //Retrofit - network calls implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.6' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.google.code.gson:gson:2.9.0' implementation 'com.google.android.gms:play-services-location:21.0.1' implementation 'com.google.firebase:firebase-messaging:23.2.0' //Hilt - Dependency Injection implementation("com.google.dagger:hilt-android:2.44") kapt("com.google.dagger:hilt-android-compiler:2.44") //Page lifecycle owners def lifecycle_version = "2.6.1" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "android.arch.lifecycle:extensions:1.1.1" def coroutines_version = "1.6.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" //QR generation library implementation 'com.google.zxing:core:3.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
Project build.gradle
plugins { id 'com.android.application' version '7.4.1' apply false id 'com.android.library' version '7.4.1' apply false id 'org.jetbrains.kotlin.android' version '1.8.0' apply false id 'androidx.navigation.safeargs.kotlin' version '2.5.1' apply false id("com.google.dagger.hilt.android") version "2.44" apply false }
代码截图
- Activity代码截图:

- Fragment代码截图:

内容的提问来源于stack exchange,提问作者nileshbirhade
相关产品推荐
相关产品推荐

