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

标签 android navigation android-jetpack android-architecture-navigation

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

基本上,我正在创建的应用程序包含大量不同的 fragment 。大多数 fragment 与后端通信,当它们这样做时,它们会发现它们的 session 已超时。发生这种情况时,我想转到登录 fragment 。我能够做到这一点的唯一方法是为每个 fragment 创建一个 Action ,并将目标指向登录屏幕。这是我宁愿避免的很多样板。有更简单的方法吗?

最佳答案

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

<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

关于android - Jetpack 导航到一个共同的目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52937257/

相关文章:

java - 我可以将源文件夹从 Eclipse 导入 Flash Builder 吗?

Flutter:移动到新屏幕而不提供返回上一屏幕的导航

android - 在 Android 中使用导航组件时如何删除默认动画过渡?

android - 手动清除 Android ViewModel?

java - 在 RecyclerView 滚动中使用 Switch

android - 适用于 HTC Desire 的 Android 模拟器

c# - 在 Blazor 中导航页面

javascript - event.preventDefault();导航,同时仍然允许使用后退和前进按钮

android - fragment 转换在 Jetpack 导航框架中不起作用

android - Android Studio:如何获取当前所选产品 flavor 的名称?