了解从ViewModel导航的命令模式

问题描述 投票:0回答:2

我读了一篇有关如何在真实应用程序中使用Android Architecture组件的博客文章,标题为Using Navigation Architecture Component in a large banking app

但是在如何从ViewModels导航?]部分中,有一件事我不理解。命令定义如下:

sealed class NavigationCommand {
  data class To(val directions: NavDirections): NavigationCommand()
  object Back: NavigationCommand()
  data class BackTo(val destinationId: Int): NavigationCommand()
  object ToRoot: NavigationCommand()
}

我对此一无所知,在NavigationCommand内部,它实际上再次像在NavigationCommand中一样使用data class To(val directions: NavDirections): NavigationCommand()-难道这不会无限递归吗?另外,使用object中的object Back: NavigationCommand()是什么意思?

[我读了一篇有关如何在实际应用程序中使用Android体系结构组件的文章,标题为在大型银行应用程序中使用导航体系结构组件。在如何从...中导航这一节]]

android kotlin architecture android-viewmodel android-architecture-navigation
2个回答
0
投票

它实际上使用了NavigationCommand


0
投票

该代码以Kotlin语言编写。它使用sealed类定义所有命令。要了解有关sealed类的更多信息,请使用此link

  1. 因此,它要做的是定义类NavigationCommand,然后定义从To扩展的内部类NavigationCommand。在定义的NavigationCommand()类中调用To与调用超级构造函数相同。例如,对于Java中的To类,可以这样写:
© www.soinside.com 2019 - 2024. All rights reserved.