navigation3
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2025 年 10 月 22 日 | - | - | 1.0.0-beta01 | - |
依存関係の宣言
navigation3 への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-beta01" implementation "androidx.navigation3:navigation3-ui:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-beta01") implementation("androidx.navigation3:navigation3-ui:1.0.0-beta01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
このアーティファクトのリリースノートはありません。
バージョン 1.0
バージョン 1.0.0-beta01
2025 年 10 月 22 日
androidx.navigation3:navigation3-*:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 にはこれらの commit が含まれています。
API の変更
SceneStrategyScopeには引数なしのパブリック コンストラクタのみが追加され、SceneStrategyと返されたSceneを単独でテストするのに適しています。より複雑なユースケースでは、rememberSceneState()を使用してください。(I8440c、b/451679047)
バグの修正
SceneStrategyとthenをチェーンすると無限ループが発生する問題を修正しました。(Iba3f0、b/450323470)NavDisplayに渡されたbackStackを入れ替えてアニメーションを使用すると画面がちらつく問題を修正しました。(Ief7b5、b/450967248)
バージョン 1.0.0-alpha11
2025 年 10 月 8 日
androidx.navigation3:navigation3-*:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 には、これらの commit が含まれています。
API の変更
SceneStrategyのcalculateSceneメソッドが@Composableではなくなりました。代わりに、この作業をSceneStrategyメソッドの構築(つまり、rememberMySceneStrategy()メソッド内)に移動することを検討してください。これにより、任意のrememberSaveable値またはキーrememberステートメントのライフタイムを正しい値から完全に定義できます。(If1733、b/448709506)SceneStrategy.calculateSceneのonBackパラメータが新しいレシーバ スコープSceneStrategyScopeに移動しました。これは、このパラメータがオプションであることを明確にし、今後の Navigation3 機能の拡張ポイントを提供するためです。(I3aea3、b/448460407)NavDisplayとSceneStrategyに渡されるonBackラムダは、複数のエントリをポップするタイミングを示すcount: Intパラメータを提供しなくなりました。代わりに、Scene リクエストが複数のエントリをポップアップするまれなケースでは、() -> Unitラムダが連続して複数回呼び出されるようになります。(Idedb5、b/446989346)NavEntryWrapperクラスを削除し、その機能を、新しいコンテンツを含むNavEntryを受け取る新しいセカンダリ コンストラクタを持つ finalNavEntryクラスに置き換えます。これにより、新しいコンテンツでエントリをラップするサポートが継続されます。(I7da2a、b/444447130)NavEntryDecoratorを作成して返すnavEntryDecorator関数が削除され、NavEntryDecoratorクラスに置き換えられました。このクラスは公開され、サブクラス化できるようになりました。(If81f8、b/444447434、b/447381176)SavedStateNavEntryDecoratorはエントリをSaveableStateHolderで装飾するため、SaveableStateHolderNavEntryDecoratorに名前が変更されました。デコレータは、機能的にはNavEntryDecoratorのファクトリであるため、関数からクラスにリファクタリングされました。(Ie6013、b/447381176)NavDisplayの代わりにSceneStateを使用するカスタム ディスプレイで、内部で使用されるLocalEntriesToRenderInCurrentSceneコンポジション ローカルを使用する必要がなくなりました。(Ic40ef、b/414668196)- 公開 API のサーフェスから
SceneSetupNavEntryDecoratorとrememberSceneSetupNavEntryDecorator()を削除しました。この機能はデフォルトで含まれるようになり、手動で含める必要がなくなりました。(Ieae42、b/444479133) NavEntry、DialogScene、SinglePaneScene、SceneStateはすべて equals を実装するようになりました。(I96121)- シーン インターフェースに、NavDisplay のシーン固有のメタデータを追加するための新しいメタデータ フィールドが追加されました。これにより、Scene は
NavDisplayのメタデータをオーバーライドできます(たとえば、トランジションを使用する場合など)。(I1fd96、b/443955625) - 冗長な汎用型パラメータを削除して、
rememberNavBackStackシグネチャを簡素化します。この関数はvararg elements: NavKeyを受け入れるようになりました。(I03e45) NavDisplayのデフォルトのアニメーションが共通 API の一部になり、すべてのプラットフォームから呼び出せるようになりました。(I71af9、b/447147159)- クラスが
NavEntriesをビルドするスコープを提供する Kotlin DSL であることを正確に反映するため、EntryProviderBuilderの名前をEntryProviderScopeに変更しました。(Ia7465)
バグの修正
rememberNavBackStack()で NavKey のポリモーフィック シリアル化が強制されるようになり、正しい状態復元を保証するように構成されたカスタムSavedStateConfigurationが必要になりました。すべての NavKey サブタイプが提供された SerializersModule に登録される必要があるという要件を反映するように KDoc が更新されました。(I6de37、I782f2、b/446664383)
バージョン 1.0.0-alpha10
2025 年 9 月 24 日
androidx.navigation3:navigation3-*:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 にはこれらの commit が含まれています。
API の変更
rememberDecoratedNavEntriesで装飾されたNavEntry<T>のリストを受け取る新しいNavDisplayオーバーロードを追加しました。(I4025b、b/441940314)DialogSceneを新しいパッケージに移動しました。(Ia5840)- 公開 API
DecorateNavEntryを削除しました。代わりに、rememberDecoratedNavEntriesを使用して、デコレータのリストで NavEntry をラップします。(Id8c09) - Navigation3 UI で新しいデフォルトの
transitionSpecプロパティが提供されるようになりました。(Ibcabd) - シーンの管理に役立つ新しい
SceneStateオブジェクトを追加しました。また、SceneStateとNavigationEventStateを取る新しいNavDisplayオーバーロードも提供します。(Idfb46、b/444479133) NavDisplayでは、TransitionのcurrentStateとtargetStateを参照して、Sceneの移動元と移動先に基づいてトランジションをカスタマイズできるようになりました。(I906cc、b/443872322)NavigationEventInfoはinterfaceではなくabstract classになりました。すべてのカスタム実装を更新して、クラス(data class MyInfo : NavigationEventInfo()など)から継承します。(I1e59c、b/444734264)navigationevent-composeハンドラ API が更新されました。NavigationEventHandlerとNavigationBackHandler(およびバリアント)が、ホイストされたNavigationEventStateを受け取る新しいオーバーロードをサポートするようになりました。シンプルなオーバーロード(currentInfoを受け取る)は保持され、内部でこの新しい状態モデルを使用するようになりました。(Ic3251、b/444734264)- Scene API がすべて navigation3-ui から navigation3-runtime に移動しました。つまり、navigation3-runtime でサポートされているすべてのプラットフォームで利用できるようになりました。(I431d0、b/444449993)
- 装飾する
NavEntryのリストを受け取る新しいrememberDecoratedNavEntriesオーバーロードを追加しました。入力エントリは、他のエントリ デコレータですでに装飾されている場合があります。(I5a034、b/444230270) - navigation3 ワイルドカード型パラメータを削除(I02540)
entryProviderDSL のジェネリクスの処理を改善しました。以前にandroidx.navigation3.runtime.entryをインポートしていた場合、今後は必要ありません。(I299fc)- リフレクション ベースの
NavBackStackSerializerオーバーロードを Android に制限します。これにより、マルチプラットフォーム コードで明示的なSavedStateConfigurationオーバーロードの使用を強制することで、Android 以外のプラットフォームでの暗黙的なランタイム シリアル化の失敗を防ぎます。(I73313、b/420443609) NavigationEventのswipeEdgeを@IntDefにする(Icee54、b/443950342)NavBackStackのシリアル化を Android に制限。これにより、Android 以外のプラットフォームでのランタイム エラーを防ぐことができます。マルチプラットフォームの状態保存には、明示的なSavedStateConfigurationを使用してrememberNavBackStackオーバーロードを使用します。(I1e418、b/420443609)
バグの修正
- ネストされた
NavDisplayに単一の子エントリがある場合の予測型「戻る」操作中のクラッシュを修正(I2cdc0、b/441933162)
バージョン 1.0.0-alpha09
2025 年 9 月 10 日
androidx.navigation3:navigation3-*:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 には、これらの commit が含まれています。
API の変更
DecoratedNavEntryProviderがrememberDecoratedNavEntriesに置き換えられました。これは、指定されたデコレータのリストで装飾された NavEntry を作成して返します。(I0fe1c、b/441328236)NavBackStackがNavKey型のジェネリックになりました。これにより、アプリとライブラリはNavKeyに制限されることなく、バックスタックのカスタムキータイプを定義できます。(I4d190、Iad2f4、b/420443609)NavBackStackが@kotlinx.serialization.Serializableになり、追加のボイラープレートなしで、プロセスの終了や構成の変更をまたいでナビゲーションの状態を保存して復元できるようになりました。(I2c3cf、b/420443609)RememberNavBackStackは、すべてのプラットフォーム ターゲットで提供されるように、commonMainに移動されました。(Id69e7、b/420443609)
バグの修正
NavDisplayが、個々のNavEntryを正しいLifecycle.Stateに正しく移動するようになりました。(I30aac、b/440145700)NavDisplayがNavigationEventライブラリのLocalNavigationEventDispatcherOwnerを介して設定されたネストされたNavigationEventDispatcherOwnerを無視する問題を修正しました。(I6224a)
依存関係の変更
- Navigation3 が NavigationEvent Alpha08 に依存するようになりました。
バージョン 1.0.0-alpha08
2025 年 8 月 27 日
androidx.navigation3:navigation3-*:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 にはこれらの commit が含まれています。
新機能
Navigation3 Runtimeアーティファクトに新しい Kotlin MultiPlatform(KMP)ターゲットを追加しました。Navigation3 Runtimeは現在、JVM(Android とデスクトップ)、ネイティブ(Linux、iOS、watchOS、macOS、MinGW)、ウェブ(JavaScript、WasmJS)の合計 3 つのプラットフォームをサポートしています。(I55078、b/424410398、b/419294028、b/419046226)。注: これはNavigation3 UIアーティファクトの KMP ターゲットを提供しません。他のプラットフォームでは、独自のカスタムNavDisplayを実装する必要があります。サポートをご希望の場合は、Jetbrains の問題(こちら)に投票して、追加のサポートの進捗状況をご確認ください。NavDisplayInfoオブジェクトが公開され、NavDisplayから表示可能なエントリのリストを取得するために使用できるようになりました。(Ibc91f)
API の変更
- 状態の復元を行うために
rememberNavBackStackと組み合わせて使用する新しいNavBackStackSerializerを追加しました。rememberNavBackStack()は、独自の構成を提供するために使用できるSavedStateConfigurationも受け取るようになりました。(I2f4d2、I4cd58、b/420443609)
バグの修正
- ナビゲーションを行うと、誤ったライフサイクル イベントが発生する問題を修正しました。(I8bf6d、b/425901162、b/434109022)
既知の問題
- I8bf6d によって導入されたバグにより、ライフサイクルが個々のエントリではなくシーンに基づいており、
NavEntryに提供されるkeyがStringではない場合や、NavEntryがcontentKeyをオーバーライドしてkeyと等しく設定していない場合(この操作を行うと、キーをBundleに保存できるようになります)に、ライフサイクルが機能しなくなっていました。このバグは次のリリースで修正されています。(b/440145700)
バージョン 1.0.0-alpha07
2025 年 8 月 13 日
androidx.navigation3:navigation3-*:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 にはこれらの commit が含まれています。
MinSdk の更新
- AndroidX のデフォルトの minSdk が API 21 から API 23 に移動しました(Ibdfca、b/380448311、b/435705964、b/435705223)
API の変更
SavedStateNavEntryDecoratorは、SaveableStateProviderに組み込まれたSaveableStateRegistryを使用して状態を保存、復元するようになりました。(If8d9a)predictivePopTransitionSpecにスワイプ エッジがパラメータとして提供されるようになり、ユーザーが予測型「戻る」ジェスチャーを開始したエッジに基づいてトランジションをカスタマイズできるようになりました。(I753a8)
バグの修正
- 最新のシーンが記憶されないため、カスタム シーンが無限に再計算される問題を修正しました。(I7ba84、b/418153031)
依存関係の更新
- Navigation3 が Navigation Event
1.0.0-alpha06に依存するようになりました。
バージョン 1.0.0-alpha06
2025 年 7 月 30 日
androidx.navigation3:navigation3-*:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 にはこれらの commit が含まれています。
依存関係の更新
- Navigation3 が Navigation Event
1.0.0-alpha05に依存するようになりました。
バージョン 1.0.0-alpha05
2025 年 7 月 2 日
androidx.navigation3:navigation3-*:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 には、これらの commit が含まれています。
動作の変更
NavEntryの状態は、NavDisplayに渡された現在のデコレータのリストに厳密に基づいています。つまり、複数のバックスタックがある場合、バックスタック上の NavEntry の状態を保持するために、デコレータはバックスタックに沿ってスワップされる必要があります。それ以外の場合、エントリが(スワップではなく)ポップされたかのように状態がクリアされます。(I7a759、b/428033667)
バージョン 1.0.0-alpha04
2025 年 6 月 18 日
androidx.navigation3:navigation3-*:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 にはこれらの commit が含まれています。
API の変更
NavEntry.contentは非公開になりました。NavEntryコンテンツを呼び出すには、新しいNavEntry.Content()API を呼び出します。この API では、呼び出しにkeyパラメータは不要になりました。(Icd0fd、b/420991203)NavEntry.keyがプライベート フィールドになりました。NavEntryとその関連する状態は、新しいcontentKeyFactoryラムダから生成され、NavEntry.keyから生成された保存可能なハッシュをデフォルトとする新しいcontentKeyフィールドで識別される必要があります。(I81a6c、b/422001357、b/420991203 I2d7d4、b/420991203、b/422841812)
依存関係の変更
- Navigation3 は新しい
androidx.navigationevent.composeアーティファクトに依存するようになりました。
バージョン 1.0.0-alpha03
2025 年 6 月 4 日
androidx.navigation3:navigation3-*:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 にはこれらの commit が含まれています。
バグの修正
Navigation3は、スワップアウトされ、別のbackStackインスタンスに置き換えられたbackStacksのデコレータ状態をクリアしなくなります。(I28a42、b/415076044)
バージョン 1.0.0-alpha02
2025 年 5 月 23 日
androidx.navigation3:navigation3-*:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 にはこれらの commit が含まれています。
バグの修正
SavedStateNavEntryDecoratorの問題が原因で、同じプロパティ値を持つ異なるデータクラスで競合が発生していた問題を修正しました。(b/418070648、Iff4775)- 明示的な依存関係を宣言せずに実行するとクラッシュする、クラスの欠落に関する問題を修正しました。(b/419049149、I4b4ed)
バージョン 1.0.0-alpha01
2025 年 5 月 20 日
androidx.navigation3:navigation3-*:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 にはこれらの commit が含まれています。
新機能
Navigation3 は、Jetpack Compose のアプリ内ナビゲーションを処理するために特別に構築された新しいナビゲーション ライブラリです。androidx.navigation3.runtime アーティファクトは構成要素を提供し、androidx.navigation3.ui アーティファクトは NavDisplay API を介して UI レイヤを提供します。デベロッパーは、独自の状態を NavDisplay コンポーザブル関数に直接提供できます。これにより、デベロッパーの状態の変化に基づいてコンテンツが変化します。
@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey
val backStack = rememberNavBackStack(Home)
NavDisplay(backStack, entryProvider = entryProvider {
entry<Home> {
Column {
Text(“Home”)
Button(onClick = { backStack.add(Chat) } ) {
Text(“Go to Chat”)
}
}
}
entry<Chat> { /* My Composable Content */ }
})
詳しくは、Navigation3 ガイドをご覧ください。