通过 ViewModel 更改视图
Change view via ViewModel
我是 MVVM 的新手。我试图找出从 ViewModel 更改视图的最简单方法。在片段部分,我导航到下一个片段
fun nextFragment(){
findNavController().navigate(R.id.action_memory_to_memoryEnd)
}
但我无法从 ViewModel 调用它。据我所知,这甚至是不可能的,它破坏了 ViewModel 的概念。
我想在 ViewModel 中的这个条件为真时调用 fun nextFragment()
if (listOfCheckedButtonsId.size >= 18){
Memory.endGame()
}
是否有任何简单的方法可以根据 ViewModel 中的值更改视图?
多亏了高尔基的回应,我才知道该怎么做。
在片段中我创建了观察者
sharedViewModel.changeView.observe(viewLifecycleOwner, Observer<Boolean> { hasFinished ->
if (hasFinished) nextFragment()
})
我在 ViewModel 中创建了 changeView 变量。当
var changeView = MutableLiveData<Boolean>()
更改为true,观察者调用函数。
来源:
https://developer.android.com/codelabs/kotlin-android-training-live-data#6
我是 MVVM 的新手。我试图找出从 ViewModel 更改视图的最简单方法。在片段部分,我导航到下一个片段
fun nextFragment(){
findNavController().navigate(R.id.action_memory_to_memoryEnd)
}
但我无法从 ViewModel 调用它。据我所知,这甚至是不可能的,它破坏了 ViewModel 的概念。
我想在 ViewModel 中的这个条件为真时调用 fun nextFragment()
if (listOfCheckedButtonsId.size >= 18){
Memory.endGame()
}
是否有任何简单的方法可以根据 ViewModel 中的值更改视图?
多亏了高尔基的回应,我才知道该怎么做。
在片段中我创建了观察者
sharedViewModel.changeView.observe(viewLifecycleOwner, Observer<Boolean> { hasFinished ->
if (hasFinished) nextFragment()
})
我在 ViewModel 中创建了 changeView 变量。当
var changeView = MutableLiveData<Boolean>()
更改为true,观察者调用函数。
来源: https://developer.android.com/codelabs/kotlin-android-training-live-data#6