Jetpack 导航到一个共同的目的地

Posted

技术标签:

【中文标题】Jetpack 导航到一个共同的目的地【英文标题】:Jetpack navigation to a common destination 【发布时间】:2019-03-26 23:53:39 【问题描述】:

我一直在 Jetpack 中使用新的 Navigation-API,但遇到了一个我无法找到令人满意的解决方案的问题。

基本上我正在创建的应用程序有大量不同的片段。大多数片段都与后端对话,当他们这样做时,他们会发现他们的会话已经超时。发生这种情况时,我想转到登录片段。我能够做到这一点的唯一方法是为每个片段创建一个动作,目标指向登录屏幕。这是我宁愿避免的很多样板。有没有更简单的方法来做到这一点?

【问题讨论】:

【参考方案1】:

对于这个用例,您可以使用全局操作。要创建全局操作,请在导航图中选择所需的目的地。右键单击并在菜单中选择“添加操作”并单击“全局”,这将在导航图根元素内创建一个全局操作:

<action android:id="@+id/action_global_signInFragment" app:destination="@id/signInFragment"/>

现在您可以通过调用 navigation() 方法并将所需全局操作的 id 传递给它来使用全局操作:

NavHostFragment.findNavController(this).navigate(R.id.action_global_signInFragment)

https://developer.android.com/topic/libraries/architecture/navigation/navigation-global-action

【讨论】:

论据如何?

以上是关于Jetpack 导航到一个共同的目的地的主要内容,如果未能解决你的问题,请参考以下文章

从带有 Jetpack 导航结果的 BottomSheetFragment 导航,出现崩溃“无法从当前目的地找到操作”

Android Jetpack导航,另一个主机片段内的主机片段

如果您位于导航图的起始目的地,为啥android jetpack NavigationUI navigateUp 方法仅打开绘图菜单

踩坑!Android Jetpack组件间库之Navigation

jetpack compose 接收返回参数

Jetson TX2安装Jetpack 3.0注意事项