navigationevent
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2025 年 10 月 8 日 | - | - | 1.0.0-beta01 | - |
依存関係の宣言
navigationevent への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
このアーティファクトのリリースノートはありません。
バージョン 1.0
バージョン 1.0.0-beta01
2025 年 10 月 8 日
androidx.navigationevent:navigationevent-*:1.0.0-beta01
がリリースされました。バージョン 1.0.0-beta01 にはこれらの commit が含まれています。
API の変更
NavigationEvent.touchX
とNavigationEvent.touchY
のFloatRange
アノテーションを修正しました。これらの値は絶対ピクセル座標を表し、1.0
の上限はありません。(I4b205、b/445989313)NavigationEventDispatcherOwner
コンポーザブルをrememberNavigationEventDispatcherOwner
にリファクタリングします。この関数はNavigationEventDispatcherOwner
を直接返すようになりました。このオーナーをサブ コンポジションに提供するには、CompositionLocalProvider
を使用します。(I874b2、b/444446629)
バージョン 1.0.0-alpha09
2025 年 9 月 24 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha09
がリリースされました。バージョン 1.0.0-alpha09 には、これらの commit が含まれています。
API の変更
Idle()
をインスタンス化する代わりに、NavigationEventTransitionState.Idle
シングルトン オブジェクトを直接使用します。(Ic7d9e、b/444734264)- 便宜的なコンストラクタを内部化し、直接構築するのではなく、パブリック
NavigationEventDispatcher.history
を介してインスタンスを取得します。(I3b7e0、b/444734264) rememberNavigationEventState
経由でNavigationEventState
を作成する必要があります。コンストラクタが internal になりました。(Ie143c、b/444734264)onBackCompletedFallback
を採用し、fallbackOnBackPressed
の使用法とコンストラクタ パラメータを置き換えます。動作は変更されていません。完了した未処理の戻るイベントでのみ呼び出されます。(Idabe9、b/444734264)NavigationEventHistory(mergedHistory, currentIndex)
のプライマリ コンストラクタがinternal
になりました。外部コンシューマーは、パブリック コンストラクタ(空のコンストラクタまたはパーティション ベースのコンストラクタ)を使用してインスタンスを作成する必要があります。(I1c047、b/444734264)View.setViewTreeNavigationEventDispatcherOwner
で null 許容のオーナーを受け入れるようにしました(Ic9eb6、b/444436762)NavigationEventInfo
はinterface
ではなくabstract class
になりました。すべてのカスタム実装を更新して、クラス(data class MyInfo : NavigationEventInfo()
など)から継承します。(I1e59c、b/444734264)- 以前の
NavigationEventDispatcher.state
プロパティとgetState<T>()
関数が削除されました。新しい個別のdispatcher.transitionState
(ジェスチャーの進行状況用)フローとdispatcher.history
(ナビゲーション スタック用)フローを使用します。(Ic2ceb、b/444734264) NavigationEventInput.onInfoChanged(...)
コールバックが置き換えられます。新しいonHistoryChanged(history: NavigationEventHistory)
コールバックを実装して、更新を単一のNavigationEventHistory
オブジェクトとして受け取ります。(I23e0b、b/444734264)- 新しいグローバル
NavigationEventDispatcher.history
StateFlow
を導入します。この非汎用フローにより、オブザーバーはナビゲーション スタックの変更のみをサブスクライブでき、ジェスチャーの進行中も安定した状態を維持できます。これはtransitionState
のカウンターパートです。(I1db10、b/444734264) - 新しいグローバル
NavigationEventDispatcher.transitionState
StateFlow
を導入します。この非汎用フローにより、オブザーバーは履歴とは別に、物理ジェスチャーの状態(Idle/InProgress)のみをサブスクライブできます。(I171fa、b/444734264) NavigationEventHistoryState
クラスを紹介します。これは、ジェスチャーの状態とは別に、ナビゲーション情報の履歴を観察するためのコア API として機能します。(I81ca5、b/444734264)NavigationEvent
が@Immutable
としてマークされるようになり、Compose Compiler で再コンポーズを最適化できるようになりました。(If78c7、b/444734264)navigationevent-compose
ハンドラ API が更新されました。NavigationEventHandler
とNavigationBackHandler
(およびバリアント)が、ホイストされたNavigationEventState
を受け取る新しいオーバーロードをサポートするようになりました。シンプルなオーバーロード(currentInfo
を受け取る)は保持され、内部でこの新しい状態モデルを使用するようになりました。(Ic3251、b/444734264)- 新しい
@Stable
NavigationEventState<T>
状態ホルダーをnavigationevent-compose
ライブラリに追加します。このオブジェクトはローカル履歴とローカル ジェスチャーの状態を組み合わせたもので、rememberNavigationEventState
とNavigationEventHandler
の間の主なリンクとなります。(Ifb69f、b/444734264) NavigationEventHandler
に新しい公開読み取り専用のtransitionState: TransitionState
プロパティを追加します。ハンドラは独自の遷移状態を維持するようになり、外部システムがそれを監視できるようになりました。(I9acd2、b/444734264)- 新しい
TransitionState
密封クラスを導入します。これは、ナビゲーション履歴とは別に、ジェスチャーの状態を監視するためのコア API として機能します。(Id4beb、b/444734264) currentInfo
、backInfo
、forwardInfo
をNavigationEventHandler
の公開読み取り専用プロパティとして公開します。(Ia7636、b/444734264)NavigationEventHandler
の実装では、ベース コンストラクタにinitialInfo: T
値を指定する必要があります。(Idcfea、b/444734264)OnBackInvokedInput
は、OnBackInvokedOverlayInput
またはOnBackInvokedDefaultInput
に置き換えます。(I5323f、b/428948766)NavigationEventState
を@Immutable
としてマークします。これにより、この状態を監視するコンポーザブルが再コンポーズを正しくスキップできるようになり、Compose のパフォーマンスが向上します。(I399c8)NavigationEventInfo.NotProvided
の名前をNavigationEventInfo.None;
に変更し、参照を更新します。動作の変更はありません。(I5e2d4)NavigationEventInfo
が@Immutable
としてマークされるようになり、Compose Compiler で再コンポーズを最適化できるようになりました。(I7c112)- 戻る操作の完了フォールバック用の楽しいインターフェースで Java のエルゴノミクスを改善。(I8a860)
onHasEnabledHandlerChanged
をonHasEnabledHandlersChanged
に変更しました。これにより、コールバックは 1 つのハンドラだけでなく、すべてのハンドラの有効状態をまとめてレポートすることが明確になります。(I1af61、b/443711297)NavigationEventDispatcher;
からhasEnabledHandler()
を削除し、代わりにNavigationEventInput.onHasEnabledHandlersChanged
を使用します。(Idef72、b/443711297)NavigationEventInput
にonInfoChanged
コールバックを追加して、ナビゲーション履歴の変更をリスナーに通知します。これにより、現在、戻る、進むのスタックの完全なコンテキストが提供され、入力がコンテキスト情報に反応できるようになります。(I69a8b、b/443282983)NavigationEvent
のswipeEdge
を@IntDef
にする(Icee54、b/443950342)NavigationEventDispatcher.addInput
にpriority
パラメータを追加して、ディスパッチャを 1 つの優先度にスコープします。これにより、onHasEnabledCallbacksChanged
などのイベントは、その優先度のコールバックが変更された場合にのみ発生するようになります。(I3e488、b/443711297)- わかりやすくするため、
NavigationEventDispatcher
パラメータの名前をparentDispatcher
から parent に変更しました。(Id4f1f、b/443801782) - Java ユーザー向けに
NavigationEventPriority
を削除し、@IntDef
を追加しました(I10a9f、b/440514265) - ナビゲーション ハンドラ契約を適用します。
NavigationEventHandler
でisBackEnabled
またはisForwardEnabled
をtrue
に設定している場合は、それぞれonBackCompleted
またはonForwardCompleted
をオーバーライドする必要があります。デフォルトの実装で例外がスローされるようになり、サイレント障害を防ぐことができます。(I17c62) - ナビゲーション イベント ハンドラを追加する際に、有効な優先度の値を強制します。サポートされていない優先度で
addHandler
を呼び出すと、IllegalArgumentException
がスローされるようになり、すべてのターゲット プラットフォームで誤った使用方法に対するフィードバックがすぐに得られるようになりました。(I3c474)
バグの修正
addHandler
をべき等にします。重複する登録は無視します。(I052aa、b/444734264)- 再コンポーズ中に
NavigationEventState
プロパティの同期を維持します。(Ib3b4d、b/444734264) NavigationEventInputs
が登録直後に現在のコンテキスト情報(現在、戻る、進む)を受け取るようにします。(Ie65bf、b/443282983)
バージョン 1.0.0-alpha08
2025 年 9 月 10 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha08
がリリースされました。バージョン 1.0.0-alpha08 にはこれらの commit が含まれています。
新機能
- Flow ベースのハンドラを置き換えるラムダベースの
NavigationEventHandler
API を導入します。フローを収集する代わりにシンプルなコールバックで戻るジェスチャーと進むジェスチャーを処理し、ボイラープレートを減らしてキャンセルに関する問題を回避します。NavigationBackHandler
とNavigationForwardHandler
を対象のコンビニエンス API として提供します。Flow ベースのNavigationEventHandler
を削除し、新しいコールバックに移行します。(I23bac、b/436248277) - バック情報が結合されることで、パッシブ リスナーがナビゲーション バックスタック全体にアクセスできるようになります。UI は、最上位のコールバックに限定されることなく、プレビューとネストされたナビゲーション履歴をレンダリングできます。(I7a510、b/436248277)
- 明示的な戻る/現在/進むモデルを導入して、ナビゲーションの状態を明確にし、ネストされたハンドラによる進むナビゲーションをサポートします。(Ib86da、b/420443609)
onForward*
メソッドとisForwardEnabled
をNavigationEventCallback
に追加します。(Ic100f、b/436248290)NavigationEventInput
に進むナビゲーションのサポートを追加します。(I5734b)
API の変更
TestNavigationEventCallback
を使用して、前方ナビゲーション イベントのテストを有効にします。isForwardEnabled
フックとonForward*
フックを使用します。(I21fb5、b/420443609)NavEvent
でonEvent*
コールバックの名前をonBack*
に変更します。(I228b3、b/436248290)SwipeEdge
をインライン クラスに変換します。(Id5e01)navigationevent
ライブラリを Java と相互運用できるようにします。すべての公開 API に Java コードから完全にアクセスできるようになり、混合言語プロジェクトや Java 専用プロジェクトにシームレスに統合できるようになりました。(Ibc944、I5465f、I9fb1e、b/440532890、b/443040294)NavigationEventCallback
の名前をNavigationEventHandler
に変更して、API ロールを明確にします。この変更により、マルチステージ ナビゲーション ジェスチャーを処理するというクラスの目的がより明確になります。対応するaddCallback
メソッドはaddHandler
になりました。(I2492a、b/443040331)
バグの修正
- フォワード ナビゲーションでバック フォールバックが実行されないようにします。(I74814、b/436248290)
- 予測型「進む」ナビゲーションのサポートを追加しました。
NavigationEvent
API が「戻る」ジェスチャーと「進む」ジェスチャーの両方を処理するようになり、両方のナビゲーション方向で一貫したアニメーションが可能になりました。(Idc98c、b/436248290) - 子
NavigationEventDispatcherOwner
が削除されたときに再コンポーズ中にIllegalStateException
がクラッシュするのを防ぎます。(Iff50c、b/412629020) - パッシブ リスナーは、結合されたバック情報を通じて完全なナビゲーション バックスタックにアクセスできるようになりました。これにより、UI は最上位のコールバックに限定されることなく、プレビューとネストされたナビゲーション履歴をレンダリングできます。(I7a510、b/436248277)
バージョン 1.0.0-alpha07
2025 年 8 月 27 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha07
がリリースされました。バージョン 1.0.0-alpha07 にはこれらの commit が含まれています。
API の変更
NavigationEventDispatcher.onHasEnabledCallbacksChanged
を削除しました。(I50e97)NavigationEventCallback.onEventCompleted()
を抽象化しました。(I36b38)NavigationEventCallback#on*
メソッドをprotected
に変更します。呼び出しコードを更新して、それらをオーバーライドします。(I6b691)DirectNavigationEventInput
関数の名前を変更しました。(Iffb62)NavigationEventInput.onAttach
をonAdded
に変更しました。(I2d0b8)NavigationEventInput.onDetach
をonRemoved
に変更しました。(I2d0b8)NavigationEventInputHandler
をNavigationEventInput
に変更しました。(I676a4)NavigationEventInput.onHasEnabledCallbacksChanged
に@EmptySuper
を追加しました。(If9853)NavigationEventInputHandler
にonAttach
を実装します。(I03648)NavigationEventInputHandler
にonDetach
を実装します。(I03648)- 作成時にデフォルトの
NavigationEventCallback
を有効にします。(Ic0188) NavigationEventInput.addOnHasEnabledCallbacksChangedCallback
をNavigationEventInput.onHasEnabledCallbacksChanged
に置き換えました。(I64e93)NavigationEventDispatcher.addInput
にメインスレッドを要求します。(Ic2930)NavigationEventDispatcher.removeInput
にメインスレッドを要求します。(Ic2930)Dispatcher.addOnHasEnabledCallbacksChangedCallback
を削除しました。これはDispatcher.onHasEnabledCallbacksChanged
に置き換えられます。(Ida3e3、b/436530096)
バグの修正
- すでにアタッチされているハンドラを追加したり、アタッチされていないハンドラを削除したりすると、ライフサイクル ロジックが正しくトリガーされないバグを修正しました。(I9e47b)
バージョン 1.0.0-alpha06
2025 年 8 月 13 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha06
がリリースされました。バージョン 1.0.0-alpha06 にはこれらの commit が含まれています。
新機能
Passive Listeners API
ナビゲーション ホストからカスタム コンテキスト情報を渡したり、UI の任意の場所からジェスチャーの状態変化を受動的にリッスンしたりできるようになりました。これにより、予測型「戻る」やその他のジェスチャー駆動型ナビゲーションでコンテキスト認識型アニメーションが有効になります。
この機能は 2 つの部分で構成されています。
- 情報の提供 -
NavigationEventInfo
を使用してカスタムデータを渡します。 - Consuming State -
dispatcher.state
(NavigationEventState
)を使用して、ジェスチャーの進行状況とコンテキストを観察します。
NavigationEventCallback
が、1 回の呼び出しでジェスチャー コンテキストを設定するsetInfo(currentInfo, previousInfo)
メソッドを公開するようになりました(I1d5e7、b/424470518)。NavigationEventHandler
にcurrentInfo
とpreviousInfo
を受け入れる新しいオーバーロードが追加され、Compose アプリでコンテキストを提供するためのプライマリ API になりました(I6ecd3、b/424470518)。
例:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcher
がdispatcher.state
とdispatcher.getState<T>()
を公開するようになりました(If7fae、Ia90ca、b/424470518)。これらのStateFlow
ベースの API を使用すると、UI はイベントを直接処理することなく、ジェスチャーの進行状況とコンテキスト データを監視できます。
例:
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
NavigationEventState
にprogress
プロパティを追加します(I7b196)。進行中の場合はlatestEvent.progress
を返し、それ以外の場合は0F
を返します。val progress = state.progress
NavigationEventDispatcherOwner
コンポーザブルを追加して、NavigationEventDispatcher
インスタンスを階層的に作成、リンク、破棄します。ディスパッチャーの有効状態の動的制御と自動クリーンアップを有効にします。@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API の変更
isPassthrough
パラメータがNavigationEventCallback
から削除されました。(I99028、b/424470518)NavigationEventState
コンストラクタが internal になりました。テストでは、DirectNavigationEventInputHandler
を介して状態(デフォルトはIdle
)を更新します。handleOnStarted
またはhandleOnProgressed
を呼び出して状態をInProgress
に設定し、handleOnCompleted
またはhandleOnCancelled
を呼び出してIdle
に戻します。NavigationEventInfo
を更新するには、NavigationEventCallback.setInfo
を使用します。(I93dca、b/424470518)NavigationEvent
にデフォルト パラメータを追加して、インスタンス化を容易にし、テストを簡素化しました。これはTestNavigationEvent
の代わりに使用する必要があります。(I5dc49、 I232f4)- 特定の現在/以前の状態のナビゲーション イベントをテストするための
TestNavigationEventCallback
を追加しました。(Idd22e、b/424470518) NavigationEventInputHandler
が抽象クラスになり、以前のAbstractNavigationEventInputHandler
がDirectNavigationEventInputHandler
の実装に置き換えられました(Iadde5、Ifed40I3897c、b/432616296、b/435416924)NavigationEventInputHandler
のsend*
関数の接頭辞の名前がhandle*
に変更されました。(Iffcaf)OnBackInvokedInputHandler
が新たにabstract
NavigationInputHandler
を拡張するようになりました。(Ib45aa)NavigationEventDispatcherOwner
を変更し、親ディスパッチャーを必須にしました。ルート ディスパッチャーを作成するには、null
を明示的に渡す必要があります。(Ia6f64、b/431534103)
バグの修正
NavigationEventDispatcher.dispose()
でコレクションのコピーを回避することで効率を改善しました。(I4ab09)NavigationEventHandler
が有効状態の変更に正しく応答しない問題を修正しました。(Ia5268、I19bec、I5be5c、b/431534103)
ドキュメントの更新
NavigationEvent
の KDoc を拡張し、統合イベント ラッパーとしての役割と、さまざまなナビゲーション タイプ(ジェスチャー、クリック)での詳細プロパティの動作を明確にしました。(I91e8d)- コールバックの順序に関する動作を明確にするため、Compose API(
BackHandler
、PredictiveBackHandler
、NavigationEventHandler
)のシステム バック処理に関するドキュメントを更新しました。(I7ab94、)
依存関係の更新
NavigationEvent
が Compose Runtime 1.9.0-beta03 に依存するようになり、navigationevent-compose
アーティファクトがすべての KMP ターゲットをサポートできるようになりました。(Ia1b87)
バージョン 1.0.0-alpha05
2025 年 7 月 30 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha05
がリリースされました。バージョン 1.0.0-alpha05 には、これらの commit が含まれています。
親子階層のサポート:
NavigationEventDispatcher
に親ディスパッチャーと子ディスパッチャーを設定して、階層ツリー構造を形成できるようになりました。これにより、UI の構造階層をチェーンされたディスパッチャーで反映することで、複雑な Compose UI コンポーネント間でナビゲーション イベントをより柔軟に伝播して管理できるようになります。(I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
階層型 isEnabled
プロパティを使用すると、ディスパッチャをトップダウンで制御できます。ディスパッチャで isEnabled
が false
に設定されている場合、そのすべての子孫ディスパッチャが自動的に無効になります。この機能により、ナビゲーション イベント システムのブランチ全体を効率的にオフにできます。(I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
また、NavigationEventCallback
の isEnabled
プロパティは、関連付けられたディスパッチャーの有効状態を尊重するようになりました。つまり、コールバック自体とそのディスパッチャー(その祖先を含む)の両方が有効になっている場合にのみ、コールバックが有効と見なされます。これにより、コールバックの有効化に対する階層的な制御の一貫性が確保されます。(I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
ディスパッチャーとその子を適切にクリーンアップするための新しい dispose()
メソッドが導入されました。dispose()
を呼び出すと、メモリリークを防ぐためにリスナーが停止し、すべての子ディスパッチャーが再帰的に破棄され、ディスパッチャーに登録されているすべてのコールバックが削除され、親とのリンクが解除されます。これにより、ディスパッチャーが不要になったときにリソースが正しく解放されることが保証されます。(I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
破棄されたディスパッチャーでパブリック メソッドが呼び出されると、IllegalStateException
がすぐにスローされます。これにより、サイレント障害を防ぎ、開発中に不適切な使用を特定できます。(Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
注: aosp/3692572 で、Compose UI 内の子ディスパッチャーを自動的に管理する新しい NavigationEventDispatcherOwner
コンポーザブルを導入します。ただし、この変更は現在のリリース カットには含まれておらず、次のリリース カットで予定されています。
Navigation テスト ライブラリ
navigationevent
ライブラリ専用のテスト ユーティリティを提供するnavigationevent-testing
モジュールを追加しました。(0e50b6)- テスト用の
TestNavigationEventCallback
偽ユーティリティ クラスを追加します。コールバック メソッド呼び出しを記録し、受け取ったNavigationEvent
アイテムを保存して検証をサポートします。(4a0246) TestNavigationEvent
フェイク ユーティリティ関数を追加して、デフォルト値でNavigationEvent
インスタンスを作成し、ナビゲーション イベント処理の単体テストを簡素化します。(3b63f5)- テスト用の
TestNavigationEventDispatcherOwner
偽ユーティリティ クラスを追加します。フォールバックと有効状態変更イベントの数を追跡し、テストでのインタラクション検証をサポートします。(c8753e)
API の変更
NavigationEventInputHandler
をandroidMain
からcommonMain
に移動して、KMP 共通コードで使用できるようにしました。イベントをディスパッチするための新しいpublic send*
メソッドを追加しました。NavigationEventDispatcher
のディスパッチ関数をpublic
からinternal
に変更しました。ユーザーはイベントを送信する際にNavigationEventInputHandler
を使用する必要があります。(Ia7114)NavigationInputHandler
をOnBackInvokedInputHandler
に変更しました。(I63405)
バグの修正
- 中間リストの割り当てを回避し、コールバック ディスパッチのパフォーマンスを改善することで、オーバーヘッドを削減するように
NavigationEventDispatcher
をリファクタリングしました。(I82702、I1a9d9) NavigationEvent
のtouchX
、touchY
、progress
フィールドに@FloatRange
アノテーションを追加して、コンパイル時に有効な値の範囲を適用し、API の安全性を向上させます。(Iac0ec)
バージョン 1.0.0-alpha04
2025 年 7 月 2 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha04
がリリースされました。バージョン 1.0.0-alpha04 にはこれらの commit が含まれています。
バグの修正
implementedInJetBrainsFork
をnavigationevent-compose
に変更し、Compose の慣例に沿ってcommonStubs
ターゲットを追加しました。JetBrains からリクエストされた変更。(f60c79)- Kotlin/Native への Compose コンパイラ プラグインの適用を修正し、スタブが正しく生成されるようにしました。公開 API や動作には影響しません。(1890c9)
バージョン 1.0.0-alpha03
2025 年 6 月 18 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 にはこれらの commit が含まれています。
新機能
navigationevent
ライブラリで Jetpack Compose の機能をサポートする新しいnavigationevent-compose
モジュールを導入しました。(980d78)NavigationEvent
Compose に新しいLocalNavigationEventDispatcherOwner
ローカル コンポジションが追加されました。現在の合成中に使用可能かどうかを判断しやすくするための null 許容値を返します。NavigationEventHandler
は、基になるオーナーが見つからない場合、エラーをスローするようになりました。(62ffda)NavigationEvent
Compose に、(予測型「戻る」ジェスチャー)イベントを処理するための新しいNavigationEventHandler
コンポーザブルが追加されました。提供する一時停止ラムダで収集する必要があるNavigationEvent
オブジェクトのFlow
を提供します。c42ba6
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
API の変更
- 各
NavigationEventCallback
は一度に 1 つのNavigationEventDispatcher
にのみ登録できるようになりました。複数のディスパッチャーに追加すると、IllegalStateException
がスローされます。この動作は、複数のディスパッチャを許可するOnBackPressedDispatcher
とは異なります。(e82c19) isPassThrough
をval
にして、ナビゲーション中のミューテーションを防ぎ、NavigationEvent
のディスパッチが中断されないようにしました。(I0b287)
バージョン 1.0.0-alpha02
2025 年 6 月 4 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 にはこれらの commit が含まれています。
API の変更
NavigationEventDispatcher
のセカンダリ コンストラクタをデフォルト引数に置き換えます。(I716a0)NavigationEventCallback
から優先度プロパティを削除します。代わりに、優先度をNavigationEventDispatcher.addCallback()
に渡します。(I13cae)
バグの修正
- closeable の内部リストを同時に変更したために
NavigationEventCallback.remove()
が呼び出された場合に発生する可能性のあるConcurrentModificationException
を修正しました。(b/420919815)
バージョン 1.0.0-alpha01
2025 年 5 月 20 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha01
がリリースされました。バージョン 1.0.0-alpha01 にはこれらの commit が含まれています。
新機能
androidx.navigationevent
ライブラリは、システムバックと予測型「戻る」を処理するための KMP ファースト API を提供します。NavigationEventDispatcher
は、システム [戻る] イベントを受け取るために 1 つ以上のNavigationEventCallback
インスタンスを登録するための共通 API として機能します。- このレイヤは、
androidx.activity
で以前にリリースされた API の下に位置し、上位レベルのコンポーネントで Activity API を使用したり、Android フレームワークのOnBackInvokedDispatcher
API を直接使用したりする際の、より制約の少ない代替手段となることを目指しています。androidx.activity
API は、Activity 1.12.0-alpha01 の一部として、Navigation Event API の上に書き直されました。