navigationevent

  
Navigation Event kitaplığı, sistem geri hareketinin yanı sıra tahmine dayalı geri gitme özelliğini işlemek için KMP öncelikli bir API sağlar.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
23 Eylül 2026 1.1.2 1.2.0-rc01 - -

Bağımlılıkları bildirme

navigationevent bağımlılığı eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.

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.2.0-rc01"
}

Kotlin

dependencies {
    implementation("androidx.navigationevent:navigationevent:1.2.0-rc01")
}

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.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.2

Sürüm 1.2.0-rc01

23 Eylül 2026

androidx.navigationevent:navigationevent-*:1.2.0-rc01 iptal edilir. 1.2.0-rc01 sürümü bu commit'leri içerir.

Bağımlılık Güncellemeleri (Dependency Updates)

  • androidx.lifecycle:lifecycle-runtime bağımlılığı 2.10.0 sürümüne güncellendi. Bu sürüm, paketlenmiş yaşam döngüsü çalışma zamanı lint kontrollerinin AGP 9.5.0-alpha04 veya sonraki sürümlerle çalışması için gereklidir. (I99bfd, b/556807521)

Sürüm 1.2.0-alpha04

12 Ağustos 2026

androidx.navigationevent:navigationevent-*:1.2.0-alpha04 iptal edilir. 1.2.0-alpha04 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Yön özelliklerinin bağımsız olarak izlenmesine olanak tanımak için NavigationEventInput'ye yeni hasEnabledBackHandlers ve hasEnabledForwardHandlers API'leri eklendi. (I772bf, b/123456789)

Hata Düzeltmeleri

  • Görünüm ağacı sahipleri kullanılamadığında LocalNavigationEventDispatcherOwner sorununu çözmek için yedek bağlam geçişi araması kullanıma sunuldu. (I51e30, b/530641649)

Sürüm 1.2.0-alpha03

29 Temmuz 2026

androidx.navigationevent:navigationevent-*:1.2.0-alpha03 iptal edilir. 1.2.0-alpha03 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Hedef başlığının ve konum URL'sinin özelleştirilmesine izin vermek için NavigationEventInfo öğesine title ve url ekleyin. (Ie5619)
  • navigationevent'e NavigationEventDispatcherOwner fabrikasını ekleyin. (I740d3)
  • Yeni ve kararsız API'lerin açıkça etkinleştirilmesine izin vermek için deneysel gezinme etkinliği API'si notu ekleyin. (Ia5d25)

Hata Düzeltmeleri

  • BrowserInput'u deneysel bir API olarak wasmJs hedeflerinde herkese açık hale getirin. (Icc2a8)

Sürüm 1.2.0-alpha02

15 Temmuz 2026

androidx.navigationevent:navigationevent-*:1.2.0-alpha02 iptal edilir. 1.2.0-alpha02 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Geliştiricilerin geri çağırmalara güvenmeden mevcut işleyici durumunu doğrudan sorgulamasına olanak tanımak için hasEnabledHandlers özelliğini NavigationEventInput öğesine ekleyin. (I8ecec)

Hata Düzeltmeleri

  • NavigationEventDispatcher konumunda yedek yayılımını düzeltin. (I015f8, b/531988076)

Sürüm 1.2.0-alpha01

1 Temmuz 2026

androidx.navigationevent:navigationevent-*:1.2.0-alpha01 iptal edilir. 1.2.0-alpha01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • androidx.benchmark artık 24 minSdk sahibi. (Ic2a85)
  • İşlenmemiş ileri gezinme etkinliklerinin izlenmesini ve test edilmesini sağlamak için TestNavigationEventDispatcherOwner'a onForwardCompletedFallback'ı ekleyin. (I6bbd7)
  • Testlerde gezinme etkinliklerinin simülasyonunu basitleştirmek için TestNavigationEventDispatcherOwner'a navigationEventInput'u ekleyin. (I3ef48)

Hata Düzeltmeleri

  • API bilgilerini temizler (Ia8066)
  • Bağlantısı kesilmiş girişlere gönderilen gezinme etkinliklerini yoksay. Daha önce, kaldırılan bir girişe etkinlik göndermek IllegalStateException hatası veriyordu. (I1a8bc, b/515890298)
  • Compose Multiplatform 1.11.0'a yükseltirken eski JetBrains fork sürümlerinde sembollerin kopyalanmasını önleyin. (I4cc4d)

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 Previews'da Tahmini Geri'yi etkinleştirmek için inceleme modundayken NavigationEventHandler no-op kaldı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 öğesini NavigationEventDispatcher öğesine 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 barındırıcıların, Android'de güvenli bir yedek olarak LocalView'yı korurken varsayılan bir LocalNavigationEventDispatcherOwner sağlamasına olanak tanımak için sahiplik çözümünü LocalView'dan ayırın. (Iae980, b/434940570, Iccf58)

API Değişiklikleri

  • Android'in BackEvent ve NavigationEvent arasında dönüştürme yapmak için NavigationEvent.toBackEvent() ve BackEvent.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 NavigationEventHandler kullanılırken oluşan kilitlenme sorunu düzeltildi. İşleyici artık inceleme modunu algılıyor ve herhangi 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 gibi bir alt öğe NavigationEventDispatcher atılırken oluşan ConcurrentModificationException 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ı sürümde. Navigation Event, Android'de (ve diğer platformlarda) sistem düzeyinde geri gitme ve tahmini geri gitme gibi sistem düzeyindeki etkileşimleri işlemek için kullanılan AndroidX kitaplığıdır.

  • NavigationEvent işlemek için istediğiniz işlevleri geçersiz kılan kendi NavigationEventHandler uygulayabilirsiniz. Ardından işleyiciyi bir NavigationEventDispatcher öğesine eklemeniz gerekir. Activity 1.12.0 sürümünden itibaren ComponentActivity, kullanıma hazır bir dağıtıcı sağlayan yeni NavigationEventDispatcherOwner arayü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-compose modülü, işleyiciyi en yakın LocalNavigationEventDispatcherOwner'nin NavigationEventDispatcher'sine otomatik olarak bağlayan ve geliştiricilerin istenen davranışı parametre olarak sağlamasına olanak tanıyan kullanışlı bir compose işlevi NavigationBackHandler sunar:

    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 taşıyarak farklı composable'lar tarafından gözlemlenmesini çok kolaylaştırır (ör. Navigation3'te durumu NavDisplay öğesinden taşıyabilirsiniz).

  • Her NavigationEventDispatcher, hem oluşturma hem de oluşturmama durumlarında üst dağıtıcı sağlayabilir. Bu sayede geliştiriciler, tek bir üst öğe tarafından yönetilebilen birden fazla göndericinin bulunduğu hiyerarşik bir yapı oluşturabilir. Bir üst öğenin olması, devre dışı bırakılması veya kaldırı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, NavigationEventInput aracılığıyla doğrudan NavigationEventDispatcher'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ı) bir NavigationEventDispatcher'ye gönderilebilecek standartlaştırılmış etkinliklere çevirir. navigationevent:navigationevent modülü şu anda 2 NavigationEventInput sağlar: herhangi bir etkinliğin gönderilmesine izin veren daha genel bir DirectNavigationEventInput ve NavigationEventDispatcher'nin sistem geri ve tahmini geri hareketini desteklemesine olanak tanıyan Android'e özgü bir OnBackInvokedInput. Kendi göndericinizi uyguluyorsanız (ComponentActivity tarafından sağlanan göndericiyi kullanmak yerine) 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.touchX ve NavigationEvent.touchY için FloatRange açıklamasını düzeltin. Bu değerler mutlak piksel koordinatlarını temsil eder ve 1.0 üst sınıra sahip değildir. (I4b205, b/445989313)
  • NavigationEventDispatcherOwner composable'ını rememberNavigationEventDispatcherOwner composable'ına yeniden düzenleyin. İşlev artık doğrudan NavigationEventDispatcherOwner değerini döndürüyor. Bu sahibi bir alt bileşime sağlamak için CompositionLocalProvider kullanı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ğrudan NavigationEventTransitionState.Idle tekil 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)
  • NavigationEventState öğesinin rememberNavigationEventState üzerinden oluşturulması gerekiyor. Oluşturucu artık dahili. (Ie143c, b/444734264)
  • onBackCompletedFallback yerine fallbackOnBackPressed kullanı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)'nın birincil oluşturucusu artık internal. 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, boş değer atanabilir sahibi kabul etsin (Ic9eb6, b/444436762)
  • NavigationEventInfo artık interface yerine abstract 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 ve getState<T>() işlevi kaldırıldı. Yeni ve ayrı dispatcher.transitionState (hareket ilerlemesi için) ve dispatcher.history (gezinme yığını için) akışlarını kullanın. (Ic2ceb, b/444734264)
  • NavigationEventInput.onInfoChanged(...) geri çağırma işlevi değiştirildi. Güncellemeleri tek bir NavigationEventHistory nesne olarak almak için yeni onHistoryChanged(history: NavigationEventHistory) geri çağırma işlevini uygulayın. (I23e0b, b/444734264)
  • Yeni bir küresel NavigationEventDispatcher.history StateFlow'ı kullanıma sunun. 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, transitionState işlevinin karşılığıdır. (I1db10, b/444734264)
  • Yeni bir küresel NavigationEventDispatcher.transitionState StateFlow'ı kullanıma sunun. 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)
  • NavigationEventHistoryState sı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)
  • NavigationEvent artık @Immutable olarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (If78c7, b/444734264)
  • navigationevent-compose işleyici API'leri güncellendi. NavigationEventHandler ve NavigationBackHandler (ve varyantları) artık yükseltilmiş NavigationEventStates'yi kabul eden yeni bir aşırı yüklemeyi destekliyor. Basit aşırı yüklemeler (currentInfo alan) korunur ve artık bu yeni durum modelini dahili olarak kullanır. (Ic3251, b/444734264)
  • Yeni @Stable NavigationEventState<T> durum bilgisi depolayıcıyı navigationevent-compose kitaplığına ekleyin. Bu nesne, yerel geçmişi yerel hareket durumuyla birleştirir ve rememberNavigationEventState ile NavigationEventHandler arasındaki birincil bağlantı olur. (Ifb69f, b/444734264)
  • transitionState: TransitionState öğesine yeni bir herkese açık, salt okunur NavigationEventHandler özelliği ekleyin. İşleyiciler artık kendi geçiş durumlarını koruyor ve bu durum harici sistemler tarafından gözlemlenebiliyor. (I9acd2, b/444734264)
  • Yeni TransitionState kapalı 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, backInfo ve forwardInfo özelliklerini NavigationEventHandler üzerinde herkese açık, salt okunur özellikler olarak kullanıma sunun. (Ia7636, b/444734264)
  • NavigationEventHandler uygulamaları artık temel oluşturucuya bir initialInfo: T değeri sağlamalıdır. (Idcfea, b/444734264)
  • OnBackInvokedInput yerine OnBackInvokedOverlayInput veya OnBackInvokedDefaultInput koyun. (I5323f, b/428948766)
  • NavigationEventState adlı katılımcıyı @Immutable olarak 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.NotProvided dosyasını NavigationEventInfo.None; olarak yeniden adlandırarak referansları güncelleyin. Davranış değişikliği yok. (I5e2d4)
  • NavigationEventInfo artık @Immutable olarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (I7c112)
  • Geriye doğru tamamlama yedeklemesi için eğlenceli bir arayüzle Java ergonomisini iyileştirin. (I8a860)
  • onHasEnabledHandlerChanged filtresini onHasEnabledHandlersChanged olarak yeniden adlandırın. Bu, geri arama raporlarının yalnızca bir işleyicinin değil, tüm işleyicilerin toplu etkinleştirme durumuyla ilgili olduğunu netleştirir. (I1af61, b/443711297)
  • hasEnabledHandler() öğesini NavigationEventDispatcher; kullanımından kaldırın ve bunun yerine NavigationEventInput.onHasEnabledHandlersChanged öğesini kullanın. (Idef72, b/443711297)
  • Dinleyicileri gezinme geçmişindeki değişikliklerden haberdar etmek için onInfoChanged geri çağırma işlevini NavigationEventInput öğ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's swipeEdge an @IntDef (Icee54, b/443950342)
  • Bir göndereni tek bir öncelikle sınırlamak için NavigationEventDispatcher.addInput öğesine priority parametresi ekleyin. onHasEnabledCallbacksChanged gibi 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 NavigationEventDispatcher parametresini parentDispatcher yerine üst olarak yeniden adlandırın. (Id4f1f, b/443801782)
  • Java kullanıcıları için NavigationEventPriority yerine @IntDef'nin kullanılması (I10a9f, b/440514265)
  • Gezinme işleyici sözleşmesini zorunlu kılın. NavigationEventHandler, isBackEnabled veya isForwardEnabled değerini true olarak ayarlıyorsa artık sırasıyla onBackCompleted veya onForwardCompleted değ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 addHandler işlevi, desteklenmeyen bir öncelikle çağrıldığında IllegalArgumentException oluşturacak ve tüm hedef platformlarda yanlış kullanımla ilgili anında geri bildirim sağlayacak. (I3c474)

Hata Düzeltmeleri

  • addHandler işlemini 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ğlam bilgilerini (mevcut, geri, ileri) alır. (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ı bir NavigationEventHandler API'si kullanıma sunulacak. Akışları toplamak yerine basit geri çağırmalarla geri ve ileri hareketlerini işleyerek ortak metinleri azaltın ve iptal sorunlarını önleyin. Hedeflenen kolaylık API'leri olarak NavigationBackHandler ve NavigationForwardHandler'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 geçmişine erişmesine izin verin. Kullanıcı arayüzlerinin, en üstteki geri çağırma ile sınırlı kalmak yerine ö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 yerleştirilmiş işleyicilerle ileri gezinmeyi desteklemek için açık bir geri/geçerli/ileri modeli sunun. (Ib86da, b/420443609)
  • NavigationEventCallback için onForward* yöntemleri ve isForwardEnabled eklendi. (Ic100f, b/436248290)
  • NavigationEventInput öğesine ileri gezinme desteği ekleyin. (I5734b)

API Değişiklikleri

  • TestNavigationEventCallback ile ileri gezinme etkinliklerinin test edilmesini etkinleştirin. isForwardEnabled ve onForward* kancalarını kullanın. (I21fb5, b/420443609)
  • NavEvent içinde onEvent* geri çağırma işlevlerini onBack* olarak yeniden adlandırın. (I228b3, b/436248290)
  • SwipeEdge öğesini satır içi sınıfa dönüştürün. (Id5e01)
  • navigationevent kitaplığı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şilebiliyor. Bu sayede, karma dilli veya yalnızca Java'dan oluşan projelere sorunsuz entegrasyon sağlanıyor. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)
  • NavigationEventCallback rolünü NavigationEventHandler olarak yeniden adlandırarak API rollerini netleştirin. Bu değişiklik, sınıfın çok kademeli gezinme hareketlerini işleme amacını daha iyi yansıtır. İlgili addCallback yöntemi artık addHandler. (I2492a, b/443040331)

Hata Düzeltmeleri

  • İleri gezinmede geri yedeklemenin çalışmasını önleyin. (I74814, b/436248290)
  • Tahmin edilen ileri gezinme için destek ekleyin. NavigationEvent API'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 IllegalStateException alt öğe kaldırıldığında yeniden oluşturma sırasında kilitlenmeyi NavigationEventDispatcherOwner önleyin. (Iff50c, b/412629020)
  • Pasif dinleyiciler artık birleştirilmiş geri bilgiler aracılığıyla tam gezinme geri yığınına 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şiyi soyut bir resim olarak oluştur. (I36b38)
  • NavigationEventCallback#on* yöntemlerini protected olarak değiştirin. Bunları geçersiz kılmak için arama kodunu güncelleyin. (I6b691)
  • DirectNavigationEventInput işlevlerini yeniden adlandırın. (Iffb62)
  • NavigationEventInput.onAttach filtresini onAdded olarak yeniden adlandırın. (I2d0b8)
  • NavigationEventInput.onDetach filtresini onRemoved olarak yeniden adlandırın. (I2d0b8)
  • NavigationEventInputHandler filtresini NavigationEventInput olarak yeniden adlandırın. (I676a4)
  • @EmptySuper öğesini NavigationEventInput.onHasEnabledCallbacksChanged öğesine ekleyin. (If9853)
  • NavigationEventInputHandler konumunda onAttach adlı tetikleyiciyi uygulayın. (I03648)
  • NavigationEventInputHandler konumunda onDetach adlı tetikleyiciyi uygulayın. (I03648)
  • Varsayılan olarak oluşturulduğunda NavigationEventCallback etkinleştirilir. (Ic0188)
  • NavigationEventInput.addOnHasEnabledCallbacksChangedCallback yerine NavigationEventInput.onHasEnabledCallbacksChanged koyun. (I64e93)
  • NavigationEventDispatcher.addInput için ana iş parçacığını zorunlu kılın. (Ic2930)
  • NavigationEventDispatcher.removeInput için ana iş parçacığını zorunlu kılın. (Ic2930)
  • Dispatcher.addOnHasEnabledCallbacksChangedCallback öğesini kaldır Dispatcher.onHasEnabledCallbacksChanged ile değiştirin. (Ida3e3, b/436530096)

Hata Düzeltmeleri

  • Hâlihazı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:

  1. Bilgi Sağlama: Özel verileri taşımak için NavigationEventInfo kullanın.
  2. Tüketim Durumu: Hareketin ilerleme durumunu ve bağlamını gözlemlemek için dispatcher.state (NavigationEventState) kullanın.
  • NavigationEventCallback artık tek bir çağrıda hareket bağlamını ayarlamak için setInfo(currentInfo, previousInfo) yöntemini kullanıyor (I1d5e7, b/424470518).
  • NavigationEventHandler, currentInfo ve previousInfo 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 */ }
  • NavigationEventDispatcher artık dispatcher.state ve dispatcher.getState<T>()'yi (If7fae, Ia90ca, b/424470518) kullanıma sunuyor. Bu StateFlow tabanlı 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 takdirde 0F değerini döndüren NavigationEventState (I7b196) öğesine progress özelliğini ekleyin:

    val progress = state.progress
    
  • NavigationEventDispatcherOwner composable'ı ekleyerek NavigationEventDispatcher ö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

  • isPassthrough parametresi, NavigationEventCallback öğesinden kaldırıldı. (I99028, b/424470518)
  • NavigationEventState oluşturucuları artık dahili. Test için durumu DirectNavigationEventInputHandler üzerinden güncelleyin (varsayılan olarak Idle ayarlanır). Durumu InProgress olarak ayarlamak için handleOnStarted veya handleOnProgressed, Idle olarak ayarlamak için handleOnCompleted veya handleOnCancelled işlevini çağırın. NavigationEventInfo uygulamasını güncellemek için NavigationEventCallback.setInfo özelliğini kullanın. (I93dca, b/424470518)
  • Daha kolay örnek oluşturmaya olanak tanımak ve TestNavigationEvent yerine kullanılması gereken testleri basitleştirmek için NavigationEvent'ya varsayılan parametreler eklendi. (I5dc49, I232f4)
  • Belirli mevcut/önceki durumlarla gezinme etkinliklerini test etmek için TestNavigationEventCallback eklendi. (Idd22e, b/424470518)
  • NavigationEventInputHandler, önceki AbstractNavigationEventInputHandler yerine DirectNavigationEventInputHandler'de (Iadde5, Ifed40I3897c, b/432616296, b/435416924) bir uygulama ile değiştirilmek üzere soyut bir sınıf haline getirildi.
  • NavigationEventInputHandler içindeki send* işlevlerinin ön ekleri handle* olarak yeniden adlandırıldı. (Iffcaf)
  • OnBackInvokedInputHandler artık yeni abstract NavigationInputHandler. (Ib45aa)
  • NavigationEventDispatcherOwner, kök dağıtıcı oluşturmak için null'yi açıkça iletmeniz gereken bir üst dağıtıcı gerektirecek şekilde değiştirildi. (Ia6f64, b/431534103)

Hata Düzeltmeleri

  • NavigationEventDispatcher.dispose() içinde koleksiyon kopyalarını önleyerek verimliliği artırın. (I4ab09)
  • NavigationEventHandler simgesinin etkin durumundaki değişikliklere doğru şekilde yanıt vermemesi sorunu düzeltildi. (Ia5268,I19bec, I5be5c, b/431534103)

Dokümanlar Güncellemeleri

  • NavigationEvent için KDocs, birleştirilmiş 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

  • NavigationEvent artık navigationevent-compose yapı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, zincirlenmiş dağıtıcılar 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 etkinleştirilmiş olarak kabul edilmek 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şlevi çağrıldığında, bellek sızıntılarını önlemek için dinleyiciler durdurulur, tüm alt dağıtıcılar yinelemeli olarak kaldırılır, dağıtıcıya kaydedilen tüm geri çağırmalar kaldırılır ve dağıtıcı, üst öğesinden ayrılı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 bir 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 yer alması planlanmaktadır.

Gezinme Testi Kitaplığı

  • navigationevent kitaplığı için özel test yardımcı programları sağlamak üzere navigationevent-testing modülünü ekleyin. (0e50b6)
  • Test için TestNavigationEventCallback sahte yardımcı sınıfını ekleyin. Doğrulamayı desteklemek için geri çağırma yöntemi çağrılarını kaydeder ve alınan NavigationEvent öğelerini depolar. (4a0246)
  • Varsayılan değerlere sahip NavigationEvent örnekleri oluşturmak için TestNavigationEvent sahte yardımcı işlevi ekleyin. Bu işlev, gezinme etkinliği işleme için birim testlerini basitleştirir. (3b63f5)
  • Test için TestNavigationEventDispatcherOwner sahte yardımcı sınıfını 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

  • KMP ortak kodunda kullanılabilir hale getirmek için NavigationEventInputHandler öğesini androidMain konumundan commonMain konumuna taşıyın. Etkinlik göndermek için yeni public send* yöntemleri ekleyin. NavigationEventDispatcher'daki gönderme işlevleri public'dan internal'a değiştirildi. Kullanıcıların artık etkinlik göndermek için NavigationEventInputHandler'ı kullanması gerekiyor. (Ia7114)
  • NavigationInputHandler filtresini OnBackInvokedInputHandler olarak 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 NavigationEventDispatcher yeniden 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'deki touchX, touchY ve progress alanlarına @FloatRange ek açıklamaları ekleyin. (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-compose için kullanıldı ve commonStubs hedefi eklenerek Compose kurallarına uygun hale getirildi. 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

  • navigationevent-compose kitaplığındaki Jetpack Compose özelliklerini desteklemek için yeni bir navigationevent modülü kullanıma sunuldu. (980d78)
  • NavigationEvent Compose, yeni bir LocalNavigationEventDispatcherOwner yerel kompozisyon ekledi. Geçerli kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürür. NavigationEventHandler artık temel alınan sahip bulunamazsa hata verir. (62ffda)
  • NavigationEvent Compose, (tahmin edilen geri gitme hareketi) etkinliklerini işlemek için yeni bir NavigationEventHandler Composable ekledi. Sağladığınız askıya alma lambda'sında toplanması gereken Flow NavigationEvent nesnesi 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 NavigationEventCallback artık aynı anda yalnızca bir NavigationEventDispatcher ile kaydedilebilir. Birden fazla dağıtıcıya eklenmesi IllegalStateException hatası verir. Bu davranışın, birden fazla göndericiye izin veren OnBackPressedDispatcher davranışından farklı olduğunu unutmayın. (e82c19)
  • Gezinme sırasında mutasyonu önlemek için isPassThrough, val olarak değiştirildi. Bu durum, NavigationEvent'nin gönderimini 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 mülkü NavigationEventCallback'dan kaldırın. Bunun yerine NavigationEventDispatcher.addCallback()'a öncelik verin. (I13cae)

Hata Düzeltmeleri

  • Kapatılabilir öğelerin dahili listesi eşzamanlı olarak değiştirildiğinden NavigationEventCallback.remove() çağrıldığında oluşabilecek ConcurrentModificationException dü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.navigationevent kitaplığı, 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 fazla NavigationEventCallback örneğini kaydetmek üzere ortak API'ler olarak işlev görür.
  • Bu katman, androidx.activity iç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çevesi OnBackInvokedDispatcher API'lerini kullanmanın daha az fikir beyan eden bir alternatifi olmayı amaçlar. androidx.activity API'leri, Activity 1.12.0-alpha01 kapsamında Navigation Event API'lerinin üzerine yeniden yazıldı.