Android 导航体系结构仅使用上下文的组件导航

Android 导航体系结构仅使用上下文的组件导航,android,navigation,android-architecture-components,android-jetpack,Android,Navigation,Android Architecture Components,Android Jetpack,是否可以获取NavigationController并仅使用上下文执行导航?现在看来没有。这将需要对我们的应用程序进行如此重大的重组,我觉得我肯定错过了一些东西 如果用户已注销,我们需要导航到LoginFragment。此注销检查发生在多个非活动或片段的位置。例如,OkHttpClient中的验证器 目前,这很好,因为您可以从任何地方访问ApplicationContext,这就是创建Intent、startActivity以及在Backback上添加新活动所需的全部内容 根据: 注意:导航组件

是否可以获取NavigationController并仅使用上下文执行导航?现在看来没有。这将需要对我们的应用程序进行如此重大的重组,我觉得我肯定错过了一些东西

如果用户已注销,我们需要导航到LoginFragment。此注销检查发生在多个非活动或片段的位置。例如,OkHttpClient中的验证器

目前,这很好,因为您可以从任何地方访问ApplicationContext,这就是创建Intent、startActivity以及在Backback上添加新活动所需的全部内容

根据:

注意:导航组件是为具有一个主活动和多个片段目的地的应用程序设计的。主活动承载导航图,并负责根据需要交换目的地。在具有多个活动目的地的应用程序中,每个附加活动都有自己的导航图

因此,不存在。您的整个应用程序不存在全局
NavController
——每个活动都有自己的
NavController
和关联的导航图

但是,并没有要求您一次将整个应用切换到导航。根据,您可以一次转换一个活动,继续像以前一样为该特定情况使用单独的登录活动

这得益于对
的内置支持,但强调:

如果你发现自己扭曲了自己的经历,而这对你来说毫无意义,不要这样做。如果有什么东西起作用,那就好了。让它继续工作。但是如果你发现你遇到了问题,你有不一致的行为,或者你想做一些事情,比如共享视图模型,也许是时候考虑转向单一活动结构了


我能看到的唯一解决办法是将应用程序中的所有遗留代码转换为使用导航架构组件,将其全部添加到我的导航图中,生成一个大的图。那么整个应用程序只需要一个NavigationController。通过将其存储在应用程序中,我可以使其在任何地方都可见,这与我当前在应用程序中存储上下文的方式类似。但我真的不想改变所有遗留代码。