Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Navigation

Navigation は、Android アプリ内の「宛先」間を移動するためのフレームワークであり、宛先がフラグメントやアクティビティなど、どのコンポーネントとして実装されているかにかかわらず、一貫した API を提供します。

androidx.navigation グループ内のすべてのアーティファクトのリストを以下に示します。

アーティファクト 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
このライブラリの最終更新日: 2020 年 10 月 28 日

依存関係の宣言

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

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

dependencies {
  def nav_version = "2.3.1"

  // 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:1.0.0-alpha02"
}

Safe Args

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

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

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

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

apply plugin: "androidx.navigation.safeargs"

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

apply plugin: "androidx.navigation.safeargs.kotlin"

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

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

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

フィードバック

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

新しい問題を報告する

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

バージョン 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.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 に含まれるコミットについては、こちらをご覧ください

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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 引数のない宛先のインスタンスを引数のある別のインスタンスに 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • クエリ パラメータを持つディープリンクが、順序の変更されたクエリ パラメータをサポートするようになりました。ディープリンクのマッチング時、デフォルト値を持つ引数または 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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/11263087

動作の変更

  • ディープリンクのマッチングで、一致する引数が最も多いディープリンクが優先されるようになりました。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 です。