全局动作

原文链接:Global actions | Android Developers

您可以使用 全局动作(global action) 来创建一个供多个目的地共用的通用动作。例如,您可能想让不同目的地中的按钮都能导航到相同的主界面。

在导航编辑器中,全局动作是用一个指向该目的地的小箭头表示的,如图一所示:

图一:指向某个嵌套导航图的全局动作 图一:指向某个嵌套导航图的全局动作

创建全局动作

欲创建一个全局动作,请按以下步骤操作:

  1. Graph Editor 中,单击一个目的地以使其高亮。
  2. 右键单击该目的地来打开 context 菜单。
  3. 选择 Add Action > Global,一个箭头全局动作 - 图2就会在该目的地的左边出现。
  4. 单击 Text 标签页来切换到 XML 文本视图。该全局动作的 XML 代码如下所示:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <navigation xmlns:app="http://schemas.android.com/apk/res-auto"
    3. xmlns:tools="http://schemas.android.com/tools"
    4. xmlns:android="http://schemas.android.com/apk/res/android"
    5. android:id="@+id/main_nav"
    6. app:startDestination="@id/mainFragment">
    7. ...
    8. <action android:id="@+id/action_global_mainFragment"
    9. app:destination="@id/mainFragment"/>
    10. </navigation>

使用全局动作

欲在您的代码中使用全局动作,请将该全局动作的资源 ID 传入每个 UI 元素的 navigate()) 方法,如下所示:

  1. viewTransactionsButton.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View view) {
  4. Navigation.findNavController(view).navigate(R.id.action_global_mainFragment);
  5. }
  6. });

和 Safe Args 一起使用全局动作

欲了解更多和 Safe Args 一起使用全局动作的信息,请参阅在目的地之间传递数据