我是 Jetpack Compose 的新手。我创建了一个应用程序,作为预览,我只获得视图,在我的例子中是文本视图。
我想要这样的东西:
我使用的是 Android Studio 2020.3.1 Canary 8。
我正在学习 Jetpack Compose,我试图为我的@Composable 创建一个视图模型。
在文档(https://developer.android.com/codelabs/jetpack-compose-state#3)中用于观察他们使用的可组合中的状态变化,observeAsState但在我的实现中,找不到该方法。我得到了Unresolved reference: observeAsState
视图模型
class MainActivityViewModel : ViewModel() {
val list: LiveData<MutableList<String>> = MutableLiveData(mutableListOf("Ana", "Are", "Mere"))
fun addString(item: String) {
val list: MutableList<String> = list.value!!
list.add(item)
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Compose 1.0.0-beta01
我刚刚启动了一个 Android 应用程序,我想使用 ViewModel。我查看了文档并放置了Lifecycle 中的所有依赖项,但是当我尝试实例化像此视图这样的视图模型时,MyViewModel by viewModels()我收到此错误“未解析的引用:viewModels()”。
这些是依赖项:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
def lifecycle_version = "2.2.0"
def arch_version = "2.1.0"
implementation "android.arch.lifecycle:extensions:1.1.1"
kapt "android.arch.lifecycle:compiler:1.1.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"
testImplementation "androidx.arch.core:core-testing:$arch_version"
}
Run Code Online (Sandbox Code Playgroud)