navigationevent
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2025 年 9 月 24 日 | - | - | - | 1.0.0-alpha09 |
依存関係の宣言
navigationevent への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha09") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
このアーティファクトのリリースノートはありません。
バージョン 1.0
バージョン 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.historyStateFlowを導入します。この非汎用フローにより、オブザーバーはナビゲーション スタックの変更のみをサブスクライブでき、ジェスチャーの進行中も安定した状態を維持できます。これはtransitionStateのカウンターパートです。(I1db10、b/444734264) - 新しいグローバル
NavigationEventDispatcher.transitionStateStateFlowを導入します。この非汎用フローにより、オブザーバーは履歴とは別に、物理ジェスチャーの状態(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)- 新しい
@StableNavigationEventState<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 ベースのハンドラを置き換えるラムダベースの
NavigationEventHandlerAPI を導入します。フローを収集する代わりにシンプルなコールバックで戻るジェスチャーと進むジェスチャーを処理し、ボイラープレートを減らしてキャンセルに関する問題を回避します。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)
- 予測型「進む」ナビゲーションのサポートを追加しました。
NavigationEventAPI が「戻る」ジェスチャーと「進む」ジェスチャーの両方を処理するようになり、両方のナビゲーション方向で一貫したアニメーションが可能になりました。(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.progressNavigationEventDispatcherOwnerコンポーザブルを追加して、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が新たにabstractNavigationInputHandlerを拡張するようになりました。(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)NavigationEventCompose に新しいLocalNavigationEventDispatcherOwnerローカル コンポジションが追加されました。現在の合成中に使用可能かどうかを判断しやすくするための null 許容値を返します。NavigationEventHandlerは、基になるオーナーが見つからない場合、エラーをスローするようになりました。(62ffda)NavigationEventCompose に、(予測型「戻る」ジェスチャー)イベントを処理するための新しい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 フレームワークのOnBackInvokedDispatcherAPI を直接使用したりする際の、より制約の少ない代替手段となることを目指しています。androidx.activityAPI は、Activity 1.12.0-alpha01 の一部として、Navigation Event API の上に書き直されました。