我一直在 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/