Show Dialog from ViewModel in Android MVVM Architecture

后端 未结 3 815
隐瞒了意图╮
隐瞒了意图╮ 2020-12-13 04:24

About MVVM with new architecture components, I\'ve a question, how should I implement if my app needs to display for example a Dialog with 3 options from some action that ha

3条回答
  •  忘掉有多难
    2020-12-13 04:52

    UI-related actions like opening new activities or showing dialogs are triggered from the view (an activity or fragment), not from a ViewModel. The ViewModel doesn't have a reference to the view to prevent leaks and keep the presentation layer "reactive".

    You could subscribe your view (activity or fragment) to an observable in the ViewModel so that when it changes, you can start your dialog or new activity from the view.

    Edit: I wrote an article about this because it's not straightforward. A good approach is to model events as part of your state and use an Event wrapper for actions like navigation: https://medium.com/google-developers/livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case-ac2622673150

提交回复
热议问题