gpt4 book ai didi

android - Kotlin Android : Property delegate must have a 'getValue(DashViewModel, KProperty*>)' method

转载 作者:行者123 更新时间:2023-12-02 13:06:58 40 4
gpt4 key购买 nike

我正在尝试遵循 Kotlin 中 ViewModels 的官方 Android 指南。
我从字面上复制粘贴了最简单的official example但语法似乎是非法的。
本节导致问题:

private val users: MutableLiveData<List<User>> by lazy {
MutableLiveData().also {
loadUsers()
}
}
预览给了我这个错误:
Property delegate must have a 'getValue(DashViewModel, KProperty*>)' method. None of the following functions is suitable.
如果我想启动应用程序,我会收到此错误:
Type inference failed: Not enough information to infer parameter T in constructor MutableLiveData<T : Any!>()
Please specify it explicitly.
我不明白这两个错误和其他具有相同错误的问题似乎是由不同的东西引起的。我的猜测是 MutableLiveData().also导致问题,但我不知道为什么。考虑到这是一个官方的例子,这很奇怪。

最佳答案

您似乎没有声明 User类(class)。
第二个问题是yet another documentation bug ,并且您需要在 MutableLiveData 中提供类型构造函数调用。
所以,这有效:

package com.commonsware.myapplication

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class User

class MainViewModel : ViewModel() {
private val users: MutableLiveData<List<User>> by lazy {
MutableLiveData<List<User>>().also {
loadUsers()
}
}

fun getUsers(): LiveData<List<User>> {
return users
}

private fun loadUsers() {
// Do an asynchronous operation to fetch users.
}
}

This is quite odd considering that this is an official example.


通常,将它们视为一种技术的说明,不一定是您会复制并粘贴到项目中的东西。

关于android - Kotlin Android : Property delegate must have a 'getValue(DashViewModel, KProperty*>)' method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62855008/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com