MutableLiveData 的预期非空值

Aam*_*aul 9 android viewmodel kotlin android-livedata kotlin-null-safety

private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> get() = _users

fun getUsers() {
    viewModelScope.launch {
        _users.value = users()
    }
}

suspend fun users(): List<User> {
    TODO("Not implemented")
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误_users.value = users()

预期的非空值。检查信息:此检查可确保 LiveData 值在显式声明为不可空时不为空。

我正在使用生命周期版本2.3.1。问题似乎出在挂起函数 users() 上。如果我删除挂起修饰符,它就可以正常工作。

NRU*_*ANA 11

只需使用

private val _users: MutableLiveData<List<User>> = MutableLiveData()
Run Code Online (Sandbox Code Playgroud)

代替

private val _users = MutableLiveData<List<User>>()
Run Code Online (Sandbox Code Playgroud)

  • 这些应该是等价的意思。这似乎是 Android Lint 错误。您知道这是否在任何地方都有记录或在 AOSP 错误跟踪器上报告吗? (5认同)

Ars*_*rst 11

尝试this._users.value = users()this在前面添加对我有用。不知道为什么。在您的情况下,您可能需要,this@yourModel._users.value = users()因为您在 viewModelScope 中调用它。