グローバル アクションを使用すると、複数のデスティネーションが使用できる共通のアクションを作成できます。たとえば、異なるデスティネーション内にあるボタンを使用して、同じメインアプリ画面に移動することができます。
Navigation Editor 内で、グローバル アクションは、関連付けられたデスティネーションを指し示す小さな矢印で表現されます。図 1 をご覧ください。
![](https://developer.android.com/static/topic/libraries/architecture/images/navigation-global-action.png?authuser=0000&hl=ja)
グローバル アクションを作成する
グローバル アクションを作成する手順は次のとおりです。
- Graph Editor 内で、デスティネーションをクリックしてハイライト表示します。
- デスティネーションを右クリックして、コンテキスト メニューを表示します。
- [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>
グローバル アクションを使用する
コード内でグローバル アクションを使用するには、各 UI 要素の navigate()
メソッドにグローバル アクションのリソース ID を渡します。以下の例をご覧ください。
Kotlin
viewTransactionButton.setOnClickListener { view -> view.findNavController().navigate(R.id.action_global_mainFragment) }
Java
viewTransactionsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Navigation.findNavController(view).navigate(R.id.action_global_mainFragment); } });
Safe Args とグローバル アクションを併用する
Safe Args とグローバル アクションを併用する方法については、デスティネーション間でデータを渡すをご覧ください。
参考情報
ナビゲーションについて詳しくは、以下の参考情報をご確認ください。