MutableLiveData<Pair<Float, Float>>() -> 无法重新分配 Val

MutableLiveData<Pair<Float, Float>>() -> Val cannot be reassigned

在我的 Android 项目中的 ViewModel 中:

import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData

class MainViewModel(application: Application) : AndroidViewModel(application) {
    private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>()

    fun init() {
           waitressCallContainerHeights.value.first = 200
    }
}

但是我在这一行遇到编译错误:

       waitressCallContainerHeights.value.first = 200

Val cannot be reassigned

我想在 fun init

中设置 firstsecond

虽然您的 liveData 是可变的,但 Pair 本身不是。你需要做: waitressCallContainerHeights.value = Pair(200,300/* for example */)

您还可以使用 apply 在声明本身上初始化变量,如下所示:

private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>().apply { value = Pair(200, 300) }