グローバル アクション

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

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 とグローバル アクションを併用する方法については、デスティネーション間でデータを渡すをご覧ください。

参考リンク

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

サンプル

コードラボ

動画