我有密码
var exampleData = MutableLiveData<String>()
private set
我想将 setter 隐藏到 MutableLiveData 的值
exampleData.value = "Hi!" // still working
我尝试了几种方法,但都有效!
var exampleData = MutableLiveData<String>()
private set(value) { field = value } // Working!
var exampleData = MutableLiveData<String>()
internal set // Working!
var exampleData = MutableLiveData<String>()
internal set(value) { field = value } // Working!
如何隐藏这个setter?
最佳答案
属性的 setter 与您的 MutableLiveData
无关,因为它在对象本身内具有可变性。您必须将其转换为 LiveData
,这可以通过支持属性来完成。
private val _exampleData = MutableLiveData<String>()
val exampleData: LiveData<String> get() = _exampleData
您可以使用 _exampleData.value = "value"
私下更改值并仅公开不可变的 LiveData
。
关于android - 为什么私有(private)集不适用于 MutableLiveData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53593231/