Navigation
androidx.navigation
グループ内のすべてのアーティファクトのリストを以下に示します。
アーティファクト | 現在の安定版リリース | 次のリリース候補 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
navigation-* | 2.3.3 | - | - | - |
navigation-compose | - | - | - | 1.0.0-alpha07 |
依存関係の宣言
Navigation への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
dependencies { def nav_version = "2.3.3" // 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-alpha05" }
Safe Args
Safe Args をプロジェクトに追加するには、最上位の build.gradle
ファイルに次の classpath
を含めます。
buildscript { repositories { google() } dependencies { def nav_version = "2.3.3" 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 のドキュメントをご覧ください。
Navigation Compose バージョン 1.0.0
バージョン 1.0.0-alpha07
2021 年 2 月 10 日
androidx.navigation:navigation-compose:1.0.0-alpha07
がリリースされました。バージョン 1.0.0-alpha07 に含まれるコミットについては、こちらをご覧ください。
依存関係の更新
- Navigation Compose が Lifecycle ViewModel Compose 1.0.0-alpha01 に依存し、
composable
デスティネーションに対してviewModel()
サポートを提供するようになりました。(I7a374) NavHost
が Activity-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 に含まれるコミットについては、こちらをご覧ください。
- Compose
1.0.0-alpha09
との互換性をサポートするよう更新しました。
バージョン 1.0.0-alpha03
2020 年 12 月 2 日
androidx.navigation:navigation-compose:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 に含まれるコミットについては、こちらをご覧ください。
バグの修正
- 構成の変更、またはプロセスの中断や再作成の後に
popBackStack()
とnavigateUp()
が機能しない問題を修正しました。(Icea47、b/173281473) - NavHost 内のネストされたグラフへの移動が正しく行われるようになりました。(I0948d、b/173647694)
バージョン 1.0.0-alpha02
2020 年 11 月 11 日
androidx.navigation:navigation-compose:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 に含まれるコミットについては、こちらをご覧ください。
API の変更
- Navigation Compose で、popUpTo オペレーションと launchSingleTop オペレーションを使用するために NavOptions がサポートされるようになりました(If96c3、b/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.3
バージョン 2.3.3
2021 年 1 月 27 日
androidx.navigation:navigation-*:2.3.3
がリリースされました。バージョン 2.3.3 に含まれる commit については、こちらをご覧ください。
バグの修正
Lifecycle
がCREATED
に移動される前にNavBackStackEntry
をポップしてもクラッシュしなくなりました。(Ie3ba3)- b/171364502 が原因で回帰が発生する問題(アニメーション リソース値が
0
のアクティビティに移動するとResourceNotFoundException
がスローされる)を修正しました。(I7aedb、b/176819931)
バージョン 2.3.2
Navigation バージョン 2.3.2
2020 年 12 月 2 日
androidx.navigation:navigation-*:2.3.2
がリリースされました。バージョン 2.3.2 に含まれるコミットについては、こちらをご覧ください。
バグの修正
onNavDestinationSelected
で<activity>
の宛先を使用してもアクティビティに移動できないNavigationUI
の回帰を修正しました (I22e34、b/171364502)navigation-dynamic-features-fragment
が新しくインストールした宛先に何度も移動する問題を修正しました。(aosp/1486056、b/169636207)launchSingleTop
の使用時にデフォルトの引数をOnDestinationChangedListener
インスタンスに送信できない問題を修正しました。(I2c5cb)- ネストされたナビゲーション グラフに移動しても、バックスタック上に新しいグラフ インスタンスが作成されない問題を修正しました。(Ifc831)
- ナビゲーション グラフで最後の宛先を削除した
popUpTo
でnavigate()
を使用すると、すぐには破棄されず、ナビゲーション グラフ自体がバックスタックから削除される問題を修正しました。(I910a3) - Navigation SafeArgs は、Kotlin の明示的な API モードをサポートする KotlinPoet バージョン 1.7.2 を使用するようになりました。(I918b5)
NavHostFragment.findNavController(Fragment)
は、Fragment 階層と Fragment のビュー階層の既存の確認に加えて、DialogFragment のルート デコレーション ビューも確認するようになりました。これにより、Navigation を使用するダイアログ フラグメントをFragmentScenario
とNavigation.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-ui
が DrawerLayout 1.1.1 に依存するようになりました。これにより、NavigationUI
はLOCK_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
インターフェースに置き換えられました。このインターフェースは CustomView1.1.0
に追加され、DrawerLayout
によって DrawerLayout1.1.0
内に実装されます。- ディープリンクでのアクションと MIME タイプのサポート: ディープリンクが拡張され、以前から利用できる
app:uri
に加えてapp:action
とapp: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 に含まれるコミットについては、こちらをご覧ください。
バグの修正
NavBackStackEntry
のLifecycle
がプロセス終了後に適切に更新されない問題を修正しました。(b/155218371)setGraph()
を呼び出す前に登録されたOnDestinationChangedListener
インスタンスが、プロセス終了後、復元された宛先に適切に送信されるようになりました。(b/155218371)singleTop
を使用する際に、NavBackStackEntry
の引数が正しく更新され、更新された引数がすべてのOnDestinationChangeListener
インスタンスに送信されるようになりました。(b/156545508)
依存関係の更新
NavigationUI
アーティファクトが CustomView1.1.0-rc01
と DrawerLayout1.1.0-rc01
に依存するようになりました。(aosp/1309696)
バージョン 2.3.0-alpha06
2020 年 4 月 29 日
androidx.navigation:navigation-*:2.3.0-alpha06
がリリースされました。バージョン 2.3.0-alpha06 に含まれる commit については、こちらをご覧ください。
新機能
- ディープリンクが拡張され、以前の
app:uri
に加えてapp:action
とapp:mimeType
をサポートするようになりました。NavController で、新しいNavDeepLinkRequest
クラスを介して、これらのフィールドの任意の組み合わせによるナビゲーションがサポートされるようになりました。(b/136573074、b/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
を指定する必要がなくなり、applicationId
にmoduleName
接尾辞をピリオドに続けて追加したものをデフォルトで使用します。graphPackage
をカスタマイズする必要がある場合は、${applicationId}
プレースホルダをご利用いただけるようになりました。(b/152696768)- ナビゲーション グラフ Kotlin DSL では、アクションの
defaultArguments
Map
を公開し、ナビゲーション XML ファイル内の<action>
要素にデフォルト値を設定する機能をミラーリングするようになりました。(b/150345605)
バグの修正
- Navigation 2.2.2 以降: アクティビティに複数の
NavHostFragment
インスタンスがある場合に、グラフの最初の宛先にディープリンクする際のIllegalStateException
を修正しました。(b/147378752)
依存関係の更新
- Navigation が Fragment
1.2.4
に依存するようになりました。(aosp/1277325) - Dynamic Navigation が Play Core
1.7.2
に依存するようになりました。(aosp/1282257)
バージョン 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
具象クラスに依存する代わりに、AppBarConfiguration
は CustomView1.1.0-alpha02
(DrawerLayout1.1.0-alpha04
でDrawerLayout
が実装)で導入されたOpenable
インターフェースを使用するようになり、それによってNavigationUI
でOpenable
のカスタム実装を使用することが可能になりました。(b/129030452)
バグの修正
navigation-common-ktx
ProGuard ルールで、すべてのNavArgs
インスタンスではなく、使用されているNavArgs
クラスのみが正しく保持されるようになりました。(b/150213558)
依存関係の変更
- Navigation の Core
1.2.0
への依存がもとに戻り、Navigation が Core1.2.0
の新しい API に依存しない場合に、デベロッパーに新しい依存関係に移行することを強制しないようにするために、Core1.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
以降:DrawerArrowDrawable
のnavigation-ui
ProGuard ルールが更新され、android.enableJetifier=true
は必須ではなくなりました。(b/147610424) - Navigation
2.2.1
以降:navigation-common-ktx
モジュールに、navigation-runtime-ktx
と同じマニフェスト パッケージ名を共有するのではなく、固有のマニフェスト パッケージ名が付与されました。(aosp/1141947)
依存関係の更新
- Navigation
2.2.1
以降: Navigation2.2.1
は Lifecycle ViewModel SavedState2.2.0
と Fragment1.2.1
に依存するようになりました。
バージョン 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)
依存関係の更新
- Navigation が Fragment
1.2.4
に依存するようになりました。(aosp/1277325)
バージョン 2.2.1
バージョン 2.2.1
2020 年 2 月 5 日
androidx.navigation:navigation-*:2.2.1
がリリースされました。バージョン 2.2.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- クエリ パラメータを持たないディープリンクは、後続の
{argument}
要素に追加する、またはディープリンクとの照合を行うのではなく、クエリ パラメータを正しく無視するようになりました。(b/147447512) DrawerArrowDrawable
のnavigation-ui
ProGuard ルールを更新し、android.enableJetifier=true
は必須ではなくなりました。(b/147610424)navigation-common-ktx
モジュールに、navigation-runtime-ktx
と同じマニフェスト パッケージ名を共有するのではなく、固有のマニフェスト パッケージ名が付与されました。(aosp/1141947)
依存関係の更新
- Navigation
2.2.1
が、Lifecycle ViewModel SavedState2.2.0
と Fragment1.2.1
に依存するようになりました。
バージョン 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
は、ナビゲーション駆動のLifecycleOwner
、ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
で返されるものと同じ)、SavedStateRegistryOwner
を提供し、さらにその宛先の開始に使用する引数を提供します。 - Lifecycle ViewModel SavedState の統合:
NavController.getBackStackEntry()
またはNavController.getViewModelStoreOwner()
によって返されるViewModelStoreOwner
でby navGraphViewModels()
またはViewModelProvider
コンストラクトを使用する際、SavedStateViewModelFactory
がデフォルト ファクトリになりました。 - ディープリンクのクエリ パラメータ サポート: クエリ パラメータを持つディープリンクが、順序変更されたクエリ パラメータをサポートするようになりました。ディープリンクのマッチング時、デフォルト値を持つ引数または null 許容の引数がオプションになりました。
- アニメーション サポートの改善:
NavHostFragment
は Fragment 1.2.0 のFragmentContainerView
を使用するようになり、アニメーションの 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 SavedState1.0.0-rc03
、Activity1.1.0-rc03
、Fragment1.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)
Activity
のnavArgs()
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
は、ナビゲーション駆動のLifecycleOwner
、ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
で返されるものと同じ)、SavedStateRegistryOwner
を提供し、さらにその宛先の開始に使用する引数を提供します(aosp/1101691、aosp/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()
によって返されるViewModelStoreOwner
でby navGraphViewModels()
またはViewModelProvider
コンストラクタを使用する際、SavedStateViewModelFactory
がデフォルト ファクトリになりました(b/135716331)
API の変更
- Navigation
2.1.0-rc01
:2.1.0-alpha02
で導入されたNavController
でサポートが終了したgetViewModelStore()
API が削除されました(aosp/1091021)
バグの修正
NavHostFragment
がFragmentContainerView
を使用するようになりました。これにより、アニメーションの 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
に移動し、ホストしているLifecycleOwner
、OnBackPressedDispatcher
、ViewModelStore
に、実装が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
またはCollapsingToolbarLayout
でsetupWithNavController()
を使用するときに、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()
メソッドを優先して、NavController
のgetViewModelStore()
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)NavController
のsetHostOnBackPressedDispatcherOwner()
メソッドがNavHostController
のsetOnBackPressedDispatcher()
メソッドに置き換えられ、これを呼び出す前に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
がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。
バグの修正
NavHostFragment
がシステムの [戻る] ボタンのイベントをインターセプトする際に、app:defaultNavHost
を正しく尊重するようになりました。これにより、Navigation2.1.0-alpha03
での回帰が修正されます。b/132077777DialogFragmentNavigator
が、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 の変更
NavHostFragment
のcreateFragmentNavigator()
メソッドのサポートを終了し、その機能を新しいonCreateNavController()
メソッドに移動しました。これは、NavHostFragment
のサブクラス化の際にカスタム ナビゲータを追加する正しいエントリ ポイントであることを明確にするためです。b/122802849hasDeepLink()
メソッドが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.1
とandroidx.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/126082008ActivityNavigator.applyPopAnimationsToPendingTransition
で適切なポップ終了アニメーションが適用されない問題を修正しました。b/126237567- Safe Args によって生成される Kotlin コードが、
R
クラスに関連付けられたパッケージ名のin
やfun
などの 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
NavController
でsetGraph()
を呼び出すと、バックスタックがリセットされるようになりました。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 NavDirections
のgetArguments()
から返されたBundle
が、@Nullable
ではなく@NonNull
としてマークされるようになりました。b/123243957
バグの修正
NavDeepLinkBuilder
が、渡された引数を使用して一意性を判断することにより、同じ宛先への複数の同時PendingIntent
を正しく処理するようになりました。b/120042732NavController
が、ネストされたNavHostFragment
または他の子フラグメントをバックスタックとともに使用する場合に、popBackStack()
オペレーションを正しく処理するようになりました。b/122770335NavigationUI
が、Up ボタンのコンテンツ説明を正しく設定するようになりました。b/120395362- Safe Args で生成された Directions クラスが、宛先のアクションと同じ ID を持つグローバル アクションを正しく処理するようになりました。b/122962504
- Safe Args で生成された
NavDirections
クラスが、equals()
が true を返す場合に、等しいhashCode()
値を持つようになりました。b/123043662 NavHostFragment
のFragmentManager
でカスタムの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/120104424AppBarConfiguration
を使用して、navController.navigateUp()
がfalse
を返したときに呼び出される代替のOnNavigateUpListener
インスタンスを設定できるようになりました。b/79993862、b/120690961
互換性を破る変更
argType="reference"
を指定して<argument>
を使用した場合、Navigation が参照を解析しなくなり、代わりに未加工のリソース ID そのものを提供するようになりました。b/111736515setup
メソッドに合わせて、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/118670572OnDestinationChangedListener
が引数のBundle
も渡すようになりました。aosp/837142app:clearTask
属性とapp:launchDocument
属性、およびそれらに関連するメソッドが削除されました。バックスタックからすべての宛先を削除するには、グラフのルートを指定してapp:popUpTo
を使用してください。b/119628354ActivityNavigator.Extras
がBuilder
パターンを使用するようになり、任意のIntent.FLAG_ACTIVITY_
フラグを設定する機能が追加されました。aosp/828140NavController.onHandleDeepLink
の名前がhandleDeepLink
に変更されました。aosp/836063- サブクラス化を想定していない多数のクラスとメソッド(
NavOptions
、NavInflater
、NavDeepLinkBuilder
、AppBarConfiguration
など)が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()
を削除しました。代わりに、Navigator
でnavigate()
を呼び出してください。aosp/830663Navigator
の大幅なリファクタリングが行われ、OnNavigatorNavigatedListener
が不要になりました。代わりに、navigate
が移動先のNavDestination
を返すようになりました。Navigator
インスタンスがポップイベントをNavController
に送信できなくなりました。[戻る] ボタンの押下をインターセプトしてnavController.popBackStack()
を呼び出す場合は、OnBackPressedCallback
の使用を検討してください。aosp/833716
バグの修正
- 宛先が
<navigation>
要素の場合、常にpopUpTo
が動作するようになりました。b/116831650 - ネストされたグラフを使用した場合に
IllegalArgumentException
が発生する各種のバグを修正しました。b/118713731、b/113611083、b/113346925、b/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 日
新機能
- フラグメントとアクティビティの共有要素の遷移の宛先がサポートされるようになりました(b/79665225)。詳細については、Navigation アーキテクチャ コンポーネントを使用したナビゲーションの実装に関するガイドをご覧ください。
NavigationView
のアイテムを選択した場合、下部シートを含むすべてが閉じるようになりました。b/112158843
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/111455455、b/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.index
はsetDemoControllerIndex
になります。b/79995048 - 例:
action_show_settings
はactionShowSettings
になります。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 日
動作の変更
FragmentNavigator
はsetReorderingAllowed(true)
を使用するようになりました。b/109826220Navigation で、ディープリンク URL から解析された引数が URL デコードされるようになりました。b/79982454
バグの修正
フラグメントのライフサイクル メソッドから Navigation を呼び出す場合に発生する
IllegalStateException
を修正しました。b/79632233Navigation がサポート ライブラリ 27.1.1 に依存するようになり、アニメーションを使用する場合のちらつきが修正されました。b/80160903
defaultNavHost="true" を子フラグメントとして使用する場合に発生する
IllegalArgumentException
を修正しました。b/79656847NavDeepLinkBuilder を使用する場合に発生する
StackOverflowError
を修正しました。b/109653065ネストされたグラフに戻る際に発生する
IllegalArgumentException
を修正しました。b/80453447launchSingleTop
を使用する場合にフラグメントが重なる問題を修正しました。b/79407969Navigation で、ネストされたグラフ用に適切な合成バックスタックを作成できるようになりました。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
です。