我正在尝试在100%Kotlin应用中实现ViewModel。我能找到的每一篇文档都说我想用它来获取ViewModel实例:
ViewModelProviders.of(this).get(CustomViewModel::class.java)
根据文档,我应该能够将其导入:
import android.arch.lifecycle.ViewModelProviders
此导入尚未解决。我在构建文件中使用以下内容:
def androidArchVersion = '1.1.1'
implementation "android.arch.lifecycle:viewmodel:$androidArchVersion"
implementation "android.arch.lifecycle:livedata:$androidArchVersion"
annotationProcessor "android.arch.lifecycler:compiler:$androidArchVersion"
testImplementation "android.arch.core:core-testing:$androidArchVersion"
为什么我无法访问ViewModelProviders
?
答案 0 :(得分:20)
包含以下内容作为依赖项:
implementation "android.arch.lifecycle:extensions:1.1.1"
此依赖关系适用于ViewModel和LiveData,因此不需要您为相同的依赖项提供单独的依赖关系;即,您指示的前两个依赖项可以由上述生命周期扩展依赖项替换。
答案 1 :(得分:6)
就我而言,我不见了:
implementation "androidx.fragment:fragment-ktx:1.1.0"
答案 2 :(得分:2)
除了Sup建议的内容之外,您还必须将lifecycler:compiler
更改为lifecycle:compiler
- Gradle同步甚至不应该成功完成此错误。< / p>
其次,标准的android注释处理(&#34; annotationProcessor&#34;)并不能真正与Kotlin一起使用。相反,使用Kotlin的kapt。
在build.gradle文件的顶部,添加以下内容:
apply plugin: 'kotlin-kapt'
。
在您的依赖项部分中,将annotationProcessor
(如上所述)的出现替换为kapt
,例如
kapt "android.arch.lifecycle:compiler:1.1.1"
答案 3 :(得分:1)
我在AndroidStudio 3.0.1中遇到了此类问题,并通过添加解决了 在正确的build.gradle中具有以下依赖性:
table2
版本代码可能会有所不同,因为AndroidStudio会告诉您是否不同。
答案 4 :(得分:0)
这也可以通过将minSdkVersion定位为21来解决。
如果您的minSdkVersion 21
或更高,则不需要implementation "android.arch.lifecycle:extensions:1.1.1"
。
答案 5 :(得分:0)
如果上述“添加/更新依赖项”未能解决您的问题,请尝试重新启动您的Android Studio。它只是为了扎根,我认为它没有任何重大问题。希望对您有所帮助。
答案 6 :(得分:0)
android {
kotlinOptions {
jvmTarget = '1.8'
}
}
项目e应用级别
答案 7 :(得分:0)
我通过这样做来解决这个问题。 实现这个依赖
implementation "android.arch.lifecycle:extensions:1.1.1"
然后调用我的 ViewModel 类
homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)