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

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

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

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

android navigation android-jetpack
1个回答
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