我一直在Jetpack中使用新的新Navigation-API,遇到一个我找不到令人满意的解决方案的问题。
基本上,我正在创建的应用程序具有大量不同的片段。大多数片段都与后端通信,当它们执行操作时,他们可以发现其会话已超时。发生这种情况时,我想转到登录片段。我能够执行此操作的唯一方法是为每个片段创建一个动作,目标指向登录屏幕。我宁愿避免这很多样板。有没有更简单的方法可以做到这一点?
答案 0 :(得分:2)
对于此用例,您可以使用全局操作。要创建全局操作,请在导航图中选择所需的目的地。右键单击并在菜单中选择“添加动作”,然后单击“全局”,这将在导航图根元素内创建全局动作:
<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