グローバルな操作

グローバル アクションを使用すると、複数のデスティネーションが使用できる共通のアクションを作成できます。たとえば、異なるデスティネーション内にあるボタンを使用して、同じメインアプリ画面に移動することができます。

Navigation Editor 内で、グローバル アクションは、関連付けられたデスティネーションを指し示す小さな矢印で表現されます。図 1 をご覧ください。

図 1. ネストグラフにつながるグローバル アクション

グローバル アクションを作成する

グローバル アクションを作成する手順は次のとおりです。

  1. Graph Editor 内で、デスティネーションをクリックしてハイライト表示します。
  2. デスティネーションを右クリックして、コンテキスト メニューを表示します。
  3. [Add Action] > [Global] を選択します。デスティネーションの左側に矢印()が表示されます。
  4. [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 とグローバル アクションを併用する方法については、デスティネーション間でデータを渡すをご覧ください。

参考情報

ナビゲーションについて詳しくは、以下の参考情報をご確認ください。

サンプル

Codelab

動画