Navigation

Navigation は、Android アプリ内の「宛先」間を移動するためのフレームワークであり、宛先がフラグメントやアクティビティなど、どのコンポーネントとして実装されているかにかかわらず、一貫した API を提供します。
最新の更新 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
2021 年 10 月 27 日 2.3.5 - 2.4.0-beta01 -

依存関係の宣言

Navigation への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

dependencies {
  def nav_version = "2.3.5"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:2.4.0-beta02"
}

Kotlin

dependencies {
  val nav_version = "2.3.5"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:2.4.0-beta02")
}

Safe Args

Safe Args をプロジェクトに追加するには、最上位の build.gradle ファイルに次の classpath を含めます。

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.3.5"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.3.5"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

また、使用可能な 2 つのプラグインのいずれかを適用する必要があります。

Java モジュールまたは Java と Kotlin の混合モジュールに適した Java 言語コードを生成するには、アプリまたはモジュールbuild.gradle ファイルに次の行を追加します。

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

あるいは、Kotlin のみのモジュールに適した Kotlin コードを生成するには、次の行を追加します。

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

AndroidX への移行にあるとおり、gradle.properties ファイルandroid.useAndroidX=true が必要です。

Kotlin 拡張機能の使用方法については、ktx のドキュメントをご覧ください。

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 2.4.0

バージョン 2.4.0-beta01

2021 年 10 月 27 日

androidx.navigation:navigation-*:2.4.0-beta01 がリリースされました。バージョン 2.4.0-beta01 に含まれる commit については、こちらをご覧ください

新機能

  • ID を使用する代わりにルートを含む by navGraphViewModel を使用することで、フラグメントを使った Navigation Kotlin DSL をより適切にサポートできるようになりました。(I901e3, b/201446416

API の変更

  • visibleEntries API が試験運用版になりました。(I93f6f

バグの修正

  • 同じ画面間を移動することで遷移が中断されても、ViewModel が破棄されなくなりました(Id52d8b/200817333
  • NavDestination にディープリンクを追加するときに、null 許容の NavDeepLink 引数にデフォルト値が不要になりました。(I5aad4b/201320030
  • ライフサイクルが異なる NavBackStackEntry が等しいとみなされなくなりました。つまり、NavHost は、singleTop でナビゲーションを行う場合や、下部のメニュー項目を再選択する場合に、すべてのデスティネーションを適切に再コンポーズします。(I1b351b/196997433
  • onCreateListPaneView() によって返されるリストペインの layout_width 属性と layout_weight 属性が正しく処理されない、または無視される AbstractListDetailFragment の問題を修正しました。(f5fbf3
  • ダイアログ デスティネーションの表示状態が正しく DialogFragmentNavigator の状態と同期されるようになりました。つまり、DialogFragment の非同期の dismiss() API を手動で呼び出すと、拒否されたダイアログの上にあるすべてのダイアログ デスティネーションが適切にクリアされるようになりました。これは、popUpTo または popBackStack() を使用してダイアログを閉じるケースには影響しません。(I77ba2
  • AbstractAppBarOnDestinationChangedListeneronDestinationChanged() のエラー メッセージがより明確になりました。(Ie742d

バージョン 2.4.0-alpha10

2021 年 9 月 29 日

androidx.navigation:navigation-*:2.4.0-alpha10 がリリースされました。バージョン 2.4.0-alpha10 に含まれる commit については、こちらをご覧ください

新機能

  • NavController で、visibleEntries StateFlow を介してすべての表示可能な NavBackStackEntry インスタンスのリストを取得できるようになりました(Ia964e
  • rememberNavController() がオプションの Navigator インスタンスのセットを受け取るようになりました。これらのインスタンスは、返される NavController に追加され、Accompanist Navigation Material の Navigator など、オプションの Navigator のサポートを強化します。(I4619e

バグの修正

  • Activity の再作成時に Dynamic Navigation がクラッシュしなくなりました。(Ifa6a3b/197942869
  • NavHost を含むコンポーザブルのデスティネーションにポップバックした後にのみ発生する、システムの [戻る] ボタンに関する問題を修正しました。(3ed148b/195668143
  • SafeArgs は、fromBundle()fromSavedStateHandle() の引数を適切なパラメータ順序で生成するようになりました。(I824a8b/200059831

バージョン 2.4.0-alpha09

2021 年 9 月 15 日

androidx.navigation:navigation-*:2.4.0-alpha09 がリリースされました。バージョン 2.4.0-alpha09 に含まれる commit については、こちらをご覧ください。

新機能

  • clearBackStack() メソッドを使用して、popBackStack() または popUpToSaveState で保存された状態をクリアできるようになりました。(I80a0f
  • ネストされたナビゲーション グラフのビルダーに引数やディープリンクのリストを渡せるようになりました。結果のグラフに自動的に追加されます。(I8a470b/182545357

API の変更

  • navArgument Kotlin DSL 関数が、navigation-compose ではなく navigation-common の一部になりました。この関数を引き続き使用するには、インポートを更新する必要があります。(I1d095

動作の変更

  • Safe Args は引数を生成する際、デフォルト値のないパラメータを、デフォルト値のある引数のパラメータの前に置くようになりました。(I89709b/198493585

バグの修正

  • Navigation Compose を使用する場合、NavGraphs はすべての子が DESTROYED の場合にのみ DESTROYED になります。(I86552b/198741720
  • null 許容の NavDeepLink 引数にデフォルト値は不要になりました。(Ia14efb/198689811
  • 新しいグラフで setGraph() を呼び出すと、バックスタックをポップする以前の動作に加えて、保存されたバックスタックもクリアされるようになりました。(I97f96
  • launchSingleTop の使用時に OnDestinationChangedListener インスタンスと currentBackStackEntryFlow が通知されない問題を修正しました。(Iaaebc

依存関係の更新

バージョン 2.4.0-alpha08

2021 年 9 月 1 日

androidx.navigation:navigation-*:2.4.0-alpha08 がリリースされました。バージョン 2.4.0-alpha08 に含まれる commit については、こちらをご覧ください。

新機能

  • NavType クラスを拡張してカスタムの NavType を作成できるようになりました。カスタム型がサポートされるのは、ナビゲーション グラフ Kotlin DSL などを使用してプログラムでナビゲーション グラフを作成する場合に限られます。(I78440b/196871885

動作の変更

  • アクションを生成するとき、Safe Args から生成された Kotlin コードが、デフォルト値のある引数の前にデフォルト値のない引数をパラメータとして置くようになりました。(Idb697b/188855904
  • ディープリンクが、すべての必須の引数(デフォルト値のない引数)が Uri に存在することを確認するようになりました。(#204b/185527157

バグの修正

  • composable() 内で getBackStackEntrypreviousBackStackEntryremember() とともに使用しても、バックスタックにデスティネーションがないことについて例外がスローされないようになりました。(I75138b/194313238
  • バックスタック引数を変更して launchSingleTop=true を使用する際に、Navigation Compose が適切に再コンポーズされるようになりました。(Iebd69b/186392337
  • 13 個または 29 個のデスティネーションを持つグラフで setGraph を呼び出す場合に ArrayIndexOutOfBoundsException がなくなりました。(I1a9f1b/195171984
  • SafeArgs Java 生成ツールが、Args クラスを生成するときに lint 警告を発生させなくなりました。(I1a666b/185843837

外部からの協力

  • ディープリンクがすべての必須の引数(デフォルト値のない引数)が Uri に存在することを確認するようにした ospixd 様に感謝いたします。(#204b/185527157

バージョン 2.4.0-alpha07

2021 年 8 月 18 日

androidx.navigation:navigation-*:2.4.0-alpha07 がリリースされました。バージョン 2.4.0-alpha07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Navigation Compose で複数のバックスタックの機能の使用中に、構成の変更後とグラフの変更時に状態が適切に保存されるようになりました。(If5a3db/195141957
  • 複数のバックスタックを持つ Navigatioin Compose の使用時に同じタブを再選択しても、画面が空白になることはなくなりました。(I860dcb/194925622
  • NavHostNavBackStackEntryLifecycle.State の変更を監視するようになりました。そのため、フラグメントで NavHost を使用すると、画面が空白になるのではなく、ライフサイクルの変更として適切に再コンポーズされるようになりました。(I4eb85b/195864489
  • アクティビティを再作成した後(構成の変更後)、DialogFragment を閉じると NavController の状態が正しく更新されない問題を修正しました。(Icd72b
  • ダイアログ デスティネーションをポップすると、NavController のシステムの [戻る] ボタン処理が更新されず、バックスタックにポップがない場合でも、NavController が [戻る] ボタンをインターセプトする可能性がある問題を修正しました。(If3b34
  • Safe-args が、ViewModel コードのテストに使用できる引数の toSavedStateHandle メソッドを自動的に生成するようになりました。(If1e2db/193353880

バージョン 2.4.0-alpha06

2021 年 8 月 4 日

androidx.navigation:navigation-*:2.4.0-alpha06 がリリースされました。バージョン 2.4.0-alpha06 に含まれる commit については、こちらをご覧ください。

API の変更

  • AbstractListDetailFragmentrequireSlidingPaneLayout() メソッドと requireDetailPaneNavHostFragment() メソッドの名前がそれぞれ getSlidingPaneLayout()getDetailPaneNavHostFragment() に変更されました。(I34a08

動作の変更

  • Crossfade などのアニメーションで移動する場合、新しいデスティネーションの Lifecycle は、アニメーションが完了した場合にのみ RESUMED に到達するようになりました。(If0543b/172112072b/194301889
  • Navigation Compose の NavHost で、グラフを最初のコンポジションの一部として設定するようになりました。(Ieb7be

バグの修正

  • ナビゲーション グラフの最後のデスティネーションをポップした際に、ClassCastException がスローされなくなりました。(If0543b/172112072b/194301889
  • Uri を使用せずにディープリンクを追加し、ルートまたはディープリンク経由で移動すると発生する NullPointerException を修正しました。(938a0cb/193805425
  • ディープリンクされた NavBackStackEntryRESUMED 状態に到達しない Navigation Compose の問題を修正しました。(I192c5
  • ダイアログ デスティネーションをポップすると、NavController のシステムの [戻る] ボタン処理が更新されず、バックスタックにポップがない場合でも、NavController が [戻る] ボタンをインターセプトする可能性がある問題を修正しました。(aosp/1782668

バージョン 2.4.0-alpha05

2021 年 7 月 21 日

androidx.navigation:navigation-*:2.4.0-alpha05 がリリースされました。バージョン 2.4.0-alpha05 に含まれる commit については、こちらをご覧ください

動作の変更

  • Navigation Compose の NavHost が、デスティネーション間を移動する際に常にクロスフェードを使用するようになりました。(I07049b/172112072
  • NavHost のグラフを変更できるようになりました。グラフの startDestination とデスティネーションが同じグラフは同等とみなされ、NavController バックスタックはクリアされません。(I0b8dbb/175392262

バグの修正

  • NavController の状態のリエントラント アップデートにより発生する、NavBackStackEntry にアタッチされた LifecycleObserver 内から popBackStack() を呼び出すときの NoSuchElementException を修正しました。(I64621
  • AbstractListDetailFragment では、AbstractListDetailFragment が使用されていない場合に SlidingPaneLayout を APK から完全に削除できるようになりました。(I611ad
  • NavGraphNavDestination が equals メソッドをオーバーライドするようになりました。これにより、同じ値を持つ 2 つのオブジェクトは同等とみなされます。(I166ebb/175392262

バージョン 2.4.0-alpha04

2021 年 7 月 1 日

androidx.navigation:navigation-*:2.4.0-alpha04 がリリースされました。バージョン 2.4.0-alpha04 に含まれる commit については、こちらをご覧ください

新機能

  • navigation-fragment アーティファクトに、新しい AbstractListDetailFragment による 2 ペイン レイアウトのビルド済み実装が追加されました。このフラグメントは、実装例に示されているように、SlidingPaneLayout を使用してリストペイン(サブクラスによって提供されます)と詳細ペイン(NavHostFragment を実装として使用します)を管理します。(Iac4beb/191276636
  • navigation-compose アーティファクトの NavHost が、composable のデスティネーションに加えて dialog のデスティネーションをサポートするようになりました。このダイアログのデスティネーションはそれぞれ、Composable の Dialog 内、現在の composable のデスティネーションの上に表示されます。(I011d0
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

API の変更

  • NavigatorStateadd 関数の名前が push に変更されました。add() の現在の呼び出しはすべて、push() に変更する必要があります。(Ie89fcb/172112072
  • Navigator のカスタム インスタンスで、NavigatorStatepushWithTransaction API と popWithTransition API を使用してデスティネーションを非同期にプッシュまたはポップできるようになりました。なお、この API は、含まれているどのナビゲータでもまだ使用されていません。(Ic4d7cb/172112072

動作の変更

  • NavDeepLinkBuilder で、createPendingIntent() から返された PendingIntentPendingIntent.FLAG_IMMUTABLE が追加され、Android 12 をターゲットとしたときにこの API が期待どおりに機能するようになりました。(If8c52

バグの修正

  • グラフに渡された引数が動的にインクルードされるグラフに正しく渡されない <include-dynamic> の問題を修正しました。(I3e115
  • string[] 引数を使用してデフォルト値 @null があるデスティネーションに移動したときの NullPointerException を修正しました。(I1fbe8
  • @Navigator.Name の ProGuard ルールを追加し、R8 3.1 フルモードを使用する際の問題を修正しました。(I2add9b/191654433
  • SafeArgs は、1.5.0 より前のバージョンの Kotlin でアプリをビルドしても失敗しなくなります。(Icd1ffb/190739257

バージョン 2.4.0-alpha03

2021 年 6 月 16 日

androidx.navigation:navigation-*:2.4.0-alpha03 がリリースされました。バージョン 2.4.0-alpha03 に含まれる commit については、こちらをご覧ください

バグの修正

  • インクルードされたダイナミック グラフへの移動に 2 つの navigate() 呼び出しが必要となる問題を修正しました。(I7785cb/188859835
  • Navigation 2.4.0-alpha01 で生じる回帰を修正しました。ユーザーがトップレベル デスティネーションにいるとき、setupActionBarWithNavController() が「上へ」アイコンを正しく削除しませんでした。(I5d443b/189868637
  • NavController のルートグラフを先にポップした後に popBackStack() を呼び出す場合に発生する IllegalStateException を修正しました。(I2a330b/190265699
  • navigation-common またはそれに依存するアーティファクトを使用したときに、by navArgs() の ProGuard ルールが正しく適用されるようになりました。(I68800b/190082521
  • 初めてコールバックを受信したときに navigate() を呼び出す OnDestinationChangedListener が、移動先の宛先を含む次のコールバックを正しく取得するようになりました。(Ie5f9eb/190228815
  • 動的機能モジュールと AGP 7.0 以降で使用したときに Safe Args がクラッシュすることがなくなりました。(I69518b/189966576

既知の問題

  • 古いバージョンの Kotlin への依存関係が原因で、Safe Args が Gradle 6.7.0 を使用したときに、Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ エラーが発生して失敗します。この問題は、Gradle 7.0 を使用するように更新することで回避できます。(b/190739257

バージョン 2.4.0-alpha02

2021 年 6 月 2 日

androidx.navigation:navigation-*:2.4.0-alpha02 がリリースされました。バージョン 2.4.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • ルートが、Activity、Fragment、Dialog のデスティネーションに加え、DynamicNavigation Kotlin DSL 全体でサポートされるようになりました。(Ib5544Ia617bI22f96b/188914648b/188901565
  • NavigationUI で、状態の保存を無効にする試験的 API を一時的に追加しました。常に状態を保存するのが正しい動作ですが、状態の保存時に対応できない非推奨となったライブラリが引き続き使用されています(保持されたフラグメントなど)。この追加により、非対応の API の使用をアプリから減らすための時間的余裕が生まれます。(Idf93c
  • Navigation に、カスタム NavigationUI の実装に役立つ findDestination() API と getHierarchy() API が追加されました。findDestination() は、NavGraph の拡張関数です。グラフ内でデスティネーションを見つけます。getHierarchy() は、NavDestination の関数です。指定されたデスティネーションが別のデスティネーションの階層にあるかどうかを確認できます。(I2932fb/188183365

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView を受け取る NavigationUI メソッドが更新され、代わりに Material 1.4.0NavigationBarView で導入されたスーパークラスを受け取るようになりました。これにより NavigationRailView とともに使用できるようになります。(Ib0b36b/182938895

  • XML から <action> 要素をインフレートする場合に、アニメーション属性で、app:enterAnim="?attr/transitionEnter" 構文を使用してテーマから取得した属性を使用できるようになりました。(I07bc1b/178291654

API の変更

  • ID を使用する Kotlin DSL ビルダーのサポートが終了しました。ルートを使用するビルダーに置き換えてください。(I85b42b/188816479)(I9f58fb/188816479

バグの修正

  • DialogFragmentNavigator を、システムの [戻る] ボタンが押されて、または外側をクリックされてダイアログが閉じられたときに、NavigatorState.pop() API を使用して NavController に通知するようにしました。これによって、NavController の状態が常に Navigator の状態と同期されるようになります。(I2ead9
  • onDestinationChanged コールバックで OnDestinationChangedListeners のリストを操作するときに、Navigation で ConcurrentModificationException が発生しなくなりました。(Ib1707b/188860458

  • Kotlin で方向プロパティを生成するときに Safe Args がクラッシュすることがなくなりました。(Id2416b/188564435

  • NavDestination の setId メソッドが @IdRes でアノテーションされるように修正し、リソース ID のみを受け付けるようになりました。(I69b80

  • findNode の int パラメータが、resid から resId になりました。(I7711d

依存関係の更新

  • Safe-Args は、Android Gradle プラグイン 4.2.0 に依存するようになりました。これによって、applicationIdTextResource の使用に関する警告が表示されなくなります。(I6d67bb/172824579

バージョン 2.4.0-alpha01

2021 年 5 月 18 日

androidx.navigation:navigation-*:2.4.0-alpha01 がリリースされました。バージョン 2.4.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

  • NavControllercurrentBackStackEntryAsFlow() メソッドは、現在の NavBackStackEntry が変更されるたびに出力する Flow を提供します。このフローは、OnDestinationChangedListener を手動で管理する代わりに使用できます。(I19c4a#89b/163947280

複数のバックスタック

NavController は、デスティネーションのバックスタックを管理する責任を負っていて、navigate() でデスティネーションに移動する際にバックスタックにそのデスティネーションを追加し、popBackStack() が呼び出されるか、システムの [戻る] ボタンがトリガーされたときにデスティネーションを削除します。既存の NavOptions クラスとナビゲーション グラフ XML の <action> エントリの統合が拡張され、バックスタックの保存と復元をサポートしました。(b/80029773

この変更の一環として、onNavDestinationSelected()BottomNavigationView.setupWithNavController()NavigationView.setupWithNavController()NavigationUI メソッドは、ポップされたデスティネーションの状態を自動的に保存および復元するようになりました。これにより、コードを変更せずに複数のバックスタックをサポートできるようになりました。Fragment で Navigation を使用する場合、複数のバックスタックとの統合には、この方法をおすすめします。(Ie07ca

状態の保存と復元の基盤となる API は、次のようなサーフェスから公開されています。

  • Navigation XML の <action> 要素で、app:popUpToSaveStateapp:restoreState のブール値属性を使用して、app:popUpTo でポップされたデスティネーションの状態を保存し、app:destination として渡されたデスティネーションと関連付けられた状態を復元できるようになりました。

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL では、popUpTo ビルダーrestoreState ブール値プロパティと saveState ブール値プロパティを追加できます。

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • NavOptions.BuilderNavOptions オブジェクトを手動で作成する場合は、setRestoreState() と、追加の saveState パラメータをとる setPopUpTo() の新しいオーバーロードを使用できます。

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • プログラムによる popBackStack() の呼び出しに、saveState パラメータを追加できるようになりました。

いずれの場合も、NavController は各 NavBackStackEntry の状態を保存および復元します。これには、すべてのナビゲーション デスティネーションにスコープ設定された ViewModel が含まれます。Navigator API が更新され、各 Navigator が独自の状態の保存と復元をサポートするようになりました。

Navigation Compose で composable デスティネーションに使用される ComposeNavigator と、Fragment の Navigation で <fragment> デスティネーションに使用される FragmentNavigatorDynamicFragmentNavigator が更新され、新しい Navigator API を使用して状態の保存と復元をサポートするようになりました。

ナビゲーションのルート

ルートは、デスティネーションを一意に識別する String です。このコンセプトは、これまで Navigation Compose でしか使用されていませんでしたが、コア Navigation API の一部になりました。これは、Navigation Kotlin DSL でグラフを作成する際に使用する整数の ID の代わりになります。(b/172823546

ID のみを受け取っていたすべての API に、ルート String を受け取るオーバーロードが追加されました。これには、navigate()popBackStack()popUpTo()getBackStackEntry() が含まれます。

これにより、一部の API が次のように影響を受けます。

  • Kotlin DSL の popUpTo kotlin プロパティは非推奨になりました。popUpToId の使用をおすすめします。(I59c73b/172823546
  • getStartDestination() API は非推奨になりました。getStartDestinationId() の使用をおすすめします。(I0887fb/172823546

以前のバージョンの Navigation Compose から Navigation Compose 2.4.0-alpha01 にアップグレードする場合、以下の拡張機能のインポートが不要になり、削除が必要となります。

import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo

KEY_ROUTE 引数は、NavDestinationroute プロパティに置き換えられ、navBackStackEntry.destination.route を直接呼び出せるようになりました。

API の変更

  • すべての Navigation アーティファクトが Kotlin で書き直されました。これにより、ジェネリクスを使用するクラス(NavType サブクラスなど)の null 可能性が改善されました。これまで -ktx アーティファクトに含まれていたすべての Kotlin 拡張関数は、それぞれのメイン アーティファクトに移動されました。-ktx アーティファクトは引き続き公開されますが、完全に空になっています。(b/184292145
  • NavDeepLinkBuilder は、生成されたバックスタックに複数の異なるデスティネーションを追加できるようになりました。(I3ee0db/147913689
  • DynamicNavHostFragment のファクトリ関数を追加しました(Icd515b/175222619
  • NavBackStackEntry の一意の ID が公開 API の一部として公開されるようになりました。(Ie033a
  • name フィールド、argument フィールド、NamedNavArgument の破棄関数が公開になりました。(#174b/181320559
  • 関連するコンポジション ローカルに NavBackStackEntry を提供する新しい NavBackStackEntry#provideToCompositionLocals 拡張を導入しました。(#175b/187229439

Safe Args

  • Safe Args が NavArgs クラスごとに fromSavedStateHandle() メソッドを生成するようになりました。(#122b/136967621

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • KotlinPoet 1.8.0 に依存するように Safe Args を更新しました。(#172b/183990444

動作の変更

  • ナビゲーションは、Lifecycle 2.3.1 に依存するようになり、setGraph()popBackStack()navigateUp()navigate()NavBackStackEntry Lifecycle を更新するメソッドを @MainThread とマークし、Navigation を Lifecycle 2.3.0 で導入されたメインスレッド強制に対応させました。(b/171125856
  • ディープリンクからの Enum 引数の解析で、大文字と小文字を区別しないようになりました。列挙型の値が RED でも、http://www.example.com/red のようなディープリンクが www.example.com/{color} ディープリンクとマッチするようになりました。(#152b/135857840

Compose の互換性

  • androidx.navigation:navigation-compose:2.4.0-alpha01 は、Compose バージョン 1.0.0-beta07 以降に対してのみ互換性があります。

バグの修正

  • 末尾の引数のプレースホルダが、接尾辞が完全に一致するディープリンクよりも優先される問題を修正しました。(#153b/184072811
  • NavHostFragment が、デフォルトの DialogFragmentNavigator と同じ @Navigator.Name("dialog") を使用するカスタムの Navigator をサポートするようになりました。(Ib1c2cb/175979140
  • 同じインスタンスで繰り返し呼び出しても問題が発生しないように、NavigatorProvider#addNavigator の動作を改善しました。(#176b/187443146

外部からの協力

  • Safe Args が NavArgs クラスごとに fromSavedStateHandle() メソッドを生成するようにした simonschiller 様に感謝いたします。(#122b/136967621
  • ディープリンクの Enum 引数の解析で大文字と小文字を区別しないようにした Bradleycorn 様に感謝いたします。(#152b/135857840
  • 末尾の引数のプレースホルダが、接尾辞が完全に一致するディープリンクよりも優先される問題を修正した osipxd 様に感謝いたします。(#153b/184072811
  • KotlinPoet 1.8.0 に依存するように Safe Args を更新した tatocaster 様に感謝いたします。(#172b/183990444
  • name フィールド、argument フィールド、NamedNavArgument の破棄関数を公開にした jossiwolf 様に感謝いたします。(#174b/181320559
  • 関連するコンポジション ローカルに NavBackStackEntry を提供する新しい NavBackStackEntry#provideToCompositionLocals 拡張を導入した jossiwolf 様に感謝いたします。(#175b/187229439
  • 同じインスタンスで繰り返し呼び出しても問題が発生しないように、NavigatorProvider#addNavigator の動作を改善した jossiwolf 様に感謝いたします。(#176b/187443146

バージョン 1.0.0-alpha10

2021 年 4 月 7 日

androidx.navigation:navigation-compose:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

API の変更

  • NavHostModifier を受け入れるようになりました。これは、デスティネーションのコンポーザブルをラップするコンポーズ可能なコンテナに渡されます。(I85acab/175125483

バグの修正

  • NavHost が、NavHost をプレビューしている場合など、OnBackPressedDispatcherOwner が見つからないときでも機能するようになりました。(I7d8b4
  • Navigation Compose が、Navigation 2.3.5 に依存するようになり、NavHost デスティネーション内で BackHandler を使用する際の問題が解決されました。(I7e63bb/182284739

バージョン 1.0.0-alpha09

2021 年 3 月 10 日

androidx.navigation:navigation-compose:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • LocalViewModelStoreOwner.current が null 許容の ViewModelStoreOwner を返すようになり、現在の合成中に ViewModelStoreOwner が使用可能かどうかを判断しやすくなりました。ViewModelStoreOwner を必要とする API(viewModel()NavHost など)は、ViewModelStoreOwner が設定されていない場合、引き続き例外をスローします。(Idf39a

バグの修正

  • Navigation Compose が、Navigation 2.3.4 に依存するようになりました。これには、グラフを設定した後に同じ ViewModelStore オブジェクトを設定しようとする問題の修正が含まれます。(I65c24b/177825470

バージョン 1.0.0-alpha08

2021 年 2 月 24 日

androidx.navigation:navigation-compose:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

新機能

  • NavHostLocalSavedStateRegistryOwner の CompositionLocal をそのデスティネーションの NavBackStackEntry に入力して、SavedStateRegistry に直接保存されたすべての状態がデスティネーションとともに保存、復元されるようになりました。(I435d7b/179469431

バージョン 1.0.0-alpha07

2021 年 2 月 10 日

androidx.navigation:navigation-compose:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

依存関係の更新

  • Navigation Compose が Lifecycle ViewModel Compose 1.0.0-alpha01 に依存し、composable デスティネーションに対して viewModel() サポートを提供するようになりました。(I7a374
  • NavHostActivity-Compose 1.3.0-alpha01 の新しい LocalOnBackPressedDispatcherOwner を使用し、NavController に設定されている OnBackPressedDispatcher を取得するようになりました。(I65b12

バージョン 1.0.0-alpha06

2021 年 1 月 28 日

androidx.navigation:navigation-compose:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれるコミットについては、こちらをご覧ください。

API の変更

  • 関連付けられた NavBackStackEntry を返す getBackStackEntry(route: String) 拡張メソッドを NavController に追加しました。(If8931

バージョン 1.0.0-alpha05

2021 年 1 月 13 日

androidx.navigation:navigation-compose:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください

Compose 1.0.0-alpha10 に依存するよう更新しました。

バージョン 1.0.0-alpha04

2020 年 12 月 16 日

androidx.navigation:navigation-compose:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください

  • Compose 1.0.0-alpha09 との互換性をサポートするよう更新しました。

バージョン 1.0.0-alpha03

2020 年 12 月 2 日

androidx.navigation:navigation-compose:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください

バグの修正

  • 構成の変更、またはプロセスの中断や再作成の後に popBackStack()navigateUp() が機能しない問題を修正しました。(Icea47b/173281473
  • NavHost 内のネストされたグラフへの移動が正しく行われるようになりました。(I0948db/173647694

バージョン 1.0.0-alpha02

2020 年 11 月 11 日

androidx.navigation:navigation-compose:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください

API の変更

  • Navigation Compose で、popUpTo オペレーションと launchSingleTop オペレーションを使用するために NavOptions がサポートされるようになりました(If96c3b/171468994
  • ID ではなくルートを取るナビゲーション関数が追加され、Navigation Compose DSL でネストされたグラフを作成できるようになりました。(I1661d
  • NavHost のパラメータのリストで、startDestination を route より前に移動しました(Ie620e
  • NavHost コンポーザブル外の開始デスティネーションとしてルートを使用するグラフを作成できるようになりました。(Iceb75

バージョン 1.0.0-alpha01

2020 年 10 月 28 日

android.navigation:navigation-compose:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれるコミットについては、こちらをご覧ください

新機能

navigation-compose アーティファクトは、Navigation コンポーネントJetpack Compose との統合を提供します。アプリ内の宛先として @Composable 関数を使用します。

この初回リリースで提供されるものは以下のとおりです。

  • Kotlin DSL を使用してナビゲーション グラフを作成できる NavHost composable。
  • ライフサイクル、ViewModel、登録済みの状態の、宛先レベルでのスコープ設定。
  • システムの [戻る] ボタンとの自動統合。
  • 引数を受け渡す、宛先にディープリンクを追加する、以前の宛先に結果を返す機能のサポート。
  • 状態のホイストや、NavHost の外部にある composable(ボトム ナビゲーション バーなど)への NavController の接続を可能にする、rememberNavController() および currentBackStackEntryAsState() 内の Compose 固有のヘルパー。

詳しくは、Compose でのナビゲーションについてのガイドをご覧ください。

バージョン 2.3.5

バージョン 2.3.5

2021 年 4 月 7 日

androidx.navigation:navigation-*:2.3.5 がリリースされました。バージョン 2.3.5 に含まれる commit については、こちらをご覧ください

新機能

  • NavDeepLinkRequest または Uri を使用して移動する際、KEY_DEEP_LINK_INTENT を介して引数からインテントを取得し、外部ディープリンクですでに利用可能な機能をミラーリングすることで、結果のデスティネーションで Uri、アクション、MIME タイプにアクセスできるようになりました。(I975c3b/181521877

バグの修正

  • LifecycleOwner として NavBackStackEntry でディスパッチャに追加された OnBackPressedCallbacks が、アクティビティのライフサイクルが STOPPED から STARTED になった後に、適切にインターセプトするようになりました(IFF94Fb/182284739
  • ディープリンク ドメインの解析で大文字と小文字が区別されないようになり、www.example.comwww.example.comwww.Example.com の両方と一致するようになりました。なお、クエリ パラメータ名では、引き続き大文字と小文字が区別されます。(#144b/153829033
  • デスティネーションに null 値非許容のデフォルト引数が複数あり、それらの引数のサブセットのみをオーバーライドしながら、そのデスティネーションに移動したときに発生する場合がある NullPointerException を修正しました。(aosp/1644827

依存関係の更新

  • Navigation Safe Args Gradle プラグインが Kotlin Gradle プラグイン 1.4.31 に依存するようになりました。(aosp/1661058b/181156413

外部からの協力

  • ディープリンク ドメインの解析で大文字と小文字が区別されないようにする pull リクエストに関し、bentrengrove に感謝します。(#144b/153829033

バージョン 2.3.4

バージョン 2.3.4

2021 年 3 月 10 日

androidx.navigation:navigation-*:2.3.4 がリリースされました。バージョン 2.3.4 に含まれる commit については、こちらをご覧ください

新機能

  • ディープリンク URI の一部として送信された ReferenceType 引数が適切に解析されるようになりました。これにより、未加工の整数値と、0x で始まる 16 進数値の両方がサポートされます。(#127b/179166693
  • app:argType="float" の引数の android:defaultValue で整数のデフォルト値がサポートされるようになったことで、android:defaultValue="0" を使用できるようになり、0.0 を使用する必要がなくなりました。(#117b/173766247

バグの修正

  • Navigation の動的機能のサポートを使用するとインストールの進行状況が停滞する問題を修正しました。(Ib27a7b/169636207
  • すでに設定されている同じオブジェクトで setViewModelStore または setLifecycleOwner を呼び出すと、no-op になるようになりました。(Idf491b/177825470
  • Safe-Args で、java 使用時の適切なメソッドに抑制アノテーションが追加されました。(I8fbc5b/179463137

外部からの協力

  • pull リクエストにより、ディープリンク URI の一部として送信された ReferenceType 引数が適切に解析されるようになりました。JvmName に感謝いたします。(#127b/179166693
  • pull リクエストにより、app:argType=”float” の引数の defaultValue で整数のデフォルト値をサポートできるようになりました。tatocaster に感謝いたします。(#117b/173766247

バージョン 2.3.3

バージョン 2.3.3

2021 年 1 月 27 日

androidx.navigation:navigation-*:2.3.3 がリリースされました。バージョン 2.3.3 に含まれる commit については、こちらをご覧ください

バグの修正

  • LifecycleCREATED に移動される前に NavBackStackEntry をポップしてもクラッシュしなくなりました。(Ie3ba3
  • b/171364502 が原因で回帰が発生する問題(アニメーション リソース値が 0 のアクティビティに移動すると ResourceNotFoundException がスローされる)を修正しました。(I7aedbb/176819931

バージョン 2.3.2

バージョン 2.3.2

2020 年 12 月 2 日

androidx.navigation:navigation-*:2.3.2 がリリースされました。バージョン 2.3.2 に含まれる commit については、こちらをご覧ください

バグの修正

  • onNavDestinationSelected<activity> の宛先を使用してもアクティビティに移動できない NavigationUI の回帰を修正しました (I22e34b/171364502
  • navigation-dynamic-features-fragment が新しくインストールした宛先に何度も移動する問題を修正しました。(aosp/1486056b/169636207
  • launchSingleTop の使用時にデフォルトの引数を OnDestinationChangedListener インスタンスに送信できない問題を修正しました。(I2c5cb
  • ネストされたナビゲーション グラフに移動しても、バックスタック上に新しいグラフ インスタンスが作成されない問題を修正しました。(Ifc831
  • ナビゲーション グラフで最後の宛先を削除した popUpTonavigate() を使用すると、すぐには破棄されず、ナビゲーション グラフ自体がバックスタックから削除される問題を修正しました。(I910a3
  • Navigation SafeArgs は、Kotlin の明示的な API モードをサポートする KotlinPoet バージョン 1.7.2 を使用するようになりました。(I918b5
  • NavHostFragment.findNavController(Fragment) は、Fragment 階層と Fragment のビュー階層の既存の確認に加えて、DialogFragment のルート デコレーション ビューも確認するようになりました。これにより、Navigation を使用するダイアログ フラグメントを FragmentScenarioNavigation.setViewNavController() でテストできます。(I69e0d

バージョン 2.3.1

バージョン 2.3.1

2020 年 10 月 14 日

androidx.navigation:navigation-*:2.3.1 がリリースされました。バージョン 2.3.1 に含まれる commit については、こちらをご覧ください

新機能

  • ナビゲーション UI にデフォルトの Animator リソースが追加されました。デフォルトのアニメーション リソースよりもこちらをおすすめします。(b/167430145
  • NavOptions が hashCode メソッドと equals メソッドをオーバーライドするようになりました(b/161586466
  • Navigation で「No destination with ID」の IllegalArgumentException に現在のデスティネーションが追加されました。これにより、デベロッパーのデバッグ環境が改善されます。(b/168311416

バグの修正

  • 生成された引数クラス名が 100 文字を超えていても、Safe Args が return 行をラップしなくなりました。(b/168584987

依存関係の変更

  • navigation-uiDrawerLayout 1.1.1 に依存するようになりました。これにより、NavigationUILOCK_MODE_LOCKED_CLOSED または LOCK_MODE_LOCKED_OPEN を使用している場合でもドロワーを開くことができます。(b/162253907
  • Safe Args は KotlinPoet 1.6.0 に依存するようになりました(aosp/1435911
  • Safe Args は AGP 4.0.1 に依存するようになりました(aosp/1442337

バージョン 2.3.0

バージョン 2.3.0

2020 年 6 月 24 日

androidx.navigation:navigation-*:2.3.0 がリリースされました。バージョン 2.3.0 に含まれる commit については、こちらをご覧ください

2.2.0 以降の主な変更

  • 機能モジュールの統合: navigation-dynamic-features-runtime アーティファクトと navigation-dynamic-features-fragment アーティファクトを使用すると、機能モジュール内で定義されている宛先に移動して、必要に応じて機能モジュールのインストールを自動的に処理できます。詳細については、機能モジュールを使用して移動するをご覧ください。
  • ナビゲーションのテスト: navigation-testing アーティファクトから提供される TestNavHostController を使って、現在の宛先を設定し、ナビゲーション操作後にバックスタックを確認できます。詳細については、ナビゲーションをテストするをご覧ください。
  • 結果を返す: Navigation バックスタック上で各宛先に関連付けられた NavBackStackEntry を使って SavedStateHandle にアクセスできるようになりました。これは、特定のバックスタック エントリに関連付ける必要がある保存済み状態を少量保存するのに最適です。詳しくは、以前の宛先に結果を返すをご覧ください。
  • NavigationUI による Openable のサポート: NavigationUI で使用している DrawerLayout がすべて、より汎用的な Openable インターフェースに置き換えられました。このインターフェースは CustomView 1.1.0 に追加され、DrawerLayout によって DrawerLayout 1.1.0 内に実装されます。
  • ディープリンクでのアクションと MIME タイプのサポート: ディープリンクが拡張され、以前から利用できる app:uri に加えて app:actionapp:mimeType をサポートするようになりました。NavController では、新しい NavDeepLinkRequest クラスを介して、これらのフィールドを自由に組み合わせた移動をサポートするようになりました。詳細については、NavDeepLinkRequest を使用して移動するをご覧ください。

既知の問題

  • マニフェスト マージツールでは、ディープリンクのアクションと MIME タイプはまだサポートされていません。このサポートが完了するまで、マニフェストの <nav-graph> 要素から生成された <intent-filter> 要素には、その <data> 要素の MIME タイプやカスタム <action> は含まれません。マニフェストに適切な <intent-filter> を手動で追加する必要があります。

バージョン 2.3.0-rc01

2020 年 6 月 10 日

androidx.navigation:navigation-*:2.3.0-rc01 がリリースされました。バージョン 2.3.0-rc01 に含まれる commit については、こちらをご覧ください

バグの修正

  • 引数のない宛先のインスタンスを引数のある別のインスタンスに singleTop で置き換える際の NullPointerException を修正しました。(b/158006669
  • NavController がスローする destination is unknown 例外に、NavController の状態を判断しやすくする追加のデバッグ情報が含まれるようになりました。(b/157764916

バージョン 2.3.0-beta01

2020 年 5 月 20 日

androidx.navigation:navigation-*:2.3.0-beta01 がリリースされました。バージョン 2.3.0-beta01 に含まれる commit については、こちらをご覧ください

バグの修正

  • NavBackStackEntryLifecycle がプロセス終了後に適切に更新されない問題を修正しました。(b/155218371
  • setGraph() を呼び出す前に登録された OnDestinationChangedListener インスタンスが、プロセス終了後、復元された宛先に適切に送信されるようになりました。(b/155218371
  • singleTop を使用する際に、NavBackStackEntry の引数が正しく更新され、更新された引数がすべての OnDestinationChangeListener インスタンスに送信されるようになりました。(b/156545508

依存関係の更新

バージョン 2.3.0-alpha06

2020 年 4 月 29 日

androidx.navigation:navigation-*:2.3.0-alpha06 がリリースされました。バージョン 2.3.0-alpha06 に含まれる commit については、こちらをご覧ください

新機能

  • ディープリンクが拡張され、以前の app:uri に加えて app:actionapp:mimeType をサポートするようになりました。NavController で、新しい NavDeepLinkRequest クラスを介して、これらのフィールドの任意の組み合わせによるナビゲーションがサポートされるようになりました。(b/136573074b/135334841

API の変更

  • Dynamic Navigation の宛先に対する Kotlin DSL のサポートを大幅に拡張しました。(b/148969800

バグの修正

  • ネストされた最初の宛先を使用するときにディープリンク インテントが無視される問題を修正しました。(b/154532067

バージョン 2.3.0-alpha05

2020 年 4 月 15 日

androidx.navigation:navigation-*:2.3.0-alpha05 がリリースされました。バージョン 2.3.0-alpha05 に含まれる commit については、こちらをご覧ください

新機能

  • <include-dynamic> を使用するダイナミック グラフについては、app:graphPackage を指定する必要がなくなり、applicationIdmoduleName 接尾辞をピリオドに続けて追加したものをデフォルトで使用します。graphPackage をカスタマイズする必要がある場合は、${applicationId} プレースホルダをご利用いただけるようになりました。(b/152696768
  • ナビゲーション グラフ Kotlin DSL では、アクションの defaultArguments Map を公開し、ナビゲーション XML ファイル内の <action> 要素にデフォルト値を設定する機能をミラーリングするようになりました。(b/150345605

バグの修正

  • Navigation 2.2.2 以降: アクティビティに複数の NavHostFragment インスタンスがある場合に、グラフの最初の宛先にディープリンクする際の IllegalStateException を修正しました。(b/147378752

依存関係の更新

バージョン 2.3.0-alpha04

2020 年 3 月 18 日

androidx.navigation:navigation-*:2.3.0-alpha04 がリリースされました。バージョン 2.3.0-alpha04 に含まれる commit については、こちらをご覧ください

新機能

  • Navigation Kotlin DSL に機能モジュールのアクティビティとフラグメントの宛先に対するサポートを追加しました。(b/148969800

API の変更

  • DynamicExtras クラスでビルダー パターンが使用されなくなり、直接構築できるようになりました。(aosp/1253671
  • DynamicActivityNavigator は、Activity ではなく Context をコンストラクタで受け取るようになりました。(aosp/1250252

バグの修正

  • NavigationUI で空のラベル(宛先が android:label=”” の場合)が無視されなくなり、空の文字列にタイトルが正しく設定されるようになりました。(b/148679860

依存関係の更新

  • Navigation Dynamic Features アーティファクトが Play Core 1.6.5に依存するようになりました。(b/149556401

バージョン 2.3.0-alpha03

2020 年 3 月 4 日

androidx.navigation:navigation-*:2.3.0-alpha03 がリリースされました。バージョン 2.3.0-alpha03 に含まれる commit については、こちらをご覧ください

API の変更

  • DrawerLayout 具象クラスに依存する代わりに、AppBarConfigurationCustomView 1.1.0-alpha02DrawerLayout 1.1.0-alpha04DrawerLayout が実装)で導入された Openable インターフェースを使用するようになり、それによって NavigationUIOpenable のカスタム実装を使用することが可能になりました。(b/129030452

バグの修正

  • navigation-common-ktx ProGuard ルールで、すべての NavArgs インスタンスではなく、使用されている NavArgs クラスのみが正しく保持されるようになりました。(b/150213558

依存関係の変更

  • Navigation の Core 1.2.0 への依存がもとに戻り、Navigation が Core 1.2.0 の新しい API に依存しない場合に、デベロッパーに新しい依存関係に移行することを強制しないようにするために、Core 1.1.0 に依存するようになりました。

バージョン 2.3.0-alpha02

2020 年 2 月 19 日

androidx.navigation:navigation-*:2.3.0-alpha02 がリリースされました。バージョン 2.3.0-alpha02 に含まれる commit については、こちらをご覧ください

新機能

  • NavBackStackEntry を使用すると、特定のバックスタック エントリに関連付ける必要がある、少量の保存済み状態を格納するのに適した SavedStateHandle にアクセスできるようになりました。使用例については、結果を返すをご覧ください。(b/79672220

API の変更

  • getCurrentBackStackEntry()getPreviousBackStackEntry() の有用なメソッドが追加され、現在と以前の宛先の NavBackStackEntry を簡単に取得できるようになりました。(b/79672220

バグの修正

  • navigateUp() は、独自のタスクスタックでアプリを起動する際に、現在の宛先の引数と KEY_DEEP_LINK_INTENT を以前の宛先に渡すようになりました。(b/147456890

依存関係の変更

  • Navigation が Core 1.2.0 に依存するようになりました。

バージョン 2.3.0-alpha01

2020 年 2 月 5 日

androidx.navigation:navigation-*:2.3.0-alpha01 がリリースされました。バージョン 2.3.0-alpha01 に含まれる commit については、こちらをご覧ください

新機能

  • 新しい navigation-testing アーティファクトでは TestNavHostController クラスを利用できます。このクラスは、Navigation をテストする際にモック NavController の代わりに使用でき、これにより現在の宛先を設定し、ナビゲーション操作の後にバックスタックを確認できます。(b/140884273
  • 新しい navigation-dynamic-features-fragment(およびその推移的な依存関係 navigation-dynamic-features-runtime)を使用すると、機能モジュールの宛先またはナビゲーション グラフ全体(<include-dynamic> 経由)を含めることができ、それらの宛先に移動する場合にオンデマンドの機能モジュールをシームレスにインストールできます。詳細については、機能モジュールを使用して移動するをご覧ください。(b/132170186

バグの修正

  • Navigation 2.2.1 以降: クエリ パラメータを持たないディープリンクは、後続の {argument} 要素に追加する、またはディープリンクとの照合を行うのではなく、クエリ パラメータを正しく無視するようになりました。(b/147447512
  • Navigation 2.2.1 以降: DrawerArrowDrawablenavigation-ui ProGuard ルールが更新され、android.enableJetifier=true は必須ではなくなりました。(b/147610424
  • Navigation 2.2.1 以降: navigation-common-ktx モジュールに、navigation-runtime-ktx と同じマニフェスト パッケージ名を共有するのではなく、固有のマニフェスト パッケージ名が付与されました。(aosp/1141947

依存関係の更新

バージョン 2.2.2

バージョン 2.2.2

2020 年 4 月 15 日

androidx.navigation:navigation-*:2.2.2 がリリースされました。バージョン 2.2.2 に含まれる commit については、こちらをご覧ください

バグの修正

  • アクティビティに複数の NavHostFragment インスタンスがある場合に、グラフの最初の宛先にディープリンクする際の IllegalStateException を修正しました。(b/147378752
  • NavigationUI で空のラベル(宛先が android:label=”” の場合)が無視されなくなり、空の文字列にタイトルが正しく設定されるようになりました。これは以前に Navigation 2.3.0-alpha04 でリリースされたものです。(b/148679860
  • navigation-common-ktx ProGuard ルールで、すべての NavArgs インスタンスではなく、使用されている NavArgs クラスのみが正しく保持されるようになりました。これは以前に Navigation 2.3.0-alpha03 でリリースされたものです。(b/150213558

依存関係の更新

バージョン 2.2.1

バージョン 2.2.1

2020 年 2 月 5 日

androidx.navigation:navigation-*:2.2.1 がリリースされました。バージョン 2.2.1 に含まれる commit については、こちらをご覧ください

バグの修正

  • クエリ パラメータを持たないディープリンクは、後続の {argument} 要素に追加する、またはディープリンクとの照合を行うのではなく、クエリ パラメータを正しく無視するようになりました。(b/147447512
  • DrawerArrowDrawablenavigation-ui ProGuard ルールを更新し、android.enableJetifier=true は必須ではなくなりました。(b/147610424
  • navigation-common-ktx モジュールに、navigation-runtime-ktx と同じマニフェスト パッケージ名を共有するのではなく、固有のマニフェスト パッケージ名が付与されました。(aosp/1141947

依存関係の更新

バージョン 2.2.0

バージョン 2.2.0

2020 年 1 月 22 日

androidx.navigation:navigation-*:2.2.0 がリリースされました。バージョン 2.2.0 に含まれる commit については、こちらをご覧ください

2.1.0 以降の重要な変更

  • NavBackStackEntry: NavController.getBackStackEntry() を呼び出して、バックスタック上の宛先またはナビゲーション グラフの ID を渡せるようになりました。返される NavBackStackEntry は、ナビゲーション駆動の LifecycleOwnerViewModelStoreOwnerNavController.getViewModelStoreOwner() で返されるものと同じ)、SavedStateRegistryOwner を提供し、さらにその宛先の開始に使用する引数を提供します。
  • Lifecycle ViewModel SavedState の統合: NavController.getBackStackEntry() または NavController.getViewModelStoreOwner() によって返される ViewModelStoreOwnerby navGraphViewModels() または ViewModelProvider コンストラクトを使用する際、SavedStateViewModelFactory がデフォルト ファクトリになりました。
  • ディープリンクのクエリ パラメータ サポート: クエリ パラメータを持つディープリンクが、順序変更されたクエリ パラメータをサポートするようになりました。ディープリンクのマッチング時、デフォルト値を持つ引数または null 許容の引数がオプションになりました。
  • アニメーション サポートの改善: NavHostFragmentFragment 1.2.0FragmentContainerView を使用するようになり、アニメーションの z オーダーの問題と、フラグメントにディスパッチするウィンドウ インセットが修正されます。

バージョン 2.2.0-rc04

2019 年 12 月 18 日

androidx.navigation:navigation-*:2.2.0-rc04 がリリースされました。バージョン 2.2.0-rc04 に含まれる commit については、こちらをご覧ください

バグの修正

  • Fragment 1.2.0-rc04 で調整されたフェード アニメーションに合わせて、navigation-ui で使用されるデフォルトのフェード アニメーションを調整しました。(b/145769814

バージョン 2.2.0-rc03

2019 年 12 月 4 日

androidx.navigation:navigation-*:2.2.0-rc03 がリリースされました。バージョン 2.2.0-rc03 に含まれる commit については、こちらをご覧ください

バグの修正

  • パスの末尾にクエリ パラメータと引数を使用したときに、最終パス引数の複数の文字を解析できないというディープリンク解析の問題を修正しました。(b/144554689
  • オプションのパラメータが null ではなく "@null" を受け取るというディープリンク解析の問題を修正しました。(b/141613546
  • NavHostFragment は、FragmentContainerView で使用した場合に構成変更後にグラフを正しく復元するようになりました。(b/143752103

依存関係の変更

  • Navigation は、必要に応じて Lifecycle 2.2.0-rc03、Lifecycle ViewModel SavedState 1.0.0-rc03、Activity 1.1.0-rc03、Fragment 1.2.0-rc03 に依存するようになりました。

バージョン 2.2.0-rc02

2019 年 11 月 7 日

androidx.navigation:navigation-*:2.2.0-rc02 がリリースされました。バージョン 2.2.0-rc02 に含まれる commit については、こちらをご覧ください

依存関係の変更

  • Navigation が androidx.lifecycle 2.2.0-rc02 に依存するようになりました。

バージョン 2.2.0-rc01

2019 年 10 月 23 日

androidx.navigation:navigation-*:2.2.0-rc01 がリリースされました。2.2.0-beta01 からの変更はありません。バージョン 2.2.0-rc01 に含まれる commit については、こちらをご覧ください

バージョン 2.2.0-beta01

2019 年 10 月 9 日

androidx.navigation:navigation-*:2.2.0-beta01 がリリースされました。バージョン 2.2.0-beta01 に含まれる commit については、こちらをご覧ください

新機能

  • NavDestination とそのサブクラスが toString() をオーバーライドして、デバッグ時に役立つ情報をさらに提供するようになりました(b/141264986

動作の変更

  • ディープリンクのマッチングの際、余分なクエリ パラメータがあると、マッチングが失敗するのではなく、無視するようになりました(b/141482822

バグの修正

  • クエリ パラメータも指定されている場合、ディープリンクのパス内の引数が無視される問題を修正しました(b/141505755
  • ActivitynavArgs() Kotlin 拡張機能で、追加機能がない場合のエラー メッセージを改善しました(b/141408999
  • Safe Args によって生成される Directions Java クラスにデフォルト値が指定されました(b/141099045
  • Safe Args によって生成される Args Java クラスにデフォルト値が指定されました(b/140123727
  • Toolbar を使用する場合、NavigationUI で 2 つのトップレベルの宛先間を移動したときのテキストの変化がアニメーション化されなくなりました(b/140848160

バージョン 2.2.0-alpha03

2019 年 9 月 18 日

androidx.navigation:navigation-*:2.2.0-alpha03 がリリースされました。バージョン 2.2.0-alpha03 に含まれる commit については、こちらをご覧ください

動作の変更

  • setGraph を呼び出した後に setViewModelStore() を呼び出した結果が、IllegalStateException になりました。これは初期セットアップの一環として、常に NavHost が設定し、NavBackStackEntry のすべてのインスタンスが ViewModel インスタンスに一貫して保存されるようにするものです(aosp/1111821

バグの修正

  • 複数の異なるナビゲーション グラフのスコープ設定された ViewModelStore インスタンスにアタッチされた ViewModel インスタンスを使用する際の ConcurrentModificationException を修正しました(aosp/1112257

バージョン 2.2.0-alpha02

2019 年 9 月 5 日

androidx.navigation:navigation-*:2.2.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • クエリ パラメータを持つディープリンクが、順序の変更されたクエリ パラメータをサポートするようになりました。ディープリンクのマッチング時、デフォルト値を持つ引数または null 許容の引数が使用可能になりました(b/133273839
  • NavController.getBackStackEntry() を呼び出して、バックスタック上の宛先またはナビゲーション グラフの ID を渡せるようになりました。返される NavBackStackEntry は、ナビゲーション駆動の LifecycleOwnerViewModelStoreOwnerNavController.getViewModelStoreOwner() で返されるものと同じ)、SavedStateRegistryOwner を提供し、さらにその宛先の開始に使用する引数を提供します(aosp/1101691aosp/1101710

バグの修正

  • ViewPager2 への NavHostFragment の追加が IllegalArgumentException で失敗する問題を修正しました(b/133640271
  • NavInflater が不必要に getResourceName() を呼び出さないようになり、インフレーション時間が最大 40% 高速化されました(b/139213740

バージョン 2.2.0-alpha01

2019 年 8 月 7 日

androidx.navigation:navigation-*:2.2.0-alpha01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • NavController.getViewModelStoreOwner() によって返される ViewModelStoreOwnerby navGraphViewModels() または ViewModelProvider コンストラクタを使用する際、SavedStateViewModelFactory がデフォルト ファクトリになりました(b/135716331

API の変更

  • Navigation 2.1.0-rc01: 2.1.0-alpha02 で導入された NavController でサポートが終了した getViewModelStore() API が削除されました(aosp/1091021

バグの修正

  • NavHostFragmentFragmentContainerView を使用するようになりました。これにより、アニメーションの Z-ordering の問題とフラグメントにディスパッチするウィンドウ インセットが修正されます(b/137310379

バージョン 2.1.0

バージョン 2.1.0

2019 年 9 月 5 日

androidx.navigation:navigation-*:2.1.0 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

2.0.0 以降の重要な変更

  • ViewModels をナビゲーション グラフにスコープ設定: -ktx ライブラリを使用する Kotlin ユーザーの by navGraphViewModels() プロパティ デリゲートを使用するか、または NavController に追加された getViewModelStoreOwner() API を使用して、ナビゲーション グラフのレベルにスコープ設定された ViewModels を作成できるようになりました。詳しくは、宛先間での UI 関連データの共有についての説明をご覧ください。
  • ダイアログの宛先: navigate するときに DialogFragment を表示する <dialog> の宛先を作成できるようになりました。NavHostFragment はデフォルトでダイアログの宛先をサポートしています。詳しくは、DialogFragment からの宛先の作成についての説明をご覧ください。
  • URI による移動: Uri を使用して navigate できるようになりました。宛先に追加した <deepLink> を使用して、そこに移動します。詳しくは、URI を使用した移動についての説明をご覧ください。
  • NavHostController: カスタム NavHost の作成で特に使用されていた API が NavHostController に移動し、ホストしている LifecycleOwnerOnBackPressedDispatcherViewModelStore に、実装が NavController を接続できるようになりました。

バージョン 2.1.0-rc01

2019 年 8 月 7 日

androidx.navigation:navigation-*:2.1.0-rc01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • 2.1.0-alpha02 で導入された NavController の、サポートが終了した getViewModelStore() API が削除されました(aosp/1091021

バージョン 2.1.0-beta02

2019 年 7 月 19 日

androidx.navigation:*:2.1.0-beta02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 2.1.0-beta01 で導入された意図しない JaCoCo 依存関係を削除しました(b/137782950

バージョン 2.1.0-beta01

2019 年 7 月 17 日

androidx.navigation:*:2.1.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • NavigationUI は、Toolbar または CollapsingToolbarLayoutsetupWithNavController() を使用するときに、Up ボタンの削除をアニメーション化するようになりました(b/131403621

バグの修正

  • findNavController() を持つ同じコンテナで複数の NavHostFragments を使用する場合のタイミングの問題を修正しました(b/136021571

バージョン 2.1.0-alpha06

2019 年 7 月 2 日

androidx.navigation:*:2.1.0-alpha06 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • NavHostFragment で使用される app:navGraph 属性を navigation-runtime アーティファクトに移動しました。XML を介して追加できるカスタム ナビゲータでは、この属性を使用して Navigation Editor のホストパネルと統合する必要があります(b/133880955

API の変更

  • ViewModelStoreOwner を返す新しい getViewModelStoreOwner() メソッドを優先して、NavControllergetViewModelStore() API のサポートが終了しました(aosp/987010
  • <dialog> の宛先など、フローティング ウィンドウの宛先の実装は、<dialog> の宛先すべてに実装されるようになったマーカー インターフェース FloatingWindow に一般化されました。上部のアプリバーを操作する NavigationUI メソッドは、FloatingWindow の宛先を無視するようになりました(b/133600763

動作の変更

  • <dialog> の宛先を使用している場合、Navigation の状態が画面に表示される状態と同期して正しく維持されるようになりました。結果として、<fragment> の宛先など、ダイアログ以外でアクティビティ以外の宛先に移動すると、Navigation は自動的に <dialog> の宛先をポップするようになりました(b/134089818

バグの修正

  • Navigation は、ディープリンクの処理時にアクティビティを再作成する場合に発生するアニメーションを抑制するようになりました。これにより、ビジュアル フラッシュが修正されます(b/130362979
  • 最初のフラグメントを追加するときにフラグメントをポップすると Navigation バックスタックが同期しなくなるバグを修正しました(b/133832218

バージョン 2.1.0-alpha05

2019 年 6 月 5 日

androidx.navigation:*:2.1.0-alpha05 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • NavController のホスト関連 API の名前を変更し、NavController の新しいサブクラス NavHostController に移動しました(aosp/966091
  • NavControllersetHostOnBackPressedDispatcherOwner() メソッドが NavHostControllersetOnBackPressedDispatcher() メソッドに置き換えられ、これを呼び出す前に setLifecycleOwner() の呼び出しが必要になりました(aosp/965409
  • 以前 setHostOnBackPressedDispatcherOwner() によって返されていた NavHostOnBackPressedManager クラスを置き換える enableOnBackPressed(boolean) メソッドが NavHostController に追加されました(aosp/966091

バグの修正

  • URI で移動した後にバックスタックが正しくないという問題を修正しました(b/132509387
  • NavController によって自動的に処理されるディープリンクが、一度だけトリガーされるようになりました(b/132754763

バージョン 2.1.0-alpha04

2019 年 5 月 16 日

androidx.navigation:*:2.1.0-alpha04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • NavHostFragment がシステムの [戻る] ボタンのイベントをインターセプトする際に、app:defaultNavHost を正しく尊重するようになりました。これにより、Navigation 2.1.0-alpha03 での回帰が修正されます。b/132077777
  • DialogFragmentNavigator が、popBackStack()navigateUp() のオペレーションを正しく処理するようになりました。b/132576764
  • ネストされたグラフ間を繰り返し移動する場合の、IllegalStateException: unknown destination during restore の問題を修正しました。b/131733658

バージョン 2.1.0-alpha03

2019 年 5 月 7 日

androidx.navigation:*:2.1.0-alpha03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

既知の問題

  • app:defaultNavHost="false" を指定しているにもかかわらず、NavHostFragment がシステムの [戻る] ボタンをインターセプトし続ける。b/132077777

新機能

  • navigate するときに DialogFragment を表示する <dialog> の宛先を作成できるようになりました。NavHostFragment は、ダイアログの宛先をデフォルトでサポートしています。b/80267254
  • リソース ID または NavDirections インスタンスで navigate を呼び出すだけでなく、Uri を介して移動できるようになりました。宛先に追加した <deepLink> を使用して正しい宛先に移動できます。b/110412864

動作の変更

  • NavigationUI が提供するデフォルトのアニメーションが、アクティビティとフラグメントのデフォルトのアニメーション速度に合わせて、400 ミリ秒から 220 ミリ秒に高速化されました。b/130055522

API の変更

  • NavHostFragmentcreateFragmentNavigator() メソッドのサポートを終了し、その機能を新しい onCreateNavController() メソッドに移動しました。これは、NavHostFragment のサブクラス化の際にカスタム ナビゲータを追加する正しいエントリ ポイントであることを明確にするためです。b/122802849
  • hasDeepLink() メソッドが NavDestination に追加され、指定の Uri がその宛先で処理できるかどうか、または、NavGraph の場合はナビゲーション グラフの任意の宛先で処理できるかどうかを確認できるようになりました。b/117437718

バグの修正

  • デフォルトの引数が OnDestinationChangedListener インスタンスに正しく渡されるようになりました。b/130630686
  • NavHostFragment が、OnBackPressedDispatcher を使用してシステムの Back イベントをインターセプトするようになりました。これにより、フラグメントに戻る際にフラグメント ライフサイクル メソッドで条件付き移動を行う場合の問題が修正されます。b/111598096
  • Safe Args では、app:argType を指定されていない android:defaultValue=”@null”string 引数として適切に推定されるようになりました。b/129629192

バージョン 2.1.0-alpha02

2019 年 4 月 3 日

androidx.navigation:*:2.1.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • Kotlin ユーザーの by navGraphViewModels() プロパティ デリゲートを介して、または NavController に追加された getViewModelStore() API を使用して、ナビゲーション グラフのレベルにスコープ設定された ViewModel を作成できるようになりました。b/111614463

API の変更

  • app:targetPackage<activity> の宛先に追加して、一致するパッケージ名を制限できるようになりました。パッケージを独自のアプリ ID に制限する app:targetPackage="${applicationId}" をサポートしています。b/110975456

バグの修正

  • <activity> の宛先の android:name は、インフレーション時に Class に解析されなくなりました。これにより、動的機能を使用するときに ClassNotFoundExceptions が防止されます。b/124538597

バージョン 2.1.0-alpha01

2019 年 3 月 19 日

これは Navigation 2.1.0 の最初のアルファ版リリースです。

依存関係の変更

  • Navigation は androidx.core:core:1.0.1androidx.fragment:fragment:1.1.0-alpha05 に依存するようになりました。また、このリリースで androidx.legacy:legacy-support-core-utils:1.0.0 への依存関係が削除されました。b/128632612

API の変更

  • リソース ID と Bundle でクリック リスナーを作成する代替手段として、新しい Navigation.createNavigateOnClickListener(NavDirections) メソッドが追加されました。 b/127631752
  • FragmentNavigator.instantiateFragment のサポートが終了しました。デフォルトの実装は、FragmentFactory を使用してフラグメントをインスタンス化するようになりました。b/119054429

バグの修正

  • 宛先にアタッチされた引数がある場合に Navigation は null Bundle を送信しなくなり、android:defaultValue="@null" を使用する際の問題が解決されました。b/128531879
  • Safe Args が KotlinPoet 1.1.0 に依存するようになり、非常に長いパッケージ名に関する問題が解決されました。b/123654948

バージョン 2.0.0

バージョン 2.0.0

2019 年 3 月 14 日

Navigation 2.0.0 がリリースされました。2.0.0-rc02 からの変更はありません。

バージョン 2.0.0-rc02

2019 年 3 月 6 日

Navigation 2.0.0-rc02 は androidx.navigation グループ ID を持つ新しいアーティファクトを提供するようになり、その依存関係が AndroidX の同等の依存関係に変更されました。

Navigation 2.0.0-rc02 の動作は 1.0.0-rc02 の動作と同じです。新しい依存関係に一致するように依存関係を更新する場合を除き、1.0.0-rc02 からアップデートするためにコードを変更する必要はありません。

Navigation の 2.X リリースを使用するには、プロジェクトが AndroidX に移行されている必要があります。Navigation 1.0 安定版は、サポート ライブラリの依存関係を使用する最後のリリースになります。1.0 より後の開発はすべて AndroidX をベースとし、2.0 安定版リリースを基にビルドされます。

AndroidX 以前の依存関係

AndroidX 以前のバージョンの Navigation では、次の依存関係を含めます。

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

Safe Args では、次のクラスパス最上位build.gradle ファイルに追加します。

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

バージョン 1.0.0

バージョン 1.0.0

2019 年 3 月 14 日

Navigation 1.0.0 がリリースされました。1.0.0-rc02 からの変更はありません。

バージョン 1.0.0-rc02

2019 年 2 月 26 日

これは Navigation の 1.0.0 安定版リリースの 2 番目のリリース候補です。このリリースには、バグの修正がいくつか含まれています。

バグの修正

  • ルートグラフに ID がない場合に popBackStack() が無視される問題を修正しました。b/126251695
  • navigateUp() が、FLAG_ACTIVITY_NEW_TASK なしでディープリンクを処理した後に呼び出された場合に、アプリのタスクに戻るナビゲーションを正しく処理するようになりました。b/126082008
  • ActivityNavigator.applyPopAnimationsToPendingTransition で適切なポップ終了アニメーションが適用されない問題を修正しました。b/126237567
  • Safe Args によって生成される Kotlin コードが、R クラスに関連付けられたパッケージ名の infun などの Kotlin キーワードを適切にエスケープするようになりました。b/126020455

バージョン 1.0.0-rc01

2019 年 2 月 21 日

これは、Navigation の 1.0.0 安定版リリースのリリース候補です。このリリースにはバグの修正が 1 つ含まれています。

バグの修正

  • フラグメントと singleTop のナビゲーション オペレーションを使用する際の問題を修正しました。b/124294805

バージョン 1.0.0-beta02

2019 年 2 月 12 日

このリリースには、いくつかのマイナーな改善と重要なバグの修正が含まれています。

新機能

  • reference 引数の android:defaultValue として 0 を使用できるようになりました。b/124248602

動作の変更

  • ディープリンクの完全一致が、.* または引数の一致よりも優先されるようになりました。b/123969518

バグの修正

  • popBackStack()navigateUp が、バックスタックの最後の宛先をポップするときに false を正しく返すようになりました。これにより、1.0.0-beta01 で発生した回帰が修正されます。b/123933201
  • Navigation が、保存されたインスタンス状態を復元する際に ClassLoader を正しく設定するようになりました。これにより、Navigator の保存された状態または NavDestination に送信された引数でカスタムクラスを使用する場合の問題が回避されます。b/123893858
  • Safe Args で生成された NavArgs クラスが、保存されたインスタンスの状態から Parcelable[] 引数を復元する際にクラッシュしなくなりました。b/123963545
  • Safe Args が、不必要に生成された Kotlin クラスを適切にクリーンアップするようになりました。b/124120883

バージョン 1.0.0-beta01

2019 年 2 月 4 日

これは Navigation の最初のベータ版リリースです。今後、重大な問題がない限り、Navigation API は次のバージョンまで安定版として使用される予定です。このリリースにはバグの修正と動作の変更がいくつか含まれています。

動作の変更

  • Navigation において、引数のデフォルト値が実行時と Safe Args で同等に扱われるようになりました。その結果、別のリソース(たとえば @color/colorPrimary)を指すデフォルト値を持つことができる引数は、app:argType="reference" を指定されたもののみに限定されます。別の app:argType で参照のデフォルト値を使用しようとすると、ナビゲーション XML の解析時に例外が発生します。b/123551990
  • Safe Args は Android Gradle プラグイン 3.3.0 に依存するようになりました。aosp/888413
  • Safe Args は Kotlin 1.3.20 に依存するようになりました。aosp/888414

バグの修正

  • Safe Args が、すべてのバージョンの Android Gradle プラグインのライブラリと機能モジュールで使用可能になりました。b/121304903
  • 単一の popBackStack() オペレーションで、一度に 1 つの宛先だけではなく、宛先のすべてのコピーがバックスタックの一番上からポップされる回帰を修正しました。b/123552990
  • FragmentNavigator 状態が NavController の状態と同期しなくなり、バックスタックを復元しようとすると IllegalStateException が発生する問題を修正しました。b/123803044
  • 難読化で ProGuard を使用する場合に、NavigationUI で処理された戻る矢印が表示されない問題を修正しました。b/123449431
  • Safe Args によって生成されたコードが、.OuterClass$InnerClass 形式の静的内部クラスを指す app:argType の使用を適切に処理するようになりました。b/123736741
  • Safe Args によって生成された Java コードが、グローバル アクションと深くネストされた宛先を適切に処理するようになりました。b/123347762

バージョン 1.0.0-alpha11

2019 年 1 月 23 日

これは、Safe Args の問題を修正する 1.0.0-alpha10 のホットフィックス リリースです。

バグの修正

  • Safe Args が、グローバル アクションに関連付けられた Directions クラスをインポートできない問題を修正しました。b/123307342

バージョン 1.0.0-alpha10

2019 年 1 月 23 日

既知の問題

  • Safe Args は、グローバル アクションに関連付けられた Directions クラスをインポートできません。b/123307342

このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「互換性を破る変更」をご覧ください。

新機能

  • Kotlin ユーザーは by navArgs() プロパティのデリゲートを使用して、Activity または Fragment で、Safe Args が生成した NavArgs クラスへの参照を必要に応じて取得できるようになりました。b/122603367
  • Safe Args で、androidx.navigation.safeargs.kotlin プラグインを適用して Kotlin コードを生成できるようになりました。Kotlin コードは、以前の androidx.navigation.safeargs プラグインを介してまだ利用可能なビルダー パターンにデフォルトの引数と不変クラスを使用して、Kotlin 専用のモジュールとしてビルドされます。b/110263087

動作の変更

  • ディープリンクのマッチングで、一致する引数が最も多いディープリンクが優先されるようになりました。b/118393029
  • NavControllersetGraph() を呼び出すと、バックスタックがリセットされるようになりました。b/111450672
  • 不明なディープリンクは IllegalStateException をスローするのではなく、無視されるようになりました。これにより、ネストされた(または複数の)NavHostFragment での問題が解決されます。b/121340440

互換性を破る変更

  • アクティビティにポップ アニメーションを適用する NavOptions.applyPopAnimationsToPendingTransition() メソッドが ActivityNavigator に移動されました。b/122413117
  • Safe Args が、引数のないアクションの同一クラスの重複を回避するようになりました。生成された NavDirections クラスの、引数のないメソッドの戻り値の型が NavDirections になりました。b/123233147
  • Safe Args によって生成される Directions クラスに、パブリック コンストラクタがなくなりました。生成された静的メソッドのみを使用する必要があります。b/123031660
  • Safe Args によって生成される NavDirections クラスに、パブリック コンストラクタがなくなりました。このようなクラスは、生成された Directions クラスの静的メソッドでのみ生成する必要があります。b/122963206
  • NavDirectionsgetArguments() から返された Bundle が、@Nullable ではなく @NonNull としてマークされるようになりました。b/123243957

バグの修正

  • NavDeepLinkBuilder が、渡された引数を使用して一意性を判断することにより、同じ宛先への複数の同時 PendingIntent を正しく処理するようになりました。b/120042732
  • NavController が、ネストされた NavHostFragment または他の子フラグメントをバックスタックとともに使用する場合に、popBackStack() オペレーションを正しく処理するようになりました。b/122770335
  • NavigationUI が、Up ボタンのコンテンツ説明を正しく設定するようになりました。b/120395362
  • Safe Args で生成された Directions クラスが、宛先のアクションと同じ ID を持つグローバル アクションを正しく処理するようになりました。b/122962504
  • Safe Args で生成された NavDirections クラスが、equals() が true を返す場合に、等しい hashCode() 値を持つようになりました。b/123043662
  • NavHostFragmentFragmentManager でカスタムの FragmentTransactions を実行しようとした場合に、FragmentNavigator が適切なエラー メッセージをスローするようになりました。常に getChildFragmentManager() を使用する必要があります。b/112927148

バージョン 1.0.0-alpha09

2018 年 12 月 18 日

このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「互換性を破る変更」をご覧ください。

android.arch.navigation:navigation-testing アーティファクトの開発は継続しないこととなりました。このアーティファクトが NavController の内部テストに役立つことは実証済みですが、別のテスト戦略(navigate() が適切に呼び出されることを確認するために NavController インスタンスをモックするなど)を採用することを強くおすすめします。このアプローチは、AndroidDevSummit 2018 での単一アクティビティに関する講演で詳しく説明されています。また、Navigation を使用したテスト用の補足ドキュメントの作成が予定されています。

新機能

  • menuCategory="secondary" を指定した MenuItem は、NavigationUI のメソッドとともに使用した場合に、バックスタックをポップしなくなりました。b/120104424
  • AppBarConfiguration を使用して、navController.navigateUp()false を返したときに呼び出される代替の OnNavigateUpListener インスタンスを設定できるようになりました。b/79993862b/120690961

互換性を破る変更

  • argType="reference" を指定して <argument> を使用した場合、Navigation が参照を解析しなくなり、代わりに未加工のリソース ID そのものを提供するようになりました。b/111736515
  • setup メソッドに合わせて、onNavDestinationSelected() ではデフォルトでナビゲーション グラフの開始デスティネーションにポップで戻るようになりました。バックスタックがポップされないようにするには、menuCategory="secondary"MenuItem に追加してください。aosp/852869
  • 生成された Args クラスの fromBundle() メソッドが、null 許容の Bundle ではなく、非 null の Bundle を受け取るようになりました。aosp/845616

バグの修正

  • ディープリンクから引数が常に文字列として解析されるのではなく、正しい argType として適切に解析されるようになりました。b/110273284
  • Navigation がそのパブリック リソースを適切にエクスポートするようになりました。b/121059552
  • Safe Args に Android Gradle プラグイン 3.4 Canary 4 以上との互換性が備わりました。b/119662045

バージョン 1.0.0-alpha08

2018 年 12 月 6 日

このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「互換性を破る変更」をご覧ください。

新機能

  • 宛先のラベルを NavigationUI のメソッドで使用した場合、android:label{argName} インスタンスが自動的に正しい引数で置き換えられるようになりました。b/80267266
  • Navigation がサポート ライブラリ 28.0.0 に依存するようになりました。b/120293333

互換性を破る変更

  • OnNavigatedListener の名前が OnDestinationChangedListener に変更されました。b/118670572
  • OnDestinationChangedListener が引数の Bundle も渡すようになりました。aosp/837142
  • app:clearTask 属性と app:launchDocument 属性、およびそれらに関連するメソッドが削除されました。バックスタックからすべての宛先を削除するには、グラフのルートを指定して app:popUpTo を使用してください。b/119628354
  • ActivityNavigator.ExtrasBuilder パターンを使用するようになり、任意の Intent.FLAG_ACTIVITY_ フラグを設定する機能が追加されました。aosp/828140
  • NavController.onHandleDeepLink の名前が handleDeepLink に変更されました。aosp/836063
  • サブクラス化を想定していない多数のクラスとメソッド(NavOptionsNavInflaterNavDeepLinkBuilderAppBarConfiguration など)が final に設定されました。aosp/835681
  • サポートが終了した NavHostFragment.setGraph() メソッドが削除されました。aosp/835684
  • サポートが終了した NavigationUI.navigateUp(DrawerLayout, NavController) メソッドが削除されました。aosp/835684
  • フラグメント作成機能が FragmentNavigator に移動され、フラグメントの作成を簡単に FragmentFactory にデリゲートできるようになりました。b/119054429
  • NavGraphNavigator のコンストラクタが Context を取得しなくなりました。aosp/835340
  • NavigatorProvider がインターフェースではなくクラスになりました。getNavigatorProvider() から返される NavigatorProvider の機能は変更されていません。aosp/830660
  • NavDestination.navigate() を削除しました。代わりに、Navigatornavigate() を呼び出してください。aosp/830663
  • Navigator の大幅なリファクタリングが行われ、OnNavigatorNavigatedListener が不要になりました。代わりに、navigate が移動先の NavDestination を返すようになりました。
  • Navigator インスタンスがポップイベントを NavController に送信できなくなりました。[戻る] ボタンの押下をインターセプトして navController.popBackStack() を呼び出す場合は、OnBackPressedCallback の使用を検討してください。aosp/833716

バグの修正

  • 宛先が <navigation> 要素の場合、常に popUpTo が動作するようになりました。b/116831650
  • ネストされたグラフを使用した場合に IllegalArgumentException が発生する各種のバグを修正しました。b/118713731b/113611083b/113346925b/113305559
  • <activity> の宛先の dataPattern 属性では、toString() を呼び出して文字列以外の引数から引数を設定するようになりました。b/120161365

Safe Args

  • Safe Args がシリアル化可能なオブジェクト(列挙値など)をサポートするようになりました。列挙型では、クラス名を指定せずに列挙リテラルをそのまま使用することによって、デフォルト値を設定できます(例: app:defaultValue="READ")。b/111316353
  • Safe Args がサポート対象のすべての型の配列をサポートするようになりました。b/111487504
  • Safe Args ではリソース ディレクトリのサブフォルダが無視されるようになりました。b/117893516
  • Safe Args では必要に応じて、@Override アノテーションが追加されるようになりました。b/117145301

バージョン 1.0.0-alpha07

2018 年 10 月 29 日

新機能

  • 新しい AppBarConfiguration クラスを使用して、どの宛先が最上位の宛先と見なされるかをカスタマイズできるようになりました。詳しくは、更新されたドキュメントをご覧ください。b/117333663
  • グラフの最初の宛先に引数を渡せるようになりました。b/110300470
  • ディープリンクが、ピリオド、ハイフン、プラス記号を含むカスタム形式をサポートするようになりました。b/112806402

互換性を破る変更

  • navigation-testing-ktx モジュールが navigation-testing artifact に組み込まれ、公開されなくなりました。
  • navigation-testing アーティファクトが Kotlin 標準ライブラリに依存するようになりました。Kotlin の規則との整合性を強化するために API が変更されましたが、Java で作成されたテストでは API を引き続き使用できます。
  • メタデータ マニフェストで登録されたナビゲーション グラフがサポートされなくなりました。b/118355937
  • アクションを <activity> の宛先にアタッチできなくなりました。aosp/785539

バグの修正

  • ディープリンクがクエリ パラメータを正しく解析できるようになりました。b/110057514
  • アクティビティの宛先が開始と終了のすべてのアニメーションに正しく適用されるようになりました。b/117145284
  • カスタム ナビゲータを使用している場合に構成の変更後に発生するクラッシュを解決しました。b/110763345

Safe Args

  • Safe Args は Android Gradle プラグイン 3.2.1 に依存するようになりました。b/113167627
  • 内部クラス用の Directions を生成できるようになりました。b/117407555
  • <include> グラフへの Directions の生成に関する問題を修正しました。b/116542123

バージョン 1.0.0-alpha06

2018 年 9 月 20 日

新機能

API の変更

  • 互換性を破る変更: ナビゲータの navigate() メソッドが Navigator.Extras パラメータを受け取るようになりました。
  • NavController の getGraph() メソッドが NonNull になりました。b/112243286

バグの修正

  • NavigationUI.setupWithNavController() を各宛先からビューとともに使用する場合、ビューがリークしなくなりました。b/111961977
  • ナビゲータの onSaveState() が一度だけ呼び出されるようになりました。b/112627079

Safe Args

  • ナビゲーション先の Directions クラスによってその親の Directions クラス(存在する場合)が拡張されるようになりました。b/79871405
  • Directions クラスと Args クラスに、便利な toString() の実装が追加されました。b/111843389

バージョン 1.0.0-alpha05

2018 年 8 月 10 日

バグの修正

  • 不正なバックスタック動作を引き起こすバグを修正しました。b/111907708
  • 生成された Args クラスの equals() のバグを修正しました。b/111450897
  • Safe Args のビルドエラーを修正しました。b/109409713
  • リソース ID から Java 名への変換を修正しました。b/111602491
  • Safe Args プラグインの null 可能性に関するエラー メッセージを修正しました。
  • 不足している null 可能性アノテーションを追加しました。

バージョン 1.0.0-alpha04

2018 年 7 月 19 日

Navigation 1.0.0-alpha04 と関連する Safe Args Gradle プラグインで、API の変更、動作の変更、バグの修正が多数行われています。

API / 動作の変更

  • NavHostFragment では常に、現在のフラグメントがメインのナビゲーション フラグメントとして設定され、外部の NavController がポップされる前に子フラグメント マネージャーがポップされるようになります。b/111345778

Safe Args

  • 互換性を破る変更: app:type が、他のライブラリ(ConstraintLayout 2.0.0-alpha1 など)との競合を避けるために、app:argType に変更されました。b/111110548
  • Safe Args からのエラー メッセージをクリックできるようになりました。b/111534438
  • Args クラスでは、NonNull 属性が実際に null ではないことが確認されるようになりました。b/111451769
  • NavDirections と Args によって生成されたクラスに NonNull アノテーションが追加されました。b/111455455b/111455456

バグの修正

  • フラグメントの宛先にディープリンクした後に発生する、システムの [戻る] ボタンに関する問題を修正しました。b/111515685

バージョン 1.0.0-alpha03

2018 年 7 月 12 日

Navigation 1.0.0-alpha03 と関連する Safe Args Gradle プラグインで、API の変更、動作の変更、バグの修正が多数行われています。

API / 動作の変更

  • ツールバー用の NavigationUI.setupWithNavController メソッドが追加されました。b/109868820
  • CollapsingToolbarLayout 用の NavigationUI.setupWithNavController メソッドが追加されました。b/110887183
  • バックスタックが空の場合、または特定の宛先 ID がバックスタック内にない場合に、popBackStack() から false が返されるようになりました。b/110893637
  • FragmentManager が状態を保存した後に、FragmentNavigator においてナビゲーション操作が無視されるようになったことで、「Can not perform this action after onSaveInstanceState」例外を回避できるようになりました。b/110987825

Safe Args

  • 互換性を破る変更: アクション名と引数名に含まれる英数字以外の文字が、それぞれの NavDirections メソッドの名前でキャメルケースに置き換えられます。
    • 例: DemoController.indexsetDemoControllerIndex になります。b/79995048
    • 例: action_show_settingsactionShowSettings になります。b/79642240
  • 互換性を破る変更: デフォルトでは、引数が null ではないと見なされるようになりました。文字列と Parcelable の引数に null 値を許可するには、app:nullable="true" を追加します。b/79642307
  • 「123L」の形式で defaultValues を指定して、app:type="long" を使用できるようになりました。b/79563966
  • Parcelable の引数がサポートされるようになりました(app:type には完全修飾クラス名を使用します)。サポートされる唯一のデフォルト値は "@null" です。b/79563966
  • Args クラスに equals()hashCode() が実装されました。b/79642246
  • Safe Args プラグインをライブラリ プロジェクトに適用できるようになりました。b/80036553
  • Safe Args プラグインを機能プロジェクトに適用できるようになりました。b/110011752

バグの修正

  • フラグメントのライフサイクル メソッドでのナビゲーションの際に発生する問題を修正しました。b/109916080
  • ネストされたグラフを介して複数回ナビゲーションする際に発生する問題を修正しました。b/110178671
  • グラフで最初の宛先を指定して setPopUpTo を使用する場合に発生する問題を修正しました。b/109909461
  • app:defaultValue のすべての値が文字列として渡されていた問題を修正しました。b/110710788
  • Android Gradle プラグイン 3.2 Beta 01 にバンドルされている aapt2 で、Navigation XML ファイル内のすべての android:name 属性に関する保持ルールが追加されました。b/79874119
  • デフォルトの FragmentNavigator を置き換える際に発生するメモリリークを修正しました。b/110900142

バージョン 1.0.0-alpha02

2018 年 6 月 7 日

動作の変更

  • FragmentNavigatorsetReorderingAllowed(true) を使用するようになりました。b/109826220

  • Navigation で、ディープリンク URL から解析された引数が URL デコードされるようになりました。b/79982454

バグの修正

  • フラグメントのライフサイクル メソッドから Navigation を呼び出す場合に発生する IllegalStateException を修正しました。b/79632233

  • Navigation がサポート ライブラリ 27.1.1 に依存するようになり、アニメーションを使用する場合のちらつきが修正されました。b/80160903

  • defaultNavHost="true" を子フラグメントとして使用する場合に発生する IllegalArgumentException を修正しました。b/79656847

  • NavDeepLinkBuilder を使用する場合に発生する StackOverflowError を修正しました。b/109653065

  • ネストされたグラフに戻る際に発生する IllegalArgumentException を修正しました。b/80453447

  • launchSingleTop を使用する場合にフラグメントが重なる問題を修正しました。b/79407969

  • Navigation で、ネストされたグラフ用に適切な合成バックスタックを作成できるようになりました。b/79734195

  • NavigationUI で、ネストされたグラフを MenuItem として使用する場合に適切なアイテムをハイライト表示できるようになりました。b/109675998

API の変更

  • アクションの clearTask 属性と、NavOptions の関連する API のサポートが終了しました。b/80338878

  • アクションの launchDocument 属性と、NavOptions の関連する API のサポートが終了しました。b/109806636

バージョン 1.0.0-alpha01

2018 年 5 月 8 日

Navigation は、アプリ内ナビゲーションを作成するためのフレームワークを提供します。この初回リリースは 1.0.0-alpha01 です。