ナビゲーション コントローラを作成する

ナビゲーション コントローラは、ナビゲーションにおける主要なコンセプトの一つです。ナビゲーション グラフを保持し、アプリがグラフ内のデスティネーション間を移動できるようにするメソッドを公開します。

Navigation コンポーネントを使用する場合は、NavController クラスを使用してナビゲーション コントローラを作成します。NavController は一元管理を実施するナビゲーション API です。ユーザーがアクセスしたデスティネーションを追跡し、ユーザーがデスティネーション間を移動できるようにします。このガイドでは、アプリで NavController を作成する方法について説明します。

NavController にナビゲーション グラフを追加する方法については、ナビゲーション グラフを設計するをご覧ください。NavController は、グラフ内のデスティネーションに移動する方法をいくつか提供します。詳細については、デスティネーションに移動するをご覧ください。

Compose

Jetpack Compose の使用時に NavController を作成するには、rememberNavController() を呼び出します。

val navController = rememberNavController()

コンポーザブルの階層の上位に NavController を作成する必要があります。このオブジェクトを参照する必要があるすべてのコンポーザブルが参照できるように、十分上位の階層に作成する必要があります。

これにより、画面の外部でコンポーザブルを更新するための信頼できる唯一の情報源として NavController を使用できます。これは、状態ホイスティングの原則に従います。

視聴回数

Views UI フレームワークを使用している場合は、コンテキストに応じて、次のメソッドのいずれかを使用して NavController を取得できます。

Kotlin:

Java:

通常は、最初に NavHostFragment を取得してから、フラグメントから NavController を取得します。この手順を行うスニペットは以下のとおりです。

Kotlin

val navHostFragment =
    supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

Java

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();

参考資料