0

如何AppUpdateManager.startUpdateFlowForResult()从 android 中的 viewmodel 调用。它需要一个活动/片段作为参数。

4

1 回答 1

0

你不应该,你应该使用一个名为 state 的实时数据对象(也可能使用枚举)来管理 ViewModel 中的状态,然后观察活动(或片段)中的实时数据并根据状态执行适当的操作。
假设您需要三种状态,并且您需要调用 ViewModel 中的某个AppUpdateManager.startUpdateFlowForResult()位置,您的代码应如下所示:

enum class State {
    StateOne,
    StateTwo,
    StateThree
}

在您的视图模型中:

val state = MutableLiveData<State>()

...

fun somewhere() {
    ....
    // instead of calling AppUpdateManager.startUpdateFlowForResult() set the proper state
    // I assume its stateThree
    state.postValue(State.StateThree)
}

现在,在您的活动的 onCreate() 中:

viewModel.state.observe(this) { yourstate ->
            yourstate?.also { state ->
                when (state) {
                    State.stateOne -> { 
                        // do something
                    }
                    State.stateTwo -> {
                        // do something
                    }
                    State.stateThree -> {
                        AppUpdateManager.startUpdateFlowForResult()
                    }

                }

            }
        }

我希望它足够清楚

于 2020-07-06T00:03:55.527 回答