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

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

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

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

Compose

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

val navController = rememberNavController()

NavController はコンポーザブルの階層の上位に作成する必要があります。その ID を参照する必要があるすべてのコンポーザブルが参照できる大きさにする必要があります。

これにより、画面の外部でコンポーザブルを更新するための信頼できる唯一の情報源として 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();

参考資料