Android 如何在另一种活动方法中使用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 ->

我使用的是MVVM体系结构,很难确定将从LiveData中观察到的值存储在何处,而LiveData只需要在相同的
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只是一个数据持有者。我的坏消息。我尽力澄清这个问题。但我不想在其他活动中使用该值。我只想使用在相同活动的另一个方法中观察到的值。是的,在这种情况下,代码在答案的第二部分