传递 ViewModel 的 MutableLiveData 的值
Pass value of a MutableLiveData of ViewModels
我对 Android 非常陌生,我正在尝试 understand/integrate 数据绑定。
我想我遗漏了什么,因为它总是显示 null
这是我的ViewModel
class LockDetailsModel: ViewModel() {
var name = MutableLiveData<String>()
fun setName(name: String) {
this.name.value = name
}
在我的LockActivity
中,我根据某个字段设置了name
的值。
val viewModel: LockDetailsModel by viewModels()
viewModel.setName(unitName.toString())
在我的另一个显示布局的 activity 中,这就是我绑定模型所做的工作
val viewModel: LockDetailsModel by viewModels()
binding: ActivityConnectLockBinding = DataBindingUtil.setContentView(this, R.layout.activity_connect_lock)
binding.lockDetails = viewModel
binding.lifecycleOwner = this
它显示空:(
在此先感谢您的帮助!
您获得 null
值的原因是因为您在两个活动中都使用了 different
viewModel instances
,因此您首先存储的值 Activity无法在第二 activity 中获得。您需要在两个活动之间有 SharedViewModel
,这是不可能的,因为 Single Activity principle
。因此,要实现您想要实现的逻辑,您需要拥有 Fragments
并利用 fragment-ktx
库轻松创建 SharedViewModel
。如果您想要 example
,您可以参考我的回答是:
Want to show progress bar while moving to the previous page from the current page
以上答案描述了如何将一个 activity 中开始的下载进度获取到另一个中。
我对 Android 非常陌生,我正在尝试 understand/integrate 数据绑定。
我想我遗漏了什么,因为它总是显示 null
这是我的ViewModel
class LockDetailsModel: ViewModel() {
var name = MutableLiveData<String>()
fun setName(name: String) {
this.name.value = name
}
在我的LockActivity
中,我根据某个字段设置了name
的值。
val viewModel: LockDetailsModel by viewModels()
viewModel.setName(unitName.toString())
在我的另一个显示布局的 activity 中,这就是我绑定模型所做的工作
val viewModel: LockDetailsModel by viewModels()
binding: ActivityConnectLockBinding = DataBindingUtil.setContentView(this, R.layout.activity_connect_lock)
binding.lockDetails = viewModel
binding.lifecycleOwner = this
它显示空:(
在此先感谢您的帮助!
您获得 null
值的原因是因为您在两个活动中都使用了 different
viewModel instances
,因此您首先存储的值 Activity无法在第二 activity 中获得。您需要在两个活动之间有 SharedViewModel
,这是不可能的,因为 Single Activity principle
。因此,要实现您想要实现的逻辑,您需要拥有 Fragments
并利用 fragment-ktx
库轻松创建 SharedViewModel
。如果您想要 example
,您可以参考我的回答是:
Want to show progress bar while moving to the previous page from the current page
以上答案描述了如何将一个 activity 中开始的下载进度获取到另一个中。