navigationevent
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 17 Haziran 2026 | 1.1.2 | - | - | - |
Bağımlılıkları bildirme
navigationevent'e bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.1.2" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.1.2") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Bu yapı için sürüm notu yok.
Sürüm 1.1
Sürüm 1.1.2
17 Haziran 2026
androidx.navigationevent:navigationevent-*:1.1.2 iptal edilir. 1.1.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Compose bağımlılıkları 1.11.2 sürümüne güncellendi. (a5e9259)
Sürüm 1.1.1
6 Mayıs 2026
androidx.navigationevent:navigationevent-*:1.1.1 iptal edilir. 1.1.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Android Studio Önizlemeleri'nde Tahmini Geri'yi etkinleştirmek için inceleme modundayken no-op
NavigationEventHandlerkaldırıldı.
Sürüm 1.1.0
22 Nisan 2026
androidx.navigationevent:navigationevent-*:1.1.0 iptal edilir. 1.1.0 sürümü bu commit'leri içerir.
Sürüm 1.1.0-rc01
8 Nisan 2026
androidx.navigationevent:navigationevent-*:1.1.0-rc01 iptal edilir. 1.1.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Compose'un compileSdk'si API 37'ye güncellendi. Bu nedenle, Compose kullanılırken minimum AGP sürümü 9.2.0 olmalıdır. (Id45cd, b/413674743)
Sürüm 1.1.0-beta01
27 Mart 2026
androidx.navigationevent:navigationevent-*:1.1.0-beta01 iptal edilir. 1.1.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
OnForwardCompletedFallback'yıNavigationEventDispatcher'ye ekleyerek işlenmemiş ileri gezinme etkinlikleri için varsayılan sistem davranışını etkinleştirin. (Iac620, b/489138116)
Sürüm 1.1.0-alpha01
25 Şubat 2026
androidx.navigationevent:navigationevent-*:1.1.0-alpha01 iptal edilir. 1.1.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
- NavigationEvent-Compose'da tüm Kotlin Multiplatform (KMP) hedeflerini destekleyin. Platform ana makinelerinin, Android'de güvenli bir yedek olarak
LocalView'yı korurken varsayılan birLocalNavigationEventDispatcherOwnersağlamasına olanak tanımak için sahip çözümlemesiniLocalView'dan ayırın. (Iae980, b/434940570, Iccf58)
API Değişiklikleri
- Android'in
BackEventveNavigationEventarasında dönüştürme yapmak içinNavigationEvent.toBackEvent()veBackEvent.toNavigationEvent()uzantı işlevlerini ekleyin. (Ie3b71, b/477001292)
Sürüm 1.0
Sürüm 1.0.2
28 Ocak 2026
androidx.navigationevent:navigationevent-*:1.0.2 iptal edilir. 1.0.2 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Android Studio Previews'da
NavigationEventHandlerkullanılırken oluşan kilitlenme sorunu düzeltildi. İşleyici artık inceleme modunu algılıyor ve hiçbir işlem yapmıyor. Böylece önizlemenin, sağlanan bir dağıtıcı olmadan oluşturulmasına izin veriliyor. (I370f2, b/454313986).
Sürüm 1.0.1
3 Aralık 2025
androidx.navigationevent:navigationevent-*:1.0.1 iptal edilir. 1.0.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
rememberNavigationEventDispatcherOwner()ile oluşturulanlar gibiConcurrentModificationExceptionöğeleri silerken oluşanNavigationEventDispatchersorunu düzeltildi. (ec68a9, b/454363524)
Sürüm 1.0.0
19 Kasım 2025
androidx.navigationevent:navigationevent-*:1.0.0 iptal edilir. 1.0.0 sürümü bu commit'leri içerir.
1.0.0 sürümündeki başlıca özellikler:
Navigation Event kitaplığı artık kararlı bir sürümde! Navigation Event, Android'de (ve diğer platformlarda) sistem düzeyindeki geri gitme ve tahmin edilen geri gitme gibi sistem düzeyindeki etkileşimleri işlemek için kullanılan AndroidX kitaplığıdır.
NavigationEventişlemek için istediğiniz işlevleri geçersiz kılan kendiNavigationEventHandler'nizi uygulayabilirsiniz. Ardından, işleyiciyi birNavigationEventDispatcheröğesine eklemeniz gerekir. Activity1.12.0sürümünden itibarenComponentActivity, kullanıma hazır bir dağıtıcı sağlayan yeniNavigationEventDispatcherOwnerarayüzünü uygular :// The NavigationEventInfo provides information about a navigation state object CurrentInfo : NavigationEventInfo() // you can retrieve this from any component that is a NavigationEventDispatcherOwner // or you can instantiate your own custom dispatcher val dispatcher = myActivity.navigationEventDispatcher val myHandler = object : NavigationEventHandler<NavigationEventInfo>( initialInfo = CurrentInfo, isBackEnabled = true ) { override fun onBackStarted(event: NavigationEvent) { // Prepare for the back event } override fun onBackProgressed(event: NavigationEvent) { // Use event.progress for predictive animations } // This is the required method for final event handling override fun onBackCompleted() { // Complete the back event } override fun onBackCancelled() { // Cancel the back event } } dispatcher.addHandler(myHandler)navigationevent:navigationevent-composemodülü, işleyiciyi en yakınLocalNavigationEventDispatcherOwner'ninNavigationEventDispatcher'sine otomatik olarak bağlayan ve geliştiricilerin istenen davranışı parametre olarak sağlamasına olanak tanıyan kullanışlı bir oluşturma işleviNavigationBackHandlersunar:object CurrentInfo : NavigationEventInfo() object PreviousInfo : NavigationEventInfo() val navEventState = rememberNavigationEventState( currentInfo = CurrentInfo, backInfo = PreviousInfo ) // Inside composition NavigationBackHandler( State = navEventState, isBackEnabled = true, // optional onBackCancelled = { // Cancel the back event }, // required onBackCompleted = { // Complete the back event } , )
Bu kalıbı Compose'da kullanmak, NavigationEventState öğesini yükseltmeyi ve farklı Composable'lar tarafından gözlemlenmesini (ör. Navigation3'te durumu NavDisplay öğesinden yükseltebilirsiniz) çok kolaylaştırır.
Her
NavigationEventDispatcher, hem oluşturma hem de oluşturmama durumları için bir üst dağıtıcı sağlayabilir. Bu sayede geliştiriciler, birden fazla göndericinin tek bir üst öğe tarafından yönetilebileceği hiyerarşik bir yapı oluşturabilir. Bir üst öğenin olması, devre dışı bırakılması veya elden çıkarılması gerekebilecek dağıtıcı gruplarının yönetilmesini nispeten kolaylaştırır:// Non-Compose val parentDispatcher = NavigationEventDispatcher() val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher) // Compose val composeChildDispatcher = rememberNavigationEventDispatcher( // This defaults to `LocalNavigationEventDispatcherOwner.current` // Must explicitly provide null to have an unparented dispatcher created here parent = NavigationEventDispatch() )Kitaplık,
NavigationEventInputaracılığıyla doğrudanNavigationEventDispatcher'ya sinyal göndermeyi de mümkün kılar.NavigationEventInput, gezinme sisteminin "giriş" tarafı olarak işlev görür ve platforma özgü etkinlikleri (ör. sistemde geri gitme hareketleri veya düğme tıklamaları) birNavigationEventDispatcher'ye gönderilebilecek standartlaştırılmış etkinliklere çevirir.navigationevent:navigationeventmodülü şu anda 2NavigationEventInputsağlar: herhangi bir etkinliğin gönderilmesine izin veren daha genel birDirectNavigationEventInputveNavigationEventDispatcher'nin sistemde geri gitme ve tahmini geri gitme hareketini desteklemesine olanak tanıyan Android'e özgü birOnBackInvokedInput.ComponentActivitytarafından sağlanan dağıtıcıyı kullanmak yerine kendi dağıtıcınızı uyguluyorsanız girişinizi manuel olarak eklemeniz gerekir:val dispatcher = NavigationEventDispatcher() dispatcher.addInput(DirectNavigationEventInput()) dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
Sürüm 1.0.0-rc01
5 Kasım 2025
androidx.navigationevent:navigationevent-*:1.0.0-rc01 iptal edilir. 1.0.0-rc01 sürümü bu commit'leri içerir.
Sürüm 1.0.0-beta01
8 Ekim 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEvent.touchXveNavigationEvent.touchYiçinFloatRangeaçıklamasını düzeltin. Bu değerler mutlak piksel koordinatlarını temsil eder ve1.0üst sınıra sahip değildir. (I4b205, b/445989313)NavigationEventDispatcherOwnercomposable'ınırememberNavigationEventDispatcherOwnerolarak yeniden düzenleyin. İşlev artık doğrudanNavigationEventDispatcherOwnerdeğerini döndürüyor. Bu sahibi bir alt bileşene sağlamak içinCompositionLocalProviderkullanın. (I874b2, b/444446629)
Sürüm 1.0.0-alpha09
24 Eylül 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 iptal edilir. 1.0.0-alpha09 sürümü bu commit'leri içerir.
API Değişiklikleri
Idle()öğesini oluşturmak yerine doğrudanNavigationEventTransitionState.Idletekil nesnesini kullanın. (Ic7d9e, b/444734264)- Kolaylık oluşturucuları dahili hale getirin; doğrudan oluşturmak yerine genel
NavigationEventDispatcher.historyüzerinden örnekler alın. (I3b7e0, b/444734264) NavigationEventStateoluşturmak içinrememberNavigationEventStatekullanılması gerekir. Oluşturucu artık dahili olarak kullanılabilir. (Ie143c, b/444734264)onBackCompletedFallbackyerinefallbackOnBackPressedkullanımlarını ve oluşturucu parametresini kullanın. Davranış değişmedi. Yalnızca tamamlanmış, işlenmemiş geri etkinliklerinde çağrılır. (Idabe9, b/444734264)NavigationEventHistory(mergedHistory, currentIndex)öğesinin birincil oluşturucusu artıkinternal. Harici tüketiciler, örnek oluşturmak için herkese açık oluşturucuları (boş oluşturucu veya bölüme dayalı oluşturucu) kullanmalıdır. (I1c047, b/444734264)View.setViewTreeNavigationEventDispatcherOwner'nın boş değer atanabilir sahibi kabul etmesini sağlama (Ic9eb6, b/444436762)NavigationEventInfoartıkinterfaceyerineabstract class. Tüm özel uygulamaları sınıftan (ör.data class MyInfo : NavigationEventInfo()) devralacak şekilde güncelleyin. (I1e59c, b/444734264)- Eski
NavigationEventDispatcher.stateözelliği vegetState<T>()işlevi kaldırıldı. Yeni ve ayrıdispatcher.transitionState(hareket ilerleme durumu için) vedispatcher.history(gezinme yığını için) akışlarını kullanın. (Ic2ceb, b/444734264) NavigationEventInput.onInfoChanged(...)geri çağırma işlevi değiştirilir. Güncellemeleri tek birNavigationEventHistorynesne olarak almak için yenionHistoryChanged(history: NavigationEventHistory)geri çağırma işlevini uygulayın. (I23e0b, b/444734264)- Yeni bir küresel
NavigationEventDispatcher.historyStateFlowtanıtın. Bu genel olmayan akış, gözlemcilerin yalnızca gezinme yığınındaki değişikliklere abone olmasına olanak tanır ve hareket ilerlerken kararlı kalır. Bu,transitionStatekarşılığıdır. (I1db10, b/444734264) - Yeni bir küresel
NavigationEventDispatcher.transitionStateStateFlowtanıtın. Bu genel olmayan akış, gözlemcilerin yalnızca fiziksel hareket durumuna (Boşta/Devam Ediyor) abone olmasına olanak tanır. Bu durum, geçmişten ayrıdır. (I171fa, b/444734264) NavigationEventHistoryStatesınıfını tanıtın. Bu, gezinme bilgileri geçmişini hareket durumundan ayrı olarak gözlemlemek için temel API olarak kullanılır. (I81ca5, b/444734264)NavigationEventartık@Immutableolarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (If78c7, b/444734264)navigationevent-composeişleyici API'leri güncellendi.NavigationEventHandlerveNavigationBackHandler(ve varyantları) artık yükseltilmişNavigationEventState'leri kabul eden yeni bir aşırı yüklemeyi destekliyor. Basit aşırı yüklemeler (currentInfoalan) korunur ve artık bu yeni durum modelini dahili olarak kullanır. (Ic3251, b/444734264)- Yeni
@StableNavigationEventState<T>durum bilgisi depolayıcıyınavigationevent-composekitaplığına ekleyin. Bu nesne, yerel geçmişi yerel hareket durumuyla birleştirir verememberNavigationEventStateileNavigationEventHandlerarasındaki birincil bağlantı olur. (Ifb69f, b/444734264) NavigationEventHandleröğesine yeni bir herkese açık, salt okunurtransitionState: TransitionStateözelliği ekleyin. İşleyiciler artık kendi geçiş durumlarını koruyor. Bu durum, harici sistemler tarafından gözlemlenebilir. (I9acd2, b/444734264)- Yeni
TransitionStatekapalı sınıfını tanıtın. Bu API, gezinme geçmişinden ayrı olarak hareket durumunu gözlemlemek için temel API olarak kullanılır. (Id4beb, b/444734264) currentInfo,backInfoveforwardInfoözellikleriniNavigationEventHandlerüzerinde herkese açık, salt okunur özellikler olarak gösterin. (Ia7636, b/444734264)NavigationEventHandleruygulamaları artık temel oluşturucuya birinitialInfo: Tdeğeri sağlamalıdır. (Idcfea, b/444734264)OnBackInvokedInputyerineOnBackInvokedOverlayInputveyaOnBackInvokedDefaultInputkoyun. (I5323f, b/428948766)NavigationEventStateöğesini@Immutableolarak işaretle. Bu, bu durumu gözlemleyen composable'ların yeniden oluşturmayı doğru şekilde atlamasını sağlayarak Compose performansını artırır. (I399c8)NavigationEventInfo.NotProvideddosyasınıNavigationEventInfo.None;olarak yeniden adlandırın ve referansları güncelleyin. Davranış değişikliği yok. (I5e2d4)NavigationEventInfoartık@Immutableolarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (I7c112)- Geriye doğru tamamlama için eğlenceli bir arayüzle Java ergonomisini iyileştirin. (I8a860)
onHasEnabledHandlerChangedöğesinionHasEnabledHandlersChangedolarak yeniden adlandırın. Bu, geri arama raporlarının yalnızca bir işleyicinin değil, tüm işleyicilerin toplu etkinleştirme durumu hakkında rapor verdiğini netleştirir. (I1af61, b/443711297)hasEnabledHandler()öğesiniNavigationEventDispatcher;öğesinden kaldırın ve bunun yerineNavigationEventInput.onHasEnabledHandlersChangedöğesini kullanın. (Idef72, b/443711297)- Dinleyicileri gezinme geçmişindeki değişikliklerden haberdar etmek için
onInfoChangedgeri çağırma işleviniNavigationEventInputöğesine ekleyin. Bu, mevcut, geri ve ileri yığınların tam bağlamını sağlayarak Girişlerin bağlamsal bilgilere tepki vermesini sağlar. (I69a8b, b/443282983) - Make
NavigationEvent'sswipeEdgean@IntDef(Icee54, b/443950342) - Bir göndericiyi tek bir öncelikle sınırlamak için
NavigationEventDispatcher.addInputparametresinipriorityöğesine ekleyin.onHasEnabledCallbacksChangedgibi etkinlikler artık yalnızca bu öncelikteki geri çağırmalar değiştiğinde tetiklenir. (I3e488, b/443711297) - Daha anlaşılır olması için
NavigationEventDispatcherparametresiniparentDispatcheryerine üst olarak yeniden adlandırın. (Id4f1f, b/443801782) - Java kullanıcıları için
NavigationEventPriorityyerine@IntDef'ı kullanma (I10a9f, b/440514265) - Gezinme işleyici sözleşmesini zorunlu kılın.
NavigationEventHandler,isBackEnabledveyaisForwardEnableddeğerinitrueolarak ayarlıyorsa artık sırasıylaonBackCompletedveyaonForwardCompleteddeğerini geçersiz kılmanız gerekir. Varsayılan uygulamalar artık sessiz hataları önlemek için istisna oluşturuyor. (I17c62) - Gezinme etkinlik işleyicileri eklerken geçerli öncelik değerlerini zorunlu kılın. Artık desteklenmeyen bir öncelik ile
addHandlerçağrısı yapıldığındaIllegalArgumentExceptionoluşturulacak. Böylece, tüm hedef platformlarda yanlış kullanımla ilgili anında geri bildirim sağlanacak. (I3c474)
Hata Düzeltmeleri
addHandleröğesini idempotent yapın; yinelenen kayıtları yoksayın. (I052aa, b/444734264)- Yeniden oluşturma sırasında
NavigationEventStateözelliklerini senkronize tutun. (Ib3b4d, b/444734264) NavigationEventInputs, kayıt olduktan hemen sonra mevcut bağlamsal bilgileri (geçerli, geri, ileri) aldığından emin olun. (Ie65bf, b/443282983)
Sürüm 1.0.0-alpha08
10 Eylül 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 iptal edilir. 1.0.0-alpha08 sürümü bu commit'leri içerir.
Yeni Özellikler
- Akış tabanlı işleyicinin yerini alan lambda tabanlı
NavigationEventHandlerAPI'yi kullanıma sunma. Geri ve ileri hareketlerini akış toplamak yerine basit geri çağırmalarla işleyerek ortak metinleri azaltın ve iptal sorunlarını önleyin. Hedeflenen kolaylık API'leri olarakNavigationBackHandlerveNavigationForwardHandler'yi sağlayın. Akış tabanlıNavigationEventHandleröğesini kaldırın ve yeni geri çağırmalara geçin. (I23bac, b/436248277) - Pasif dinleyicilerin, birleştirilmiş geri gitme bilgileri aracılığıyla tam gezinme geri gitme yığınına erişmesine izin verin. En üstteki geri çağırma ile sınırlı kalmak yerine, kullanıcı arayüzlerinin önizlemeleri ve iç içe yerleştirilmiş gezinme geçmişini oluşturmasını sağlayın. (I7a510, b/436248277)
- Gezinme durumunu netleştirmek ve iç içe işleyicilerle ileri gezinmeyi desteklemek için açık bir geri/geçerli/ileri modeli sunun. (Ib86da, b/420443609)
NavigationEventCallbackiçinonForward*yöntemleri veisForwardEnabledekleyin. (Ic100f, b/436248290)NavigationEventInput'ya ileri gezinme desteği ekleyin. (I5734b)
API Değişiklikleri
TestNavigationEventCallbackile ileri gezinme etkinliklerinin test edilmesini etkinleştirin.isForwardEnabledveonForward*kancalarını kullanın. (I21fb5, b/420443609)NavEventiçindeonEvent*geri çağırma işlevlerinionBack*olarak yeniden adlandırın. (I228b3, b/436248290)SwipeEdgearalığını satır içi sınıfa dönüştürün. (Id5e01)navigationeventkitaplığının Java ile birlikte çalışmasını sağlayın. Tüm herkese açık API'lere artık Java kodundan tam olarak erişilebilir. Bu sayede, karma dilli veya yalnızca Java'ya yönelik projelere sorunsuz entegrasyon sağlanır. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)NavigationEventCallbackrolünüNavigationEventHandlerolarak yeniden adlandırarak API rollerini netleştirin. Bu değişiklik, çok kademeli gezinme hareketlerini işleme sınıfının amacını daha iyi yansıtır. İlgiliaddCallbackyöntemi artıkaddHandler. (I2492a, b/443040331)
Hata Düzeltmeleri
- İleri gezinmede geri yedeklemenin çalışmasını önleyin. (I74814, b/436248290)
- Tahmini ileri gitme gezinmesi için destek ekleyin.
NavigationEventAPI'ler artık hem geri hem de ileri hareketlerini işleyerek her iki gezinme yönü için tutarlı animasyonlar sağlıyor. (Idc98c, b/436248290) - Bir
IllegalStateExceptionalt öğe kaldırıldığında yeniden oluşturma sırasında kilitlenmeyiNavigationEventDispatcherOwnerönleme. (Iff50c, b/412629020) - Pasif dinleyiciler artık birleştirilmiş geri bilgiler aracılığıyla tam gezinme geçmişine erişebilir. Bu sayede kullanıcı arayüzleri, en üstteki geri çağırma ile sınırlı kalmak yerine önizlemeler ve iç içe yerleştirilmiş gezinme geçmişi oluşturabilir. (I7a510, b/436248277)
Sürüm 1.0.0-alpha07
27 Ağustos 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 iptal edilir. 1.0.0-alpha07 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEventDispatcher.onHasEnabledCallbacksChangedöğesini kaldır (I50e97)NavigationEventCallback.onEventCompleted()adlı kişiye soyut bir resim oluştur. (I36b38)NavigationEventCallback#on*yöntemleriniprotectedolarak değiştirin. Geçersiz kılmak için arama kodunu güncelleyin. (I6b691)DirectNavigationEventInputişlevlerini yeniden adlandırın. (Iffb62)NavigationEventInput.onAttachöğesinionAddedolarak yeniden adlandırın. (I2d0b8)NavigationEventInput.onDetachöğesinionRemovedolarak yeniden adlandırın. (I2d0b8)NavigationEventInputHandleröğesiniNavigationEventInputolarak yeniden adlandırın. (I676a4)@EmptySuperöğesiniNavigationEventInput.onHasEnabledCallbacksChangedöğesine ekleyin. (If9853)NavigationEventInputHandleriçindeonAttachuygulayın. (I03648)NavigationEventInputHandleriçindeonDetachuygulayın. (I03648)- Oluşturma sırasında varsayılan
NavigationEventCallbackolarak etkinleştirilir. (Ic0188) NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackyerineNavigationEventInput.onHasEnabledCallbacksChangedkoyun. (I64e93)NavigationEventDispatcher.addInputiçin ana iş parçacığını zorunlu kılın. (Ic2930)NavigationEventDispatcher.removeInputiçin ana iş parçacığını zorunlu kılın. (Ic2930)Dispatcher.addOnHasEnabledCallbacksChangedCallbacköğesini kaldırDispatcher.onHasEnabledCallbacksChangedile değiştirin. (Ida3e3, b/436530096)
Hata Düzeltmeleri
- Halihazırda eklenmiş bir işleyiciyi eklemenin veya eklenmemiş bir işleyiciyi kaldırmanın yanlış yaşam döngüsü mantığını tetiklediği hata düzeltildi. (I9e47b)
Sürüm 1.0.0-alpha06
13 Ağustos 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 iptal edilir. 1.0.0-alpha06 sürümü bu commit'leri içerir.
Yeni Özellikler
Passive Listeners API
Artık herhangi bir gezinme ana makinesinden özel bağlamsal bilgiler iletebilir ve kullanıcı arayüzünüzün herhangi bir yerinden hareket durumu değişikliklerini pasif olarak dinleyebilirsiniz. Bu ayar, tahmin edilen geri gitme ve diğer hareket tabanlı gezinme için bağlama duyarlı animasyonları etkinleştirir.
Bu özellik iki bölümden oluşur:
- Bilgi Sağlama: Özel verileri taşımak için
NavigationEventInfokullanın. - Tüketim Durumu: Hareketin ilerleme durumunu ve bağlamını gözlemlemek için
dispatcher.state(NavigationEventState) kullanın.
- Artık
NavigationEventCallback, tek bir çağrıda hareket bağlamını ayarlamak içinsetInfo(currentInfo, previousInfo)yöntemini kullanıma sunuyor (I1d5e7, b/424470518). NavigationEventHandler,currentInfovepreviousInfo'yi kabul eden yeni bir aşırı yükleme ekleyerek Compose uygulamalarında bağlam sağlamak için kullanılan birincil API haline gelir (I6ecd3, b/424470518).
Örnek:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcherartıkdispatcher.statevedispatcher.getState<T>()'yi (If7fae, Ia90ca, b/424470518) kullanıma sunuyor. BuStateFlowtabanlı API'ler, herhangi bir kullanıcı arayüzünün etkinliği doğrudan işlemeye gerek kalmadan hareket ilerlemesini ve bağlamsal verileri gözlemlemesine olanak tanır.
Örnek:
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 */ }
}
Devam ederken
latestEvent.progress, aksi takdirde0Fdeğerini döndürenprogressözelliğiniNavigationEventState'ye (I7b196) ekleyin:val progress = state.progressNavigationEventDispatcherOwnercomposable'ı ekleyerekNavigationEventDispatcherörneklerini hiyerarşik olarak oluşturun, bağlayın ve kaldırın. Dağıtıcının etkin durumunun dinamik kontrolünü ve otomatik temizlemeyi etkinleştirin.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API Değişiklikleri
isPassthroughparametresi,NavigationEventCallbacköğesinden kaldırıldı. (I99028, b/424470518)NavigationEventStateoluşturucuları artık dahili. Test için durumuDirectNavigationEventInputHandleraracılığıyla güncelleyin (varsayılan olarakIdleayarlanır). DurumuInProgressolarak ayarlamak içinhandleOnStartedveyahandleOnProgressed,Idleolarak geri döndürmek içinhandleOnCompletedveyahandleOnCancelledişlevini çağırın.NavigationEventInfouygulamasını güncellemek içinNavigationEventCallback.setInfouygulamasını kullanın. (I93dca, b/424470518)- Daha kolay örnek oluşturmaya olanak tanımak ve
TestNavigationEventyerine kullanılması gereken testleri basitleştirmek içinNavigationEvent'ya varsayılan parametreler eklendi. (I5dc49, I232f4) - Belirli mevcut/önceki durumlarla gezinme etkinliklerini test etmek için
TestNavigationEventCallbackeklendi. (Idd22e, b/424470518) NavigationEventInputHandler, öncekiAbstractNavigationEventInputHandleryerineDirectNavigationEventInputHandler'de bir uygulama ile değiştirilmek üzere soyut bir sınıf haline getirildi (Iadde5, Ifed40I3897c, b/432616296, b/435416924).NavigationEventInputHandleriçindekisend*işlevlerinin ön eklerihandle*olarak yeniden adlandırıldı. (Iffcaf)OnBackInvokedInputHandler, yeniabstractNavigationInputHandlerkapsamını genişletiyor. (Ib45aa)- Kök dağıtıcı oluşturmak için
null'yi açıkça iletmeniz gerekenNavigationEventDispatcherOwner, ebeveyn dağıtıcı gerektirecek şekilde değiştirildi. (Ia6f64, b/431534103)
Hata Düzeltmeleri
NavigationEventDispatcher.dispose()içinde koleksiyon kopyalarından kaçınarak verimliliği artırdı. (I4ab09)NavigationEventHandlersimgesinin etkin durumundaki değişikliklere doğru şekilde yanıt vermemesi sorunu düzeltildi. (Ia5268,I19bec, I5be5c, b/431534103)
Dokümanlar'daki yenilikler
NavigationEventile ilgili KDocs, birleşik etkinlik sarmalayıcısı ve farklı gezinme türlerindeki (hareketler, tıklamalar) ayrıntı özelliği davranışı olarak rolünü netleştirmek için genişletildi. (I91e8d)- Geriye doğru sistem hareketini işleyen Compose API'leri (
BackHandler,PredictiveBackHandler,NavigationEventHandler) ile ilgili dokümanlar, özellikle geri çağırma sırasıyla ilgili davranışları vurgulayacak şekilde güncellendi. (I7ab94, )
Bağımlılık Güncellemesi (Dependency Update)
NavigationEventartıknavigationevent-composeyapısının tüm KMP hedeflerini desteklemesini sağlayan Compose Runtime 1.9.0-beta03'e bağlıdır. (Ia1b87)
Sürüm 1.0.0-alpha05
30 Temmuz 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü bu commit'leri içerir.
Üst-Alt Öğeler Hiyerarşisi Desteği:
Bir NavigationEventDispatcher artık hiyerarşik bir ağaç yapısı oluşturan üst ve alt dağıtıcılar içerebilir. Bu sayede, zincirleme göndericiler aracılığıyla kullanıcı arayüzünün yapısal hiyerarşisini yansıtarak gezinme etkinliklerinin yayılması ve karmaşık Compose kullanıcı arayüzü bileşenlerinde daha esnek bir şekilde yönetilmesi sağlanır. (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)
Hiyerarşik isEnabled özelliği, bir dağıtıcı üzerinde yukarıdan aşağıya kontrol sağlar. Bir dağıtıcıda isEnabled, false olarak ayarlandığında tüm alt dağıtıcıları otomatik olarak devre dışı bırakır. Bu özellik, gezinme etkinliği sisteminin tüm dallarının verimli bir şekilde kapatılmasını sağlar. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Ayrıca, NavigationEventCallback üzerindeki isEnabled özelliği artık ilişkili dağıtıcısının etkin durumuna saygı duyuyor. Bu nedenle, geri arama özelliğinin etkinleştirilmiş olarak kabul edilmesi için hem geri aramanın kendisinin hem de göndericisinin (üst öğeleri dahil) etkinleştirilmesi gerekir. Böylece, geri arama etkinleştirme üzerinde tutarlı bir hiyerarşik kontrol sağlanır. (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()
Göndericilerin ve alt öğelerinin düzgün şekilde temizlenmesi için yeni bir dispose() yöntem kullanıma sunuldu. dispose() işlevini çağırmak, dinleyicileri durdurarak bellek sızıntılarını önler, tüm alt dağıtıcıları yinelemeli olarak kaldırır, dağıtıcıya kaydedilen tüm geri çağırmaları kaldırır ve dağıtıcının üst öğeyle bağlantısını kaldırır. Bu sayede, göndericilere artık ihtiyaç duyulmadığında kaynakların doğru şekilde serbest bırakılması sağlanır. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Atılan bir dağıtıcıda herhangi bir herkese açık yöntem çağrılırsa hemen bir IllegalStateException oluşturulur. Bu, sessiz hataları önler ve geliştiricilerin geliştirme sırasında uygunsuz kullanımı belirlemesine yardımcı olur. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Not: aosp/3692572'de Compose kullanıcı arayüzünde alt dağıtıcıyı otomatik olarak yöneten yeni bir NavigationEventDispatcherOwner Composable kullanıma sunacağız. Ancak bu değişiklik, mevcut sürümde yer almamış olup bir sonraki sürümde kullanıma sunulması planlanmaktadır.
Gezinme Testi Kitaplığı
navigationeventkitaplığı için özel test yardımcı programları sağlamak üzerenavigationevent-testingmodülünü ekleyin. (0e50b6)- Test için
TestNavigationEventCallbacksahte yardımcı sınıfı ekleyin. Doğrulamayı desteklemek için geri çağırma yöntemi çağrılarını kaydeder ve alınanNavigationEventöğelerini saklar. (4a0246) TestNavigationEventsahte yardımcı işlevi ekleyerek varsayılan değerlere sahipNavigationEventörnekleri oluşturun ve gezinme etkinliği işlemeyle ilgili birim testlerini basitleştirin. (3b63f5)- Test için
TestNavigationEventDispatcherOwnersahte yardımcı sınıfı ekleyin. Testlerde etkileşim doğrulamayı desteklemek için geri dönüş ve etkinleştirilmiş durum değiştirildi etkinlik sayılarını izler. (c8753e)
API Değişiklikleri
NavigationEventInputHandleröğesiniandroidMainkonumundancommonMainkonumuna taşıyarak KMP ortak kodunda kullanılabilir hale getirin. Etkinlik göndermek için yenipublic send*yöntemleri ekleyin.NavigationEventDispatcher'daki gönderme işlevleripublic'daninternal'ye değiştirildi. Kullanıcıların artık etkinlik göndermek içinNavigationEventInputHandler'ü kullanması gerekiyor. (Ia7114)NavigationInputHandleröğesiniOnBackInvokedInputHandlerolarak yeniden adlandırın. (I63405)
Hata Düzeltmeleri
- Ara liste ayırmalarından kaçınarak ve geri çağırma gönderme performansını artırarak ek yükü azaltmak için
NavigationEventDispatcheryeniden düzenleyin. (I82702, I1a9d9) - Derleme sırasında geçerli değer aralıklarını zorunlu kılmak ve API güvenliğini artırmak için
NavigationEvent'dekitouchX,touchYveprogressalanlarına@FloatRangeekleyin. (Iac0ec)
Sürüm 1.0.0-alpha04
2 Temmuz 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 iptal edilir. 1.0.0-alpha04 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
implementedInJetBrainsFork,navigationevent-composeolarak değiştirildi ve Compose kurallarına uygun bircommonStubshedefi eklendi. JetBrains tarafından istenen değişiklik. (f60c79)- Doğru kaba kod oluşturmayı sağlamak için Kotlin/Native'e yönelik Compose derleyici eklentisinin uygulanması düzeltildi. Herkese açık API'ler veya davranışlar bu durumdan etkilenmez. (1890c9)
Sürüm 1.0.0-alpha03
18 Haziran 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 iptal edilir. 1.0.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
navigationeventkitaplığındaki Jetpack Compose özelliklerini desteklemek için yeni birnavigationevent-composemodülü kullanıma sunuldu. (980d78)NavigationEventOluşturma özelliğine yeni birLocalNavigationEventDispatcherOwneryerel kompozisyon eklendi. Geçerli kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürür. Temel alınan sahip bulunamazsaNavigationEventHandlerartık hata verecek. (62ffda)NavigationEventCompose, yeni birNavigationEventHandlerComposable ekleyerek (tahmin edilen geri gitme hareketi) etkinliklerini işleyebilir. Sağladığınız askıya alma lambda'sında toplanması gerekenFlowNavigationEventnesnesi sağlar 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 Değişiklikleri
- Her
NavigationEventCallbackartık aynı anda yalnızca birNavigationEventDispatcherile kaydedilebilir. Birden fazla dağıtıcıya eklenmesiIllegalStateExceptionhatası verir. Bu davranışın, birden fazla göndericiye izin verenOnBackPressedDispatcher'dan farklı olduğunu unutmayın. (e82c19) - Gezinme sırasında mutasyonu önlemek için
isPassThrough,valolarak değiştirildi. Bu durum,NavigationEvent'ın gönderme işlemini bozabilir. (I0b287)
Sürüm 1.0.0-alpha02
4 Haziran 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEventDispatcher'nın ikincil oluşturucusunu varsayılan bağımsız değişkenlerle değiştirin. (I716a0)- Öncelikli özelliği
NavigationEventCallbackhesabından kaldırın. Bunun yerineNavigationEventDispatcher.addCallback()uygulamasına kart önceliği verin. (I13cae)
Hata Düzeltmeleri
- Kapatılabilir öğelerin dahili listesi eşzamanlı olarak değiştirildiğinden
NavigationEventCallback.remove()çağrıldığında oluşabilecekConcurrentModificationExceptiondüzeltildi. (b/420919815)
Sürüm 1.0.0-alpha01
20 Mayıs 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
androidx.navigationeventkitaplığı, sistem geri düğmesini ve tahmini geri özelliğini işlemek için KMP öncelikli bir API sağlar.NavigationEventDispatcher, sistem geri etkinliklerini almak için bir veya daha fazlaNavigationEventCallbackörneğini kaydetmek üzere ortak API'ler olarak işlev görür.- Bu katman,
androidx.activityiçinde daha önce yayınlanan API'lerin altında yer alır ve daha üst düzey bileşenlerde Activity kitaplığı API'lerini kullanmanın veya doğrudan Android çerçevesiOnBackInvokedDispatcherAPI'lerini kullanmanın daha az fikir sahibi olan bir alternatifi olmayı amaçlar.androidx.activityAPI'leri, Activity 1.12.0-alpha01 kapsamında Navigation Event API'lerinin üzerine yeniden yazıldı.