android - 为什么私有集不适用于 MutableLiveData?
问题描述
我有一个代码
var exampleData = MutableLiveData<String>()
private set
而且我想将设置器隐藏到 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 与您的 无关MutableLiveData
,因为它在对象本身内是可变的。您必须将其转换为LiveData
,您可以使用支持属性来完成。
private val _exampleData = MutableLiveData<String>()
val exampleData: LiveData<String> get() = _exampleData
您可以私下更改值_exampleData.value = "value"
并仅公开不可变的LiveData
.
推荐阅读
- javascript - AlpineJS:在里面使用哪个 x-on 指令
- javascript - 结帐后如何将摩洛哥国家代码添加到wp woocomerce中的电话号码?
- r - 有效过滤掉所有列连续为零的位置
- python - 无法显示 pyspark 数据帧,即使它很小('.show()' 问题)
- reactjs - DeepL 客户端站点使用情况
- azure - 用于将数据库从一个订阅复制到另一个订阅的 Azure 角色
- java - 放置在自定义对话框布局中时为空的公开下拉菜单
- html - 我如何制作这种桌子?我试过这样做,但总是出现一条额外的线
- android - 如何在子小部件中调用函数?
- reactjs - 使用 JSON 数据进行分割掩码 ReactJS