ナビゲーションとは、ユーザーがアプリ内のさまざまなコンテンツ間を移動する操作を指します。Android Jetpack の Navigation コンポーネントは、単純なボタンクリックから、アプリバーやナビゲーション ドロワーなどの複雑なパターンまで、さまざまなナビゲーションを実装するのに役立ちます。また、Navigation コンポーネントは、確立された原則のセットに従うことにより、一貫性のある予測しやすいユーザー エクスペリエンスを保証します。
Navigation コンポーネントは、以下で説明する 3 つの主要部分で構成されています。
- ナビゲーション グラフ:すべてのナビゲーション関連情報を 1 つの場所で集中的に保管する XML リソース。これには、宛先と呼ばれるアプリ内の個々のコンテンツ領域のすべてと、ユーザーがアプリを行き来する可能性があるパスが含まれています。
NavHost
:ナビゲーション グラフからの宛先を表示する空のコンテナ。Navigation コンポーネントには、フラグメントの宛先を表示するデフォルトのNavHost
実装であるNavHostFragment
があります。NavController
:NavHost
内のアプリ ナビゲーションを管理するオブジェクト。ユーザーがアプリ内を移動して行くにつれて、NavController
がNavHost
内の宛先コンテンツの入れ替えを調整します。
アプリ内を移動していく時には、ナビゲーション グラフ内の特定のパスをたどって移動するか、それとも特定の宛先に直接移動するかを NavController
に伝えていきます。NavController
はそれに応じて NavHost
に適切な宛先を示します。
Navigation コンポーネントには他にも多くのメリットがあり、そのいくつかは以下の通りです。
- フラグメント トランザクションを処理する。
- デフォルトで「上」アクションと「戻る」アクションを正しく処理する。
- アニメーションと遷移用の標準化されたリソースを提供する。
- ディープリンクを実装して処理する。
- 最小限の追加作業で、ナビゲーション ドロワーやボトム ナビゲーションなどのナビゲーション UI パターンを組み込める。
- Safe Args - 宛先間で移動とデータの受け渡しを行う際に型の安全性を提供する Gradle プラグイン。
ViewModel
のサポート -ViewModel
のスコープをナビゲーション グラフに設定して、グラフの宛先間で UI 関連のデータを共有できます。
さらに、Android Studio の Navigation Editor を使用して、ナビゲーション グラフを表示および編集できます。
次のステップ
Navigation コンポーネントに関するその他のドキュメントとリソースについては、以下をご覧ください。
スタートガイド
詳細トピック
- ナビゲーションの原則
- さまざまなフォーム ファクタ向けの設計
- ジェスチャー ナビゲーション
- ナビゲーション グラフを設計する
- ネストされたグラフ
- グローバル アクション
- 条件付きナビゲーション
- 宛先間でデータを受け渡す
- 宛先へのディープリンクを作成する
- 宛先間の遷移をアニメーション化する
- NavigationUI を使用して UI コンポーネントを更新する
- タブを使用してスワイプ ビューを作成する
- プログラムで Navigation コンポーネントを操作する
- ナビゲーションをテストする
- 新しい宛先タイプを追加する
- 適切な「戻る」ナビゲーションを提供する
- ナビゲーション コンポーネントに移行する