ナビゲーション

ナビゲーションとは、ユーザーがアプリ内のさまざまなコンテンツ間を移動する操作を指します。Android Jetpack の Navigation コンポーネントは、単純なボタンクリックから、アプリバーやナビゲーション ドロワーなどの複雑なパターンまで、さまざまなナビゲーションを実装するのに役立ちます。また、Navigation コンポーネントは、確立された原則のセットに従うことにより、一貫性のある予測しやすいユーザー エクスペリエンスを保証します。

Navigation コンポーネントは、以下で説明する 3 つの主要部分で構成されています。

  • ナビゲーション グラフ:すべてのナビゲーション関連情報を 1 つの場所で集中的に保管する XML リソース。これには、宛先と呼ばれるアプリ内の個々のコンテンツ領域のすべてと、ユーザーがアプリを行き来する可能性があるパスが含まれています。
  • NavHost:ナビゲーション グラフからの宛先を表示する空のコンテナ。Navigation コンポーネントには、フラグメントの宛先を表示するデフォルトの NavHost 実装である NavHostFragment があります。
  • NavController:NavHost 内のアプリ ナビゲーションを管理するオブジェクト。ユーザーがアプリ内を移動して行くにつれて、NavControllerNavHost 内の宛先コンテンツの入れ替えを調整します。

アプリ内を移動していく時には、ナビゲーション グラフ内の特定のパスをたどって移動するか、それとも特定の宛先に直接移動するかを NavController に伝えていきます。NavController はそれに応じて NavHost に適切な宛先を示します。

Navigation コンポーネントには他にも多くのメリットがあり、そのいくつかは以下の通りです。

  • フラグメント トランザクションを処理する。
  • デフォルトで「上」アクションと「戻る」アクションを正しく処理する。
  • アニメーションと遷移用の標準化されたリソースを提供する。
  • ディープリンクを実装して処理する。
  • 最小限の追加作業で、ナビゲーション ドロワーやボトム ナビゲーションなどのナビゲーション UI パターンを組み込める。
  • Safe Args - 宛先間で移動とデータの受け渡しを行う際に型の安全性を提供する Gradle プラグイン。
  • ViewModel のサポート - ViewModel のスコープをナビゲーション グラフに設定して、グラフの宛先間で UI 関連のデータを共有できます。

さらに、Android Studio の Navigation Editor を使用して、ナビゲーション グラフを表示および編集できます。

次のステップ

Navigation コンポーネントに関するその他のドキュメントとリソースについては、以下をご覧ください。

スタートガイド

詳細トピック

サンプル

コードラボ

ブログ投稿

動画