Android 如何在另一种活动方法中使用LiveData值?
我使用的是MVVM体系结构,很难确定将从LiveData中观察到的值存储在何处,而LiveData只需要在相同的Android 如何在另一种活动方法中使用LiveData值?,android,android-activity,mvvm,android-livedata,Android,Android Activity,Mvvm,Android Livedata,我使用的是MVVM体系结构,很难确定将从LiveData中观察到的值存储在何处,而LiveData只需要在相同的Activity或任何其他方法的onActivityResult()中的if语句中使用 假设,我有一个方法,可以在活动中观察视图模型中的实时数据 fun subscribeObservers() { myViewModel.liveData.observe(viewLifeCycleOwner, Observer { myLiveDataString ->
Activity
或任何其他方法的onActivityResult()
中的if语句中使用
假设,我有一个方法,可以在活动中观察视图模型中的实时数据
fun subscribeObservers() {
myViewModel.liveData.observe(viewLifeCycleOwner, Observer { myLiveDataString ->
setTextField(myLiveDataString)
});
}
我想使用从相同活动的onActivityResult
中的LiveData中观察到的特定值
fun subscribeObservers() {
myViewModel.liveData.observe(viewLifeCycleOwner, Observer { myLiveDataString ->
setTextField(myLiveDataString)
});
}
假设这样,
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == RC) {
if (myLiveDataString == "ERROR") {
showErrorDialogToUser()
}
}
}
所以我的问题是,我应该在哪里存储从LiveData观察到的数据,以检查If
语句?我是否应该将其存储在活动中
?这是一个好主意吗?如果您只是想在同一活动中使用LiveData
值,那么在活动类中创建私有字符串liveDataReturnValue
,并从观察者中分配返回的LiveData
值
var liveDataReturnedValue : String = "";
fun subscribeObservers() {
myViewModel.liveData.observe(viewLifeCycleOwner, Observer { myLiveDataString ->
setTextField(myLiveDataString);
this@YourActivityClass.liveDataReturnedValue = myLiveDataString;
});
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == RC) {
if (myLiveDataString == "ERROR") {
showErrorDialogToUser()
}
}
}
只需使用myViewModel.liveData.value
即可获得值
liveData值不应该仅通过观察者方法检索吗
不仅如此。观察时,当值发生变化时会收到通知。没有任何东西阻止您检查该值。LiveData只是一个数据持有者。您可以使用SharedReference或@Sniffer此值已经来自数据库。只需使用myViewModel.LiveData.value
获取值即可。@Onik不应该只通过observer方法检索LiveData值吗?不仅仅如此。观察时,当它发生变化时,您会收到通知。没有任何东西阻止您检查该值。LiveData只是一个数据持有者。我的坏消息。我尽力澄清这个问题。但我不想在其他活动中使用该值。我只想使用在相同活动的另一个方法中观察到的值。是的,在这种情况下,代码在答案的第二部分