全局动作
您可以使用 全局动作(global action) 来创建一个供多个目的地共用的通用动作。例如,您可能想让不同目的地中的按钮都能导航到相同的主界面。
在导航编辑器中,全局动作是用一个指向该目的地的小箭头表示的,如图一所示:
图一:指向某个嵌套导航图的全局动作
创建全局动作
欲创建一个全局动作,请按以下步骤操作:
- 在 Graph Editor 中,单击一个目的地以使其高亮。
- 右键单击该目的地来打开 context 菜单。
- 选择 Add Action > Global,一个箭头就会在该目的地的左边出现。
单击 Text 标签页来切换到 XML 文本视图。该全局动作的 XML 代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_nav"
app:startDestination="@id/mainFragment">
...
<action android:id="@+id/action_global_mainFragment"
app:destination="@id/mainFragment"/>
</navigation>
使用全局动作
欲在您的代码中使用全局动作,请将该全局动作的资源 ID 传入每个 UI 元素的 navigate()
) 方法,如下所示:
viewTransactionsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Navigation.findNavController(view).navigate(R.id.action_global_mainFragment);
}
});
和 Safe Args 一起使用全局动作
欲了解更多和 Safe Args 一起使用全局动作的信息,请参阅在目的地之间传递数据。