Navigasyon

Gezinme, Android uygulamasındaki "hedefler" arasında gezinmek için kullanılan bir çerçevedir. Hedefler, Fragment, etkinlik veya başka bileşenler olarak uygulanmış olsa bile tutarlı bir API sağlar.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
13 Kasım 2024 2.8.4 - - 2.9.0-alpha03

Bağımlılıkları beyan etme

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

Uygulamanızın veya modülünüzün build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.4"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.4"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Safe Args

如需将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.8.4"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.8.4"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

您还必须应用以下两个可用插件之一。

如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块build.gradle 文件中:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

根据迁移到 AndroidX 文档,您的 gradle.properties 文件中必须具有 android.useAndroidX=true

Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx dokümanlarını inceleyin.

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ştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 2.9

Sürüm 2.9.0-alpha03

13 Kasım 2024

androidx.navigation:navigation-*:2.9.0-alpha03 yayınlanır. 2.9.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Gezinme türü güvenliği artık değer sınıflarını rota olarak veya rotanın bağımsız değişken türü olarak desteklemektedir. (I9344a, b/374347483)

Hata Düzeltmeleri

  • NavBackStackEntry'ye bağlı bir LifecycleObserver, barındıran LifecycleOwner (içerdiği Aktivite veya Fragment gibi) yaşam döngüsü durumunu değiştirdiğinde arka yığınta bir değişiklik tetiklediğinde ortaya çıkabilecek bir ConcurrentModificationException düzeltildi. (Ia9494)

Sürüm 2.9.0-alpha02

30 Ekim 2024

androidx.navigation:navigation-*:2.9.0-alpha02 yayınlanır. 2.9.0-alpha02 sürümü bu taahhütleri içerir.

Harici Katkı

  • Yeni ortak NavController.handleDeepLink(request: NavDeepLinkRequest) yöntemi. Teşekkür ederiz Konstantin Tskhovrebov. (I3e228)

Sürüm 2.9.0-alpha01

16 Ekim 2024

androidx.navigation:navigation-*:2.9.0-alpha01 yayınlanır. 2.9.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Özel Gezginler artık hedeflerini SupportingPane arayüzünü uygulayan olarak işaretleyebilir. Bu, NavController'ye bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüz kullanılarak örneğin aynı anda birden fazla hedef RESUMED olabilir. (Id5559)
  • Gezinme 2.8.3 bölümünde: @Serializable ile doğru şekilde ek açıklama eklenmemiş, tür açısından güvenli rotaları belirlemeye yardımcı olmak için navigation-common, navigation-runtime ve navigation-compose modülleri için yeni dil bilgisi denetimleri eklendi. Bu kontrol tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • Gezinme 2.8.3 bölümünde: @Keep ile doğru şekilde ek açıklama eklenmemiş Enum bağımsız değişkenleri içeren tür açısından güvenli rotaları belirlemeye yardımcı olmak için navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontrol tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Davranış Değişiklikleri

  • Daha önce DESTROYED olan bir NavController'yi kullanmaya çalışmak artık IllegalStateException'ye neden olur. (I520da, b/369616172)

Hata Düzeltmeleri

  • Enum sınıfı bulunamadı istisnası, Enum sınıfının sıkıştırılmış derlemelerde silinmesi ihtimaline karşı @Keep ek açıklamasının kullanılmasını önerecek şekilde güncellendi. (I90e79, b/358137294)

Bilinen Sorunlar

  • Navigation 2.8.* sürümünde eklenen yeni lint kurallarıyla ilgili bir sorun vardır. Bu sorun, Android Gradle Plugin 8.4 ve sonraki sürümlerde lint çalıştırmaya çalışırken Obsolete custom lint check hatasına neden olur. (b/368070326, b/371463741)

Sürüm 2.8

Sürüm 2.8.4

13 Kasım 2024

androidx.navigation:navigation-*:2.8.4 yayınlanır. 2.8.4 sürümü bu taahhütleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

Sürüm 2.8.3

16 Ekim 2024

androidx.navigation:navigation-*:2.8.3 yayınlanır. 2.8.3 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • @Serializable ile doğru şekilde ek açıklama yapılmayan, tür açısından güvenli yolları belirlemeye yardımcı olmak için navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontrol tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • @Keep ile doğru şekilde ek açıklama eklenmemiş Enum bağımsız değişkenleri içeren tür açısından güvenli rotaları belirlemeye yardımcı olmak için navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontrol tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Hata Düzeltmeleri

  • Navigation 2.8.* sürümünde eklenen yeni lint kurallarının, Android Gradle eklentisi 8.4 ve sonraki sürümlerde lint çalıştırmaya çalışırken Obsolete custom lint check hatasına neden olduğu sorun düzeltildi. (I1be3d, b/368070326, b/371463741)

Bilinen Sorunlar

  • Gezinme lint'i, Lint 16 (AGP 8.7) veya sonraki sürümlerle lint çalıştırmaya çalışırken Eski özel lint kontrolü hatası verir. (b/371926651)

Sürüm 2.8.2

2 Ekim 2024

androidx.navigation:navigation-*:2.8.2 yayınlanır. 2.8.2 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Gezinme Türü Güvenliği artık özel NavType gerektirmeden Double, Double?, DoubleArray, DoubleArray?, List<Double> ve List<Double>? içeren Serializable sınıflarını desteklemektedir. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)

Hata Düzeltmeleri

  • Gezinme, bir rotanın bağımsız değişkenini NavType ile eşleyemediğinde gösterilen hata mesajı iyileştirildi. Yeni hata mesajı, bağımsız değişken adını, bağımsız değişkenin tam nitelikli adını ve rotanın tam nitelikli adını içerir. (Id8416, b/346264232)

Sürüm 2.8.1

18 Eylül 2024

androidx.navigation:navigation-*:2.8.1 yayınlanır. 2.8.1 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Tür güvenliği olan API'leri kullanarak popBackStack yapmaya çalışırken yeniden oluşturulmuş sınıf türü alan popBackStack işlevinin kullanılmasını sağlamak için yeni bir lint kuralı eklendi. (Ief161, b/358095343)

Hata Düzeltmeleri

  • Gezinme için artık NavGraph'nin startDestination parametresine iletilen rotanın, zorunlu tüm bağımsız değişkenlerin değerlerini (boş olmayan ve varsayılan değeri olmayan bağımsız değişkenler dahil) içermesi gerekir. (I18e74, b/362594265)
  • Gezinme için güvenli bağımsız değişkenler, "null" değerlerinin ayrıştırılıp pakete olduğu gibi depolanacağı şekilde, null olmayan dizeler için destek ekledi. Bu, "null" değerlerinin null nesnesi olarak ayrıştırıldığı mevcut davranıştan farklıdır. Bu değişiklik yalnızca boş olmayan dize türleri için geçerlidir. Boş bırakılabilen dizelerde değişiklik yapılmaz. (I08b4a, b/348936238)
  • NavDestination'lere artık hedefe açıkça eklenen derin bağlantılar dışında derin bağlantı oluşturulamaz. Bu, yalnızca bir dize rotası alan navigate işlevini aşırı yüklemeyle bir hedefin rotasına gideceğiniz anlamına da gelir. Bu, potansiyel olarak korunan bir hedefe derin bağlantı oluşturmayı mümkün kılan bir güvenlik açığını düzeltir. (Ie30e6)

Bağımlılık Güncellemesi

  • Gezinme Güvenli Arg'leri artık Kotlin 2.X yerine Kotlin 1.9.24'ü temel aldığından geliştiricilerin güncelleme yapması gerekmez. (a4129a)
  • Gezinme E-posta Yaz'ı artık E-posta Yaz 1.7.2'a bağlıdır.

2.8.0 sürümü

4 Eylül 2024

androidx.navigation:navigation-*:2.8.0 yayınlanır. 2.8.0 sürümü bu taahhütleri içerir.

2.7.0 sürümünden beri yapılan önemli değişiklikler

Gezinme Kotlin DSL Tür Güvenliği

  • Navigasyon artık Kotlin Serialization'i kullanarak Kotlin DSL (Navigation Compose tarafından kullanılır) için tür güvenliği sağlar. Böylece, tür güvenliğine sahip nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizde hedefleri tanımlayabilirsiniz:
    // Define a home destination that doesn't take any arguments
    @Serializable
    object Home

    // Define a profile destination that takes an ID
    @Serializable
    data class Profile(val id: String)

    // Now define your NavHost using type safe objects
    NavHost(navController, startDestination = Home) {
        composable<Home> {
            HomeScreen(onNavigateToProfile = { id ->
                navController.navigate(Profile(id))
            })
        }
        composable<Profile> { backStackEntry ->
            val profile: Profile = backStackEntry.toRoute()
            ProfileScreen(profile)
        }
    }

Daha fazla bilgi için Gezinme Oluşturma Toplantı Türü Güvenliği blog yayınını inceleyin.

Gezinme Oluşturma Tahmini Geri

  • Gezinme Oluşturma, artık compose-animation'daki yeni SeekableTransitionState API'leri aracılığıyla tahmini uygulama içi geri özelliğini destekliyor. Bu sayede, tamamlanmış hareketle işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri hareketini kullanabilirsiniz.

Gezinme Parçası Kompoziti

  • Navigasyon XML dosyalarınıza birleştirilebilir hedefler eklemenize olanak tanıyan NavHostFragment için ComposableNavHostFragment alternatifi içeren yeni bir navigation-fragment-compose yapı eklendi. Her composable hedefi, tam nitelikli adı her hedefte android:name özelliği olarak kullanılan üst düzey, bağımsız değişken içermeyen bir @Composable yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayıcı bir parça oluşturulur.
  // In HomeScreen.kt
  @Composable
  fun HomeScreen() {
    // Your Composable content here
  }

  // In your navigation.xml
  <composable
    android:id="@+id/home_screen"
    android:name="com.example.HomeScreenKt\$HomeScreen" />

Diğer Değişiklikler

  • Gezinme Oluştur artık Oluştur 1.7.0 sürümüne bağlıdır.
  • Gezinme, liste, diziler ve haritalar gibi koleksiyona dayalı bağımsız değişkenler için NavType<T> alt sınıfı olan yeni bir CollectionNavType<T> sınıfı sunar. Varsayılan NavType dizilerinin tümü (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType ve StringArrayType) artık bu yeni sınıftan devralınır.
  • NavType artık Int, String, Boole, Float ve Long listeleri için yerleşik destek sunmaktadır.

Sürüm 2.8.0-rc01

21 Ağustos 2024

androidx.navigation:navigation-*:2.8.0-rc01 yayınlanır. 2.8.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Üst düzey Enum sınıflarını tür güvenli bağımsız değişkenler olarak ilettiğinizde yaşanan gezinme kilitlenmesini düzeltin. (I0ba76, b/358137294)
  • Navigasyon 2.8 artık SDK 34 ile doğru şekilde çalışıyor ve AndroidX kitaplıklarının geri kalanıyla birlikte 2.9 sürümü yayınlanana kadar SDK 35'e geçmeyecek. (b/358798728)

Sürüm 2.8.0-beta07

7 Ağustos 2024

androidx.navigation:navigation-*:2.8.0-beta07 yayınlanır. 2.8.0-beta07 sürümü bu taahhütleri içerir.

Bilinen Sorunlar

  • b/358137294 nedeniyle, yalnızca başka bir sınıfa yerleştirilmiş Enums'ler hazır olarak desteklenir. Üst düzey enum'ler sonraki sürümde desteklenecek.

Hata Düzeltmeleri

  • Yinelenen veya paylaşılan hedeflere giderken navigasyon, grafikteki mevcut konumdan en yakın eşleşen hedefe gitmeye öncelik verir. (Ic89a4, b/352006850)
  • Güvenli bağımsız değişkenlerde gezinme için yeni bir NavType.EnumType eklendi. Bu, Enum türlerinin artık özel NavType'lara ihtiyaç duymadığı anlamına gelir. Enum'nin SerialName özelliğinin varsayılan tam nitelikli ad olması gerektiğini unutmayın. (I66d22, b/346475493)
  • Güvenli bağımsız değişkenlerde gezinme özelliğine Int?,Long?, Float?, Boolean? ve Enum<*>? dahil olmak üzere boş değer atanabilen bağımsız değişken türleri için yerleşik destek eklendi. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • NavGraph'ye iletilen startDestination rotası startDestination.route ile tam olarak eşleşirse NavGraph'nin startDestination işlevi artık varsayılan bağımsız değişken değerlerini kullanır. (I13762, b/354046047)

Sürüm 2.8.0-beta06

24 Temmuz 2024

androidx.navigation:navigation-*:2.8.0-beta06 yayınlanır. 2.8.0-beta06 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • WrongStartDestinationType lint kontrollerinin, iletilen sınıf türünde Companion nesnelerini kontrol etmemesi ve bu nedenle lint'in hatayı algılayamamasına neden olan sorun düzeltildi. (I92b09)

Sürüm 2.8.0-beta05

10 Temmuz 2024

androidx.navigation:navigation-*:2.8.0-beta05 yayınlanır. 2.8.0-beta05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • İç içe yerleştirilmiş NavGraphs'ler aynı startDestination rotasını paylaştığında singleTop navigasyon kilitlenme sorununu düzeltin. (I17b94, b/294408596)

Sürüm 2.8.0-beta04

26 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta04 yayınlanır. 2.8.0-beta04 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Navigasyon, artık yol bağımsız değişkenlerinde boş dizelerle gezinmeyi desteklemektedir. (Ic5dbd, b/339481310)
  • Doğrudan sınıf alanlarında @Serializable(with =...) aracılığıyla tanımlanan özel serileştiriciler için hata mesajını, bunun şu anda desteklenmeyen bir özellik olduğunu açıkça belirtecek şekilde iyileştirin. (I052b0, b/341319151)
  • SavedStateHandleFactory test API'si artık Android dışı testlerde kullanılabilir ancak Robolectric'in Bundle'larla bağımsız değişken ayrıştırmayı desteklemesi gerekir. (I76cdc, b/340966212)
  • Oluşturma bölümünde Tür Güvenli Gezinme kullanılarak işlem sona erdikten sonra uygulama devam ettirilirken durum geri yüklemeyle ilgili kilitlenme düzeltildi. (Ia8f38, b/341801005)
  • Gezinme Oluşturma'da, Tahmini Geri Hareketi iptal edildikten sonra kullanıcının geri döndüğü NavBackStackEntry'nin hiçbir zaman RESUMED yaşam döngüsü durumuna geri dönmemesi sorunu düzeltildi. Bu, geri dönen hedefin bir atıştan sonra yerine sabitlenmek yerine doğru şekilde geri animasyonla gelmesini de sağlar. (I97a0c, b/346608857)
  • Gezinme Oluşturma ile Tahmini Geri özelliği kullanıldığında, açılan hedef artık doğru z-sırasını alır ve gelen hedefin üstünde doğru şekilde animasyonlu olarak gösterilir. (I2077b, b/345993681)

Sürüm 2.8.0-beta03

12 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta03 yayınlanır. 2.8.0-beta03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • CollectionNavType sınıfında yeni bir soyut emptyCollection() yöntemi var. Bağımsız değişken olarak iletilen boş bir koleksiyonu işlemek için bunu geçersiz kılın. (Ie4d84, b/341723133)

Hata Düzeltmeleri

  • Nihai çıkışların Uri kodlamalı olması gerektiğini vurgulamak için NavType.serializeAsValue ve serializeAsValues ile ilgili dokümanlar eklendi. (Ida6bd, b/344943214)
  • toRoute<T> işlevi, boş CollectionNavType bağımsız değişkeniyle çağrılırken kilitlenme sorunu düzeltildi. Boş bir CollectionNavType ile gezinirken çıkış bağımsız değişkeni, Serializable sınıfınızda tanımlanan varsayılan değer veya varsayılan değer yoksa emptyCollection()'ın döndürdüğü değer olur. (I84158, Id630f, b/342672856)

Sürüm 2.8.0-beta02

29 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-beta02 yayınlanır. 2.8.0-beta02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Boş değer atanabilir özel bir NavType ile NavBackStackEntry.toRoute kullanıldığında ClassCastException kilitlenme sorunu düzeltildi. (I1c29b, b/342239473)
  • Mevcut hedeften kimlik aracılığıyla erişilemeyen bir geri yığın girişini geri yüklemeye çalışırken ortaya çıkan gezinme geri yığın durumu geri yükleme sorunları düzeltildi. Rotalar kimliklerle desteklendiğinden, rotalarla oluşturulan hedefler de etkilendi. Bu, aynı temel soruna sahip clearBackStack() çağrısının neden olduğu kilitlenmeyi de düzeltir. (I423c3, b/339908057)

Sürüm 2.8.0-beta01

14 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-beta01 yayınlanır. 2.8.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SavedStateHandle.toRoute() artık özel bağımsız değişken türleri için bir typeMap parametresi alıyor. (Ie39fb, b/339026523)
  • Kotlin Serializable nesnesinden SavedStateHandle oluşturmak için navigation-testing API'sine bir test API'si eklendi. (Id4867, b/339080702)

Hata Düzeltmeleri

  • Gezinme Kotlin DSL işlevleri için eksik parametre dokümanları eklendi. (I26a36)

Sürüm 2.8.0-alpha08

1 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-alpha08 yayınlanır. 2.8.0-alpha08 sürümü bu taahhütleri içerir.

Gezinme Oluşturma'da Safe Args

Bu işlev, tür açısından güvenli nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizde hedefler tanımlamanıza olanak tanımak için Kotlin Serileştirme'yi kullanır:

  // Define a home destination that doesn't take any arguments
  @Serializable
  object Home

  // Define a profile destination that takes an ID
  @Serializable
  data class Profile(val id: String)

  // Now define your NavHost using type safe objects
  NavHost(navController, startDestination = Home) {
      composable<Home> {
          HomeScreen(onNavigateToProfile = { id ->
              navController.navigate(Profile(id))
          })
      }
      composable<Profile> { backStackEntry ->
          val profile: Profile = backStackEntry.toRoute()
          ProfileScreen(profile)
      }
  }

Daha fazla bilgi için Gezinme Oluşturma Toplantı Türü Güvenliği blog yayınını inceleyin.

Yeni Özellikler

  • navigation-fragment-compose yapı artık ComposableFragment içindeki birleştirilebilir yöntemlere yerel bir LocalFragment bileşimi sağlar. (If35e5)
  • NavType artık Int, String, Boole, Float ve Long listeleri için yerleşik destek sunmaktadır. (I4b6dd, Ia914c, b/188693139)

Sürüm 2.8.0-alpha07

17 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha07 yayınlanır. 2.8.0-alpha07 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Navigasyon XML dosyalarınıza composable hedefi eklemenize olanak tanıyan NavHostFragment için ComposableNavHostFragment alternatifi içeren yeni bir navigation-fragment-compose yapı taşı ekler. Her composable hedefi, tam nitelikli adı her hedefte android:name özelliği olarak kullanılan üst düzey, bağımsız değişken içermeyen bir @Composable yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayıcı bir parça oluşturulur. (I0ef2e, b/265480755)

    // In HomeScreen.kt
    @Composable
    fun HomeScreen() {
      // Your Composable content here
    }
    
    // In your navigation.xml
    <composable
      android:id="@+id/home_screen"
      android:name="com.example.HomeScreenKt\$HomeScreen" />
    

API Değişiklikleri

  • Kotlin Serialization'e dayalı bir yaklaşım kullanarak Navigation Compose'de Safe Args desteği devam etti. Bu API'ler tamamlanmamıştır ve ExperimentalSafeArgsApi ek açıklamasıyla işaretlenmiştir. Bu ek açıklama, gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında kaldırılacaktır. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)

Sürüm 2.8.0-alpha06

3 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha06 yayınlanır. 2.8.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • NavHost artık varsayılan contentAlignment bağımsız değişkeni olarak Alignment.TopStart değerini kullanır. Bu, AnimatedContent için varsayılan değerle uyumlu hale getirir ve merkez geçişinden beklenmedik bir ölçeklenmeyle ilgili bazı örnekleri düzeltir. (I09e72, b/330111602)
  • Gezinme Oluştur kullanılırken tahmini geri hareketi parmağınızla kaydırdığınızda NavHost artık hemen sonlandırmak yerine özel geçişi doğru şekilde tamamlayacak. (I99017, b/327292110)

Sürüm 2.8.0-alpha05

20 Mart 2024

androidx.navigation:navigation-*:2.8.0-alpha05 yayınlanır. 2.8.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık NavGraph'nin startDestination işlevine defaultValue'ye gerek kalmadan doğrudan startDestination yolunda bağımsız değişkenler iletebilirsiniz. Bu durum, iç içe yerleştirilmiş NavGraph startDestinations için de geçerlidir. (I0e0b5, b/109505019, b/188693139)

API Değişiklikleri

  • Liste, diziler, haritalar gibi koleksiyona dayalı bağımsız değişkenler için NavType<T> alt sınıfı olan yeni soyut CollectionNavType<T> sınıfı eklendi. (Ic6d63, b/188693139)
  • Varsayılan tüm NavType dizileri (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType ve StringArrayType) artık CollectionNavType türüne (Idcf79, b/188693139) sahip
  • NavType artık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açık valueEquals API'si sağlıyor. (I6cb97, b/327229511)

Hata Düzeltmeleri

  • Derin bağlantılardaki sorgu parametreleri artık dize tabanlı NavTypes için geçerli değerler olarak bağımsız değişken adının etrafında küme parantezi şeklindeki değerlere (ör. {argName}) izin veriyor. Bu, bu tür bir değerin tüm türler için geçersiz (veya değer yok) olarak kabul edildiği bir sorunu düzeltir. (I18302, b/327274038)
  • navigate veya popBackStack gibi rotaları destekleyen NavController işlevleri artık NavTypes dizisi bağımsız değişkenleriyle doldurulan rotaları düzgün şekilde eşleştirebilir. (Iea805, b/327229511)

Sürüm 2.8.0-alpha04

6 Mart 2024

androidx.navigation:navigation-*:2.8.0-alpha04 yayınlanır. 2.8.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık composable ve/veya navigation işlevlerinin başlatılması kapsamında tanımlayarak Gezinme Oluştur'da geçişleriniz için SizeTranform değerini belirtebilirsiniz. (I91062, b/296912651)

Hata Düzeltmeleri

  • Oluşturma Gezinme menüsündeki NavHost simgesinin, Sistem Geri tuşu hareket olmadan kullanıldığında geçişi düzgün şekilde göstermemesi sorunu düzeltildi. (Iceeae, b/325998468)

Sürüm 2.8.0-alpha03

21 Şubat 2024

androidx.navigation:navigation-*:2.8.0-alpha03 yayınlanır. 2.8.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • NavBackStackEntry.savedStateHandle, zaten ana iş akışında olması gereken kodu kullandığından artık @MainThread olarak işaretlenmiştir. (Ibb988, b/299523245)

Hata Düzeltmeleri

  • Gezinme bölümünde, ilişkili girişin ViewModel özelliğinin kayıtlı durumda olmadığı için NavGraph ViewModel'lerin çok erken DESTROYED olmasına neden olan bir sorun düzeltildi. (Ib6bb7, b/317581849)

Bağımlılık Güncellemesi

Sürüm 2.8.0-alpha02

7 Şubat 2024

androidx.navigation:navigation-*:2.8.0-alpha02 yayınlanır. 2.8.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Gezinme Oluşturma, artık compose-animation'daki yeni SeekableTransitionState API'leri aracılığıyla tahmini uygulama içi geri özelliğini destekliyor. Bu sayede, tamamlanmış hareketle işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri hareketini kullanabilirsiniz. (I8b8e9)

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.navigation:navigation-*:2.8.0-alpha01 yayınlanır. 2.8.0-alpha01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Bir hedefte birden fazla saveState çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk durumun geri yüklenebildiği BackStackState sızıntısı düzeltildi. (I598b0, b/309559751)
  • Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcıları kullanıldığında dize olmayan bağımsız değişkenlerin düzgün şekilde görüntülenmemesine neden olan bir sorun düzeltildi. (#636, b/316676794)

Bağımlılık Güncellemesi

  • Gezinme Oluştur özelliği artık beklenmedik bir ölçek animasyonuna neden olabilecek bir sorunun Oluştur 1.7.0-alpha01 tarafından düzeltilmesine bağlıdır. (b/297258205)

Harici Katkı

  • Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcılarını kullanırken dize olmayan bağımsız değişkenlerle ilgili görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.

Sürüm 2.7.7

Sürüm 2.7.7

7 Şubat 2024

androidx.navigation:navigation-*:2.7.7 yayınlanır. 2.7.7 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme 2.8.0-alpha01'den geri bağlandı: Tek bir NavBackStackEntry üzerinde birden fazla saveState() çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk kaydedilen durumun geri yüklenebildiği BackStackState sızıntısı düzeltildi. (I598b0, b/309559751)
  • Gezinme 2.8.0-alpha01'den geri bağlandı: Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcıları kullanıldığında dize olmayan bağımsız değişkenlerin düzgün şekilde görüntülenmemesine neden olan sorun düzeltildi. (#636, b/316676794)

Harici Katkı

  • Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcılarını kullanırken dize olmayan bağımsız değişkenlerle ilgili görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.

2.7.6 sürümü

2.7.6 sürümü

13 Aralık 2023

androidx.navigation:navigation-*:2.7.6 yayınlanır. 2.7.6 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NavGraph equals() işlevi artık yalnızca çağıran grafiğin değil, diğer grafiğin düğümlerini de doğru şekilde dikkate alıyor. Bu işlem, farklı kimliklere sahip düğümlere sahip grafiklerin artık eşit olarak değerlendirilmemesini sağlar (I401cb, b/311414915)

Sürüm 2.7.5

Sürüm 2.7.5

1 Kasım 2023

androidx.navigation:navigation-*:2.7.5 yayınlanır. 2.7.5 sürümü bu taahhütleri içerir.

Performans İyileştirmeleri

  • İki grafiğin karşılaştırılmasıyla ilgili performans (hem zaman hem de tahsis sayısı açısından) önemli ölçüde iyileştirildi. Bu, yeni grafiği mevcut grafikle dahili olarak karşılaştıran setGraph gibi çağrıların çok daha hızlı olduğu ve atlanan kare sayısının daha az olduğu anlamına gelir. Bu iyileştirmeye yol açan ayrıntılı analiz için Michał Z'ye teşekkür ederiz. (I6ad62)
  • NavHost artık güncellenmiş durumu okumak için ikinci geçişi beklemek yerine ilk kompozisyon geçişinde başlangıç hedefini oluşturacak. (I439a7, b/304852206)

Hata Düzeltmeleri

  • setGraph işlevini tam olarak aynı grafikle birden fazla kez çağırırsanız ve grafiğinizde iki hedefi birbirine bağlayan bir işlem varsa geri yığınınızın açılmasına neden olan sorun düzeltildi. (Ieaed7)
  • Hızlı bir şekilde gidilen ve kapatılan iletişim kutuları artık NavController.visibleEntries listesine eklenmeyecek. (I67586, b/287969970)
  • Bir giriş oluşturulduktan sonra yapılandırma değişikliği yapıldığında, saveState yanlışsa girişin ViewModel artık düzgün şekilde temizlenecek. (Idf242, b/298164648)
  • Yapılandırma değişikliğinden veya setGraph çağrısından önce arka yığın tamamen boşsa NavController'ün aynı derin bağlantıyı birden fazla kez işleyebildiği ve setGraph'a yalnızca gelen Intent'te FLAG_ACTIVITY_NEW_TASK işareti ayarlandığında çağrıldığı bir sorun düzeltildi. (I73c7f)

Bağımlılık Güncellemeleri

  • Parçalarla gezinme artık Fragment 1.6.2'yi kullanıyor. Bu sayede, clearBackStack çağrılırken iç içe yerleştirilmiş parçaların ViewModel örneklerinin temizlenmediği bir sorun düzeltildi.

2.7.4 sürümü

2.7.4 sürümü

4 Ekim 2023

androidx.navigation:navigation-*:2.7.4 yayınlanır. 2.7.4 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • popBackStack'te bulunan destek ile eşleşecek şekilde, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe geri dönmek için popUpTo'te bağımsız değişkenlerle rota kullanma desteği eklendi. (I731f4, b/299255572)

Hata Düzeltmeleri

  • popUpTo ile bir gezinmenin başka bir gezinmeyle kesintiye uğratılmasının FragmentNavigator'un kilitlenmesine neden olduğu sorun düzeltildi. (I3c848, b/301887045)
  • Sistem geri tuşuna basıldığında currentDestination'ün, görüntülenen Fragment ile eşleşecek şekilde doğru şekilde güncellenmemesine neden olan sorun düzeltildi. (Id0d6c, b/289877514)
  • DialogFragment yaşam döngüsü, üzerindeki iletişim kutusu kapatıldığında artık uygun şekilde RESUMED durumuna geçecektir. (I88f0d, b/301811387)

Sürüm 2.7.3

Sürüm 2.7.3

20 Eylül 2023

androidx.navigation:navigation-*:2.7.3 yayınlanır. 2.7.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Parçalarla gezinme özelliğinde, visibleEntries listesinin yanlış girişler içermesine neden olan bir sorun düzeltildi. (I5caa9, b/288520638)
  • Yüzen pencere hedefinin (ör.Dialogs, Bottomsheets vb.) hiçbir zaman RESUMED yaşam döngüsü geri çağırması almamasına neden olan bir sorun düzeltildi. (I3b866, b/287505132)

Sürüm 2.7.2

Sürüm 2.7.2

6 Eylül 2023

androidx.navigation:navigation-*:2.7.2 yayınlanır. 2.7.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme artık Yaşam Döngüsü 2.6.2'ne bağlıdır. Bu sayede, rememberSaveable ile Gezinme Oluşturma'nın NavHost arasındaki etkileşim düzeltilerek hedeflerin rememberSaveable durumu ve ViewModel'e ait tüm SavedStateHandle örnekleri, işlem sona erip yeniden oluşturulduktan sonra düzgün şekilde geri yüklenir. (b/298059596, b/289436035)
  • Gezinme Oluştur'da birden fazla iletişim kutusunun aynı anda gösterildiği durumlarda, kısmen gizlenen iletişim kutularının (ör. en üstteki iletişim kutusu değil) STARTED durumu yerine CREATED yaşam döngüsü durumunda olması sorunu düzeltildi. (aosp/2728520, b/289257213)
  • Gezinme Oluştur'da aynı anda birden fazla iletişim kutusu gösterilirken en üstteki iletişim kutusunun kapatılması durumunda, yeni en üstteki iletişim kutusunun RESUMED'e doğru şekilde geçmek yerine STARTED yaşam döngüsü durumunda takılmasına neden olan bir sorun düzeltildi. (aosp/2629401, b/286371387)
  • Navigation Safe Args, artık gerçekten yürütülmüyorsa görevini hevesle başlatmaz. (I0e385, b/260322841)

Bağımlılık Güncellemesi

  • Gezinme için Oluştur özelliği artık Oluştur 1.5.1 sürümünü gerektiriyor.

Sürüm 2.7.1

Sürüm 2.7.1

23 Ağustos 2023

androidx.navigation:navigation-*:2.7.1 yayınlanır. 2.7.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Oluştur özelliğiyle gezinirken Scaffold kullanıldığında Lifecycle.State.DESTROYED ViewModel öğesine erişmeye çalışırken hata alınmasına neden olan sorun düzeltildi. (I1dc11, b/268422136)

2.7.0 sürümü

2.7.0 sürümü

9 Ağustos 2023

androidx.navigation:navigation-*:2.7.0 yayınlanır. 2.7.0 sürümü bu taahhütleri içerir.

2.6.0 sürümünden beri yapılan önemli değişiklikler

Eşlik edenden animasyonlar

AnimatedContent artık kararlı olduğu için Eşlik Eden Gezinme Animasyonu'ndaki kodu Gezinme Oluşturma'ya geri taşıyabildik.

Bu, AnimatedNavHost'te bulunan özel geçişleri ayarlamayla ilgili tüm desteğin NavHost'te doğrudan desteklendiği anlamına gelir.

Accompanist gezinme animasyonunda başka bir değişiklik yapılmayacak ve yakında bu özelliğin desteği sonlandırılacak. Ayrıca, gezinme oluşturma özelliğine geri dönmeyle ilgili yol gösterici bilgiler de sağlanacak. Ancak bu, taşıma rehberinin tam tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha) zaten kullanıyorsanız başka API değişikliği gerekmeyecek. (b/197140101)

Hata Düzeltmeleri

  • Gezinme Oluşturma'daki NavHost, etkinlik DURDURULDuktan ve DEVAM ETTİRİLDİKTEN sonra bile sistem geri çağrılarını artık doğru şekilde durduruyor. (Icb6de, b/279118447)

Bağımlılık Güncellemeleri

  • Gezinme artık 1.1.0'ten itibaren 1.5.0 Oluştur'a bağlıdır.

Sürüm 2.7.0-rc01

26 Temmuz 2023

androidx.navigation:navigation-*:2.7.0-rc01 yayınlanır. 2.7.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NavHost kapsamında oluşturulan EnterTransition ve ExitTransition lambdalarının, NavHost bileşimden kaldırıldıktan sonra bile bellekte kalabilmesi sorunu düzeltildi. (I893d0)

Bilinen Sorunlar

  • Navigation 2.6.x'te, popUpTo ile gezinirken IllegalArgumentException'e neden olabilecek bir sorun vardır. Burada önerilen tavsiyeye benzer şekilde grafiğinizi yeniden yapılandırarak bu istisnayı önleyebilirsiniz. (b/287133013)

Sürüm 2.7.0-beta02

28 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta02 yayınlanır. 2.7.0-beta02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme Yazma, artık popUpTo seçeneğiyle gezinme özelliğini kullanan özel geçişler için doğru z-sırasını kullanıyor.(/Ib1c3a, b/285153947)

Sürüm 2.7.0-beta01

7 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta01 yayınlanır. 2.7.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme'deki Activity STOPPED ve RESUMED olduktan sonra bile NavHost, sistem geri çağrılarını artık doğru şekilde durduruyor. (Icb6de, b/279118447)

Sürüm 2.7.0-alpha01

24 Mayıs 2023

androidx.navigation:navigation-*:2.7.0-alpha01 yayınlanır. 2.7.0-alpha01 sürümü bu taahhütleri içerir.

Eşlik edenden animasyonlar

AnimatedContent artık kararlı olduğu için Eşlik Eden Gezinme Animasyonu'ndaki kodu Gezinme Oluşturma'ya geri taşıyabildik.

Bu, AnimatedNavHost'te bulunan özel geçişleri ayarlamayla ilgili tüm desteğin NavHost'te doğrudan desteklendiği anlamına gelir.

Accompanist gezinme animasyonunda başka bir değişiklik yapılmayacak ve yakında bu özelliğin desteği sonlandırılacak. Ayrıca, gezinme oluşturma özelliğine geri dönmeyle ilgili yol gösterici bilgiler de sağlanacak. Ancak bu, taşıma rehberinin tam tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha) zaten kullanıyorsanız başka API değişikliği gerekmeyecek. (b/197140101)

Hata Düzeltmeleri

  • Gezinme 2.6.0-rc02 bölümünde: Parçalarda gezinmeyle ilgili bir sorun düzeltildi. Bu sorunda, popUpTo ile gezinirken ve bir parçayı görünümünü yeniden oluşturmadan arka yığından çıkarırken sistem geri tuşunun çalışmaması sorunu yaşanıyordu. (Ieb8d4, b/281726455)

Bağımlılık Güncellemeleri

  • Gezinme artık Oluştur 1.5.0-beta01'a bağlıdır.

Sürüm 2.6.0

Sürüm 2.6.0

7 Haziran 2023

androidx.navigation:navigation-*:2.6.0 yayınlanır. 2.6.0 sürümü bu taahhütleri içerir.

2.5.0 sürümünden beri Gezinme'de yapılan önemli değişiklikler

  • NavBackStackEntry'nin arguments ve bir OnDestinationChangedListener'ye iletilen arguments artık yalnızca hedefe gittiğinizde oluşturulan değiştirilemez bağımsız değişkenlerin bir kopyasıdır. Bu, bu paketlerde yapılan değişikliklerin arguments veya diğer OnDestinationChangedListener örneklerine yapılan sonraki erişimlerde yansıtılmayacağı anlamına gelir.
  • NavDeepLink artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek yinelenen sorgu parametreleri desteklenebiliyor. NavType artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor.
  • NavType'ün özel alt sınıfları artık bir değeri dize olarak serileştirmek için serializeAsValue'ü geçersiz kılabilir. Bu sayede hem serileştirme hem de seri bozma (parseValue aracılığıyla) tamamen NavType sınıfında kapsanabilir. StringType artık belirli bir String üzerinde Uri.encode'ı çağırmak için bu yöntemi geçersiz kılıyor.

2.5.0 sürümünden bu yana Gezinme Oluşturma'da yapılan önemli değişiklikler

  • NavHost ile bir bileşeni önizlerken artık varsayılan olarak NavGraph'ın startDestination değeri gösterilir.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) artık kısmen veya tamamen doldurulmuş bağımsız değişkenleri olan tüm rotaları destekliyor. Bağımsız değişkenlerin, girişin bağımsız değişkenleriyle tam olarak eşleşmesi gerektiğini unutmayın.
  • navDeepLink Kotlin DSL'sini kullanarak boş bir NavDeepLink oluşturmaya çalışmak artık derin bağlantıların geçerli olması için bir uri, işlem ve/veya mimetype gerektiğini belirten bir lint uyarısıyla sonuçlanacaktır.

2.5.0 sürümünden bu yana, Fragment'lerle gezinme özelliğinde yapılan önemli değişiklikler

  • NavHostFragment artık sistem geri düğmesinin kendisini durdurmuyor. Bu, temel FragmentManager'ün sistem geri gönderme işlemini gerçekleştirmesine olanak tanır. Bu, 1.7.0-alpha01 ve sonraki sürümlerin Android U cihazlarda uygulama içi tahmini geri animasyonu sağlamasına olanak tanır.
  • Gezinme'yi Fragment ile kullanırken FragmentManager'un arka yığınına bir Fragment ekleyen FragmentTransaction işlemini manuel olarak yapmaya çalışmak artık bir IllegalArgumentException hatası oluşturur. Parçaları her zaman navigate() API üzerinden eklemeniz gerekir.
  • Bir gezinme XML dosyasının etkinlik öğesindeki app:data ve app:dataPattern özelliklerinde yer tutucu olarak tam ${applicationId} dizesi kullanıldığında, yer tutucu, şişirme işleminin ardından bağlamın packageName ile otomatik olarak doldurulur.
  • FragmentNavigator artık NavBackStackEntries'da gezinirken ve pop-up'ları açarken geçiş API'lerini kullanıyor. Bu, NavBackStackEntry Lifecycle'nin artık son Lifecycle.State'sini taşımadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.
  • DialogFragmentNavigator artık NavBackStackEntries'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu, NavBackStackEntry Lifecycle'nin artık DESTROYED'a taşınmadan önce DialogFragment Lifecycle'nin DESTROYED'a taşınmasını bekleyeceği anlamına gelir.
  • NavHostFragment artık NavController'u yalnızca onCreate()'den sonra değil, NavHostFragment FragmentManager'ye eklendikten hemen sonra da almanıza olanak tanır.
  • Gezinme'nin dinamik özellik modülleri için desteği artık ayrıntılı Play Feature Delivery kitaplığına bağlıdır.
  • Gezinme Güvenli Arg'leri artık Android Gradle Eklentisi 7.3.0 sürümüne bağlıdır. Bu, artık yalnızca 7.3.0 ve sonraki sürümlerle uyumlu olduğu anlamına gelir.

2.5.0 sürümünden bu yana NavigationUI'de yapılan önemli değişiklikler

  • Bir gezinme grafiğinin kimliği AppBarConfiguration'e aktarılırken (ör. Menu aracılığıyla), NavigationUI artık grafikteki her varış noktasını yanlış bir şekilde üst düzey varış noktası olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç varış noktasını üst düzey varış noktası olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmemiştir. Aynı işlev, AppBarConfiguration üzerindeki yeni isTopLevelDestination işlevi aracılığıyla kendi kodunuzda da kullanılabilir.
  • Üst uygulama çubuğuyla çalışmak için NavigationUI'daki setupWithNavController entegrasyonları artık android:label'inizde bulunan ReferenceType bağımsız değişkenleri için R.string değerlerini otomatik olarak oluşturulan kaynak tam sayı değerini döndürmek yerine dize değerlerine ayrıştıracak.
  • NavigationUI artık seçili bir MenuItem üzerinden gezinmediğinde günlükler sağlar.

Sürüm 2.6.0-rc02

24 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc02 yayınlanır. 2.6.0-rc02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • popUpTo ile gezinirken ve bir fragmanın görünümünü yeniden oluşturmadan arka yığıntan çıkarırken sistem geri tuşunun çalışmayı durdurmasına neden olan, Fragmanlarda gezinmeyle ilgili bir sorun düzeltildi. (Ieb8d4, b/281726455)

Sürüm 2.6.0-rc01

10 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc01 yayınlanır. 2.6.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • onResume() yaşam döngüsü geri çağırma işlevinde popUpTo ile gezinme aracılığıyla bir parçanın kaldırılmasının IllegalStateException'ye neden olduğu, parçalarla gezinme özelliğiyle ilgili bir sorun düzeltildi. (I21884, b/279644470)

Sürüm 2.6.0-beta01

19 Nisan 2023

androidx.navigation:navigation-*:2.6.0-beta01 yayınlanır. 2.6.0-beta01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavBackStackEntry artık özel toString uygulaması sunuyor. (Iff00b)

Hata Düzeltmeleri

  • Gezinme'yi Fragment ile kullanırken FragmentManager'un arka yığınına bir Fragment ekleyen FragmentTransaction işlemini manuel olarak yapmaya çalışmak artık bir IllegalArgumentException hatası oluşturur. Parçaları her zaman navigate() API üzerinden eklemeniz gerekir. (I6d38e)
  • Bir giriş ekleyen bir navigate ve aynı karede bu girişi kaldıran bir popBackStack olduğunda, arka yığınta ortaya çıkan en üst giriş artık tutarlı bir şekilde RESUMED Lifecycle.State'e geri döner. (Id8067, b/276495952)

Sürüm 2.6.0-alpha09

5 Nisan 2023

androidx.navigation:navigation-*:2.6.0-alpha09 yayınlanır. 2.6.0-alpha09 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Geçersiz rota kontrolleri düzeltildi. Bu doğrultuda, bir NavDestination boş olmayan NavArgument içeriyorsa bu hedefin rotası, boş olmayan NavArgument ile aynı adlı bağımsız değişkenler için yer tutucular içermelidir. (Ic62bf, b/274697949)
  • Gezinme işleminde, Action/MimeType ile eşleşen NavDestination tarafından zorunlu tutulan ve boş olmayan bir NavArgument eksikse Action/MimeType tabanlı derin bağlantı gezinmeleri artık başarısız olur. (Ibfa17, b/271777424)
  • NavController, önceki grafikle aynı rotaya ve hedeflere sahip bir grafik ayarlarken artık mevcut grafik düğümlerini ve arka yığın hedeflerini yeni örneklerle düzgün bir şekilde değiştiriyor. Bu, gezinme oluşturma özelliğinde durumu kaydetmeden onLaunchSingleTop kullanıldığında oluşan kilitlenmeyi düzeltir. Bu, kök grafik derlemeleriyle ilişkili hedeflere gidilirken ve yanlış geri yığın oluşturulurken ortaya çıkan hatayı da düzeltir. (I5bc58, b/275258161, b/275407804)

Sürüm 2.6.0-alpha08

22 Mart 2023

androidx.navigation:navigation-*:2.6.0-alpha08 yayınlanır. 2.6.0-alpha08 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavHostFragment artık NavController'u yalnızca onCreate()'den sonra değil, NavHostFragment FragmentManager'ye eklendikten hemen sonra da almanıza olanak tanır. (Ic6382, b/220186282)

Hata Düzeltmeleri

  • Boş olmayan bir bağımsız değişken içeren iç içe yerleştirilmiş bir grafiği açarken ortaya çıkan NullPointerException sorunu düzeltildi. (6b3581, b/249988437)
  • popUpTo ile gezinme yaptıktan sonra sistem geri tuşunu kullandığınızda NavController durumunun doğru girişe gelmesini sağlayabilirsiniz. (I3a8ec, b/270447657)
  • FragmentNavigator artık geri yığını sistem geri veya popBackStack() aracılığıyla açtığında ve işlem, parça için efekt kullanıp kullanmadığında girişleri düzgün şekilde açıyor. (I81bdf)
  • Gezinme menüsünü kullanmadan FragmentNavigator'a FragmentManager fragman eklemek artık kilitlenmeye neden olmayacak. (b17204, b/274167493)

Bağımlılık Güncellemeleri

Sürüm 2.6.0-alpha07

8 Mart 2023

androidx.navigation:navigation-*:2.6.0-alpha07 yayınlanır. 2.6.0-alpha07 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Rota alan getBackStackEntry, popBackStack, clearBackStack API varyantları artık null değer alabilecek bağımsız değişkenler ve null değer alabilecek sorgu parametreleri içeren rota kalıplarını kabul ediyor (I22294, b/269302500)
  • NavController içinden clearBackStack() çağrıldığında, temizlenen geri yığınıyla ilişkili parça yöneticisinde kayıtlı durumun temizlenmemesi sorunu düzeltildi. (Ic1cce, b/271190202)
  • Sekmeler arasında Sistem geri tuşunu kullanırken BottomNavigationView içindeki yanlış MenuItem öğesinin vurgulanmasına neden olan 2.6.0-alpha06 sürümündeki bir gerileme düzeltildi. (I634f6, b/270447657)
  • 2.6.0-alpha06 sürümünde, Animation'ler kullanılırken NavBackStackEntry'lerin DEVAM EDİLDİ durumuna taşınmamasına neden olan gerileme düzeltildi. (Ib3589, b/269646882)

Sürüm 2.6.0-alpha06

22 Şubat 2023

androidx.navigation:navigation-*:2.6.0-alpha06 yayınlanır. 2.6.0-alpha06 sürümü bu taahhütleri içerir.

Yeni özellikler

  • NavHost ile bir bileşeni önizlerken artık varsayılan olarak NavGraph'ın startDestination değeri gösterilir. (I2b89f)

API Değişiklikleri

  • Tüm NavController navigate aşırı yüklemeleri artık ana iş parçacığında çağrılmalarını sağlamak için @MainThread ile ek açıklamaya sahiptir. (I2c0b0, b/263427111)

Hata Düzeltmeleri

  • Dinamik Parça Gezinme kullanılırken gezinmeye çalışırken kilitlenme sorunu düzeltildi. (I3ee29, b/268360479)
  • Sistem geri düğmesi aracılığıyla başka bir parçaya gidildiğinde alt çubuğun, seçilen doğru öğeyle güncellenmemesi hatası düzeltildi (If559f, b/269044426)

Bilinen Sorunlar

  • Gezinme, Fragment ile kullanıldığında Animation API'leri kullanılırken NavBackStackEntry'nin yaşam döngüsü RESUMED'e ulaşamıyor. (b/269646882)
  • Parçalarla gezinme kullanılırken ve BottomNavigation ile gezinirken birden fazla giriş içeren bir geri yığınını geri yüklemeye çalışırsanız BottomMenuItem doğru şekilde güncellenmez. (b/270447657)
  • Gezinme, parçalarla birlikte kullanıldığında, durum geri yüklendikten sonra NavBackStackEntry Lifecycle, parçası DESTROYED olduğunda DESTROYED değerini almaz . (b/270610768)

Sürüm 2.6.0-alpha05

8 Şubat 2023

androidx.navigation:navigation-*:2.6.0-alpha05 yayınlanır. 2.6.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) artık kısmen veya tamamen doldurulmuş bağımsız değişkenleri olan tüm rotaları destekliyor. Bağımsız değişkenlerin, girişin bağımsız değişkenleriyle tam olarak eşleşmesi gerektiğini unutmayın. (Iebd28, Ic678c, I3b37b, b/257514373)
  • FragmentNavigator artık NavBackStackEntries'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu, NavBackStackEntry Lifecycle'nin artık son Lifecycle.State'sini taşımadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir. (I3cb19, b/238686802)
  • DialogFragmentNavigator artık NavBackStackEntries'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu, NavBackStackEntry Lifecycle'nin artık DESTROYED'a taşınmadan önce DialogFragment Lifecycle'nin DESTROYED'a taşınmasını bekleyeceği anlamına gelir. (I53ee5, b/261213893)

API Değişiklikleri

  • NavigatorState artık Navigator'lerin NavBackStackEntries'ı ara Lifecycle.State'lere taşımasına izin vermek için prepareForTransition API'yi sağlıyor. (I42c21, b/238686802)
  • Artık NavGraphNavigator veya ComposeNavigator ile ilişkili arka yığına backstack mülkü aracılığıyla erişebilirsiniz. ComposeNavigator artık bir gezinme veya popBackStack işlemini yürüten NavBackStackEntry öğesini tamamlandı olarak işaretlemek için onTransitionComplete() geri çağırma işlevini de gösterir. (I02062, I718db, b/257519195)

Hata Düzeltmeleri

  • push/popWithTransition API'leri kullanılırken ve giriş zaten işlenirken Gezgin durumu artık hiçbir işlem yapmaz. (Iadbfa, b/261213893)
  • launchSingleTop, iç içe yerleştirilmiş bir NavGraph ile kullanıldığında, orijinal hedeften startDestination'ye kadar olan tüm hedefler yalnızca arka yığının üst kısmına düzgün şekilde eklenir. (Id4bea, b/253256629)
  • Gezinme, launchSingleTop işareti doğru olarak ayarlanmışken aynı hedefe giderken DialogFragment örneğini artık düzgün bir şekilde değiştirecek. (I45b5a, b/149572817)
  • Gezinme SafeArgs, tam olarak 19 karakter uzunluğunda bağımsız değişkenler kullanıldığında artık derleme hatasına neden olmaz. (Id60bc, b/257110095)

Sürüm 2.6.0-alpha04

9 Kasım 2022

androidx.navigation:navigation-*:2.6.0-alpha04 yayınlanır. 2.6.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavType'ün özel alt sınıfları artık bir değeri dize olarak serileştirmek için serializeAsValue'ü geçersiz kılabilir. Bu sayede hem serileştirme hem de seri bozma (parseValue aracılığıyla) tamamen NavType sınıfında kapsanabilir. StringType artık belirli bir String üzerinde Uri.encode'ı çağırmak için bu yöntemi geçersiz kılıyor. (Ie5213, b/247637434)
  • NavigationUI artık seçili bir MenuItem üzerinden gezinmediğinde günlükler sağlar. (I2af5a, b/247730357)

Hata Düzeltmeleri

  • Gezinme derin bağlantıları artık grafik başlatılırken değil, yavaşça ayrıştırılır. Bu da uygulamanın başlangıçtaki performansını artırabilir. (Iab0ab)
  • Varsayılan bağımsız değişkenleri boş olan bir hedefe derin bağlantı oluşturduktan sonra yukarı gezinme nedeniyle oluşan kilitlenme düzeltildi. (I51c24, b/243183636)

Bağımlılık Güncellemesi

  • Gezinme'nin dinamik özellik modülleri için desteği artık ayrıntılı Play Feature Delivery kitaplığına bağlıdır. (Ib4ddc)
  • Gezinme Güvenli Arg'leri artık Android Gradle Eklentisi 7.3.0 sürümüne bağlıdır. Bu nedenle, artık yalnızca 7.3.0 ve sonraki sürümlerle uyumludur. (I47e49)

Sürüm 2.6.0-alpha03

24 Ekim 2022

androidx.navigation:navigation-*:2.6.0-alpha03 yayınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme 2.5.3 tarihinden itibaren: Crossfade'nin oluşturabileceği bir hedef olmadığında NavHost artık NoSuchElementException'e neden olmayacak. Artık kompozisyon atlanır. (Ieb46e, b/253299416)
  • Gezinme 2.5.3 bölümünde: Bir hedef arka yığıntan çıkarıldığında kaydedilen Oluştur durumunun (ör. rememberSaveable kullanımları) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)

Bağımlılık Güncellemeleri

Sürüm 2.6.0-alpha02

5 Ekim 2022

androidx.navigation:navigation-*:2.6.0-alpha02 yayınlanır. 2.6.0-alpha02 sürümü bu taahhütleri içerir.

Davranış Değişiklikleri

  • Bir gezinme grafiğinin kimliği AppBarConfiguration'e aktarılırken (ör. Menu aracılığıyla), NavigationUI artık grafikteki her varış noktasını yanlış bir şekilde üst düzey varış noktası olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç varış noktasını üst düzey varış noktası olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmemiştir. Aynı işlev, AppBarConfiguration üzerindeki yeni isTopLevelDestination işlevi aracılığıyla kendi kodunuzda da kullanılabilir. (Ie936e, b/238496771)

Hata Düzeltmeleri

  • navigation:navigation-fragment bileşeni artık 1.5.2 parça sürümüne bağlıdır. (I00ba4)
  • Seçilen menü öğesi, iletişim kutusu gibi bir FloatingWindow hedefine gidildiğinde artık güncellenmez. (I4cde8, b/240308330)

Sürüm 2.6.0-alpha01

7 Eylül 2022

androidx.navigation:navigation-*:2.6.0-alpha01 yayınlanır. 2.6.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Üst uygulama çubuğuyla çalışmak için NavigationUI'daki setupWithNavController entegrasyonları artık android:label'inizde bulunan ReferenceType bağımsız değişkenleri için R.string değerlerini otomatik olarak oluşturulan kaynak tam sayı değerini döndürmek yerine dize değerlerine ayrıştıracak. (I5f803, b/167959935)
  • NavDeepLink artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek yinelenen sorgu parametreleri desteklenebiliyor. NavType artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor. (Id68c3, b/209977108)
  • Bir gezinme XML dosyasının etkinlik öğesindeki app:data ve app:dataPattern özelliklerinde yer tutucu olarak tam ${applicationId} dizesi kullanıldığında, yer tutucu, şişirme işleminin ardından bağlamın packageName ile otomatik olarak doldurulur. (Iaabde, b/234223561)
  • navDeepLink Kotlin DSL'sini kullanarak boş bir NavDeepLink oluşturmaya çalışmak artık derin bağlantıların geçerli olması için bir uri, işlem ve/veya mimetype gerektiğini belirten bir lint uyarısıyla sonuçlanacaktır. (I08d2f, b/154038883)

API Değişiklikleri

  • android:label="{arg}" biçimindeki bağımsız değişkenleri içeren dinamik etiketleri dize olarak ayrıştırmak için yeni bir NavDestination uzantı işlevi eklendi. R.string değerlerini dize değerlerine ayırarak ReferenceType bağımsız değişkenlerini destekler. (I07d89, b/236269380)

Davranış Değişiklikleri

  • NavBackStackEntry'nin arguments ve bir OnDestinationChangedListener'a iletilen arguments artık yalnızca hedefe gittiğinizde oluşturulan, değiştirilemeyen bağımsız değişkenlerin bir kopyasıdır. Bu, bu paketlerde yapılan değişikliklerin arguments veya diğer OnDestinationChangedListener örneklerine yapılan sonraki erişimlerde yansıtılmayacağı anlamına gelir. (I676f5)

Hata Düzeltmeleri

  • Gezinme 2.5.2 bölümünde: Dinamik Gezinme artık diğer modüllerdeki etkinlik hedeflerine gitmeden önce bunları düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838)
  • Gezinme 2.5.2: Gezinme, aynı hedefe giderken ve launchSingleTop işaretini doğru olarak ayarlarken artık Fragment örneğini düzgün bir şekilde değiştirecek. (I5a2f1, b/237374580)
  • Gezinme 2.5.2 bölümünde: Yeni bir pop-up başlangıç hedefiyle üst öğeyi paylaşan çift iç içe yerleştirilmiş bir grafiğe gidildiğinde oluşan IllegalStateException hatası düzeltildi. (I9f7cb, b/243778589)

Sürüm 2.5

Sürüm 2.5.3

24 Ekim 2022

androidx.navigation:navigation-*:2.5.3 yayınlanır. 2.5.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Crossfade'nin oluşturabileceği bir hedef olmadığında NavHost artık NoSuchElementException'ye neden olmaz. Artık kompozisyon atlanır. (Ieb46e, b/253299416)
  • Bir hedef arka yığıntan çıkarıldığında, kaydedilen Oluştur durumunun (ör. rememberSaveable kullanımları) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)

Sürüm 2.5.2

7 Eylül 2022

androidx.navigation:navigation-*:2.5.2 yayınlanır. 2.5.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Dinamik Gezinme artık diğer modüllerdeki etkinlik hedeflerine gitmeden önce bunları düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838)
  • Gezinme, aynı hedefe giderken ve launchSingleTop işaretini doğru olarak ayarlayarak artık Fragment örneğini düzgün bir şekilde değiştirecek. (I5a2f1, b/237374580)
  • Yeni bir pop-up başlangıç hedefiyle üst öğeyi paylaşan çift iç içe yerleştirilmiş bir grafiğe gidildiğinde ortaya çıkan IllegalStateException sorunu düzeltildi. (I9f7cb, b/243778589)

Bağımlılık Güncellemesi

Sürüm 2.5.1

27 Temmuz 2022

androidx.navigation:navigation-*:2.5.1 yayınlanır. 2.5.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Navigation Safe Args, Bundle içine kaydedilen özel bağımsız değişken türleri kullanıldığında artık oluşturulan sınıflarda desteği sonlandırılma uyarılarına neden olmayacak. (Id86ed, b/237725966)

Bağımlılık Güncellemeleri

2.5.0 sürümü

29 Haziran 2022

androidx.navigation:navigation-*:2.5.0 yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.

2.4.0 sürümünden beri yapılan önemli değişiklikler

  • CreationExtras Entegrasyonu: Navigation artık Lifecycle 2.5.0'in CreationExtras özelliği aracılığıyla durum bilgisi olmayan bir ViewModelProvider.Factory sağlayabilir.

Gezinme SafeArgs

  • Navigation Safe Args, Android Gradle Plugin bağımlılığını 7.0.4'ye dayalı olacak şekilde yükseltti ve 7.0'den önceki AGP sürümleriyle uyumluluğu sonlandırdı.
  • applicationId yerine build.gradle ad alanı özelliğinin kullanılması için destek eklendi.

Diğer Değişiklikler

  • visibleEntries API artık deneysel değildir ve hedefi NavController'a göre şu anda görünür olan tüm girişleri almak için bir işlev sağlar.

Sürüm 2.5.0-rc02

15 Haziran 2022

androidx.navigation:navigation-*:2.5.0-rc02 yayınlanır. 2.5.0-rc02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme Oluştur NavHost kullanılırken alt hedefler arasında hızlı geçiş yapılmasından kaynaklanan kilitlenme düzeltildi. (I3979a, b/234054916)
  • Navigation SafeArgs, applicationId içermeyen bir applicationIdSuffix ve ad alanı kullanıldığında veya applicationId ile ad alanı farklı olduğunda artık kilitlenmeyecek. (I754b1, b/233119646)
  • NavArgument artık bağımsız değişkenin dahili değerlerini gösteren özel bir toString() işlevine sahiptir. (I900a8)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.navigation:navigation-*:2.5.0-rc01 yayınlanır. 2.5.0-rc01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • navigation.xml dosyanızda <deeplink> öğelerinin <activity> öğelerinin içine yerleştirilmesine karşı uyarıda bulunmak için yeni bir lint kuralı eklendi.(Ic15a5, b/178403185)

Hata Düzeltmeleri

  • NavHost ve DialogHost içindeki derlenebilir kapsamlar artık beklenen sırada kaldırılıyor. Yani iç derlenebilirler, dış derlenebilirlerden önce kaldırılıyor. (I157e6)
  • Navigasyon SafeArgs, önbelleğin taşınabilir olmasına izin vermek için artık ArgumentsGenerationTask içinde PathSensitivity.RELATIVE kullanır. Bu, önbelleğe alınmış girişin artık CI derlemesinden yerel derlemeye yeniden kullanılabileceği anlamına gelir. (I5f67c, b/173420454)
  • UnrememberedGetBackStackEntryDetector lint kuralı, getBackStackEntry() çağrısını çevreleyen remember çağrısının anahtar olarak bir NavBackStackEntry nesnesi de iletmesini sağlamak için güncellendi.(Ib7081, b/227382831)

Sürüm 2.5.0-beta01

20 Nisan 2022

androidx.navigation:navigation-*:2.5.0-beta01 yayınlanır. 2.5.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • DialogNavigator artık dismiss() çağrısı yaparken popWithTransition kullanıyor. Bu, dialog içinde ViewModel kullanıldığında ortaya çıkan ve sistem geri tuşunu kullanarak veya iletişim kutusunun dışına dokunarak çıkmak için iletişim kutusunu kapatırken IllegalStateException'ye neden olan bir yarış durumunu düzeltir. (Id7376, b/226552301)

Bağımlılık Güncellemeleri

  • Gezinme artık yaşam döngüsüne 2.5.0-beta01 bağlıdır. Bu sayede, birden fazla geri yığın kullanılırken birincil olmayan bir alt gezinme sekmesinde bir NavHost'yi başka bir NavHost içine yerleştirirken IllegalStateException düzeltilir.

Sürüm 2.5.0-alpha04

6 Nisan 2022

androidx.navigation:navigation-*:2.5.0-alpha04 yayınlanır. 2.5.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • NavHost, hangi girişlerin oluşturulacağını belirlemek için artık NavController öğesindeki visibleEntries öğesine bağlıdır. Bu, iç içe yerleştirilmiş NavHost kullanılırken iç NavHost'ün artık düzgün bir şekilde kaybolacağı anlamına gelir. (I4ba2b, b/225394514)
  • NavController tarafından sağlanan visibleEntries StateFlow, artık mevcut yaşam döngüsü durumu yerine girişin maksimum yaşam döngüsü durumunu temel alıyor. Bu, navController öğesinin ana makine yaşam döngüsü BAŞLATILDI'nın altına düşse bile görünür girişlerin listesinin aynı kalacağı anlamına gelir. (I9e2a8, b/225394514)
  • SavedStateViewFactory artık SavedStateRegistryOwner ile başlatılmış olsa bile CreationExtras kullanımını destekliyor. Ek bilgiler sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
  • NavDeepLink artık değer içermeyen tek bir sorgu parametresi içeren Uri'leri ayrıştırabilir. (I0efe8, b/148905489)
  • Boş dize artık derin bağlantılarda geçerli bağımsız değişken olarak kabul edilir. (I70a0d, b/217399862)
  • Navigation Safe Args, ad alanları kullanılırken ve AndroidManifest.xml mevcut değilken artık kilitlenmeyecek. (I17ccf, b/227229815)

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha03 yayınlanır. 2.5.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Artık ViewModel oluşturmak için CreationExtras değerini by navGraphViewModels'a iletebilirsiniz. (I29217, b/217618359)

Hata Düzeltmeleri

  • NavDeepLinks artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060)
  • CreationExtras, ViewModel oluşturmak için NavBackStackEntries ile birlikte kullanıldığında artık düzgün şekilde çalışacaktır. (I69161, b/217617710)
  • Gezinme Güvenli Arg'leri artık AndroidManifest'teki paket yerine build.gradle içinde tanımlanan ad alanını kullanmayı destekliyor. (I659ef, b/217414933)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha02 yayınlanır. 2.5.0-alpha02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme 2.4.1 bölümünden: Görüntü bağlama özelliği, iç içe yerleştirilmiş grafiklerle kullanıldığında NavHostFragment artık OnBackPressedDispatcher değerini doğru şekilde ayarlar. (Ifbb51, b/214577959)
  • Gezinme 2.4.1 bölümünde: Birden fazla iç içe yerleştirilmiş NavGraph aracılığıyla derin bağlantı oluşturulduğunda, geri yığın artık ara başlangıç hedeflerini düzgün şekilde içerecek. (I504c0, b/214383060)

Sürüm 2.5.0-alpha01

26 Ocak 2022

androidx.navigation:navigation-*:2.5.0-alpha01 yayınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Bir Fragment'in onCreate() öğesinden by navGraphViewModels() aracılığıyla oluşturulan bir ViewModel öğesine erişilirken IllegalStateException hatası alınmasına neden olan sorun düzeltildi. (I8a14d)
  • NavDeepLinks artık args'in kodunu gereksiz yere iki kez çözmeyecek. Bu, artık doğru args'lerin nihai hedefinize iletildiği anlamına geliyor. (I31b0a, b/210711399)

Safe Args

  • Güvenli Arg'ler artık Android Gradle Eklentisi 7.0.4 sürümüne bağlıdır. Bu, Gezinme Güvenli Arg'lerinin artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı ancak Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)

Sürüm 2.4.2

Sürüm 2.4.2

6 Nisan 2022

androidx.navigation:navigation-*:2.4.2 yayınlanır. 2.4.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Sürüm 2.4.1

Sürüm 2.4.1

9 Şubat 2022

androidx.navigation:navigation-*:2.4.1 yayınlanır. 2.4.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Görüntü bağlama özelliği, iç içe yerleştirilmiş grafiklerle kullanıldığında NavHostFragment artık OnBackPressedDispatcher değerini doğru şekilde ayarlar. (Ifbb51, b/214577959)
  • Birden fazla iç içe yerleştirilmiş NavGraph üzerinden derin bağlantı oluşturulurken arka yığın artık ara başlangıç hedeflerini düzgün şekilde içerecek. (I504c0, b/214383060)
  • Gezinme 2.5.0-alpha01'den geri bağlandı: Bir Fragment'in onCreate() bölümünden by navGraphViewModels() aracılığıyla oluşturulan bir ViewModel'e erişilirken IllegalStateException hatası alınmasıyla ilgili sorun düzeltildi. (I8a14d)
  • Gezinme 2.5.0-alpha01'den geri bağlandı: NavDeepLink artık gereksiz yere bağımsız değişkenleri iki kez kod çözmüyor. Bu, düzgün şekilde kod çözülmüş bağımsız değişkenlerin artık nihai hedefinize iletildiği anlamına geliyor. (I31b0a, b/210711399)
  • Navigasyon 2.5.0-alpha01'dan geriye bağlandı: Güvenli Arg'ler artık Android Gradle Eklentisi 7.0.4 sürümüne bağlıdır. Bu, Gezinme Güvenli Arg'lerinin artık 7.0 öncesi Android Studio sürümleriyle uyumlu olmayacağı ancak Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)

Sürüm 2.4.0

Sürüm 2.4.0

26 Ocak 2022

androidx.navigation:navigation-*:2.4.0 yayınlanır. 2.4.0 sürümü bu taahhütleri içerir.

2.3.0 sürümünden beri yapılan önemli değişiklikler

  • Tüm gezinme yapıları Kotlin'de yeniden yazılmıştır. Bu sayede, genel sınıfların (NavType alt sınıfları gibi) boşluk kabul etme özelliği iyileştirildi. -ktx yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı. -ktx yapıları yayınlanmaya devam eder ancak tamamen boştur.
  • navigation-fragment yapıları artık yeni AbstractListDetailFragment aracılığıyla iki bölmeli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu fragmanda, bir liste bölmesini (alt sınıfınızın sağladığı) yönetmek için bir SlidingPaneLayout ve örnek uygulamamızda görüldüğü gibi uygulama olarak bir NavHostFragment kullanan bir ayrıntı bölmesi kullanılır.
  • NavController üzerindeki currentBackStackEntryAsFlow() yöntemi, mevcut NavBackStackEntry değiştiğinde yayınlanan bir Flow sağlar. Bu akış, OnDestinationChangedListener'ü manuel olarak yönetmenin alternatifi olarak kullanılabilir.
  • NavController artık deneysel visibleEntries mülkü aracılığıyla tüm görünür NavBackStackEntry örneklerinin listesini StateFlow olarak alma olanağı sunar.
  • Artık özel NavTypes oluşturmak için NavType sınıfını genişletebilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL aracılığıyla) desteklenir.
  • Gezinme artık özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek findStartDestination() ve getHierarchy() API'leri sağlıyor. findStartDestination(), NavGraph'daki bir uzantı işlevidir. startDestination kendisi iç içe yerleştirilmiş bir NavGraph olsa bile grafiğe gittiğinizde gösterilecek gerçek başlangıç hedefini bulur. getHierarchy(), NavDestination üzerinde belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen bir işlevdir.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView alan NavigationUI yöntemleri, 1.4.0 materyalinde tanıtılan NavigationBarView üst sınıfını alacak şekilde güncellendi. Bu sayede bu yöntemler NavigationRailView ile kullanılabilir.

  • Bir <action> öğesi XML aracılığıyla şişirilirken animasyon özellikleri, app:enterAnim="?attr/transitionEnter" söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir.

  • Güvenli bağımsız değişkenler artık her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturur. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    

Gezinme Rotaları ve Kotlin DSL

Gezinme'nin önceki sürümlerinde, her hedefin sabit bir tam sayı kimliğine sahip olması gerekirdi. Bu kimlik, hedefi kardeş hedeflerden benzersiz şekilde tanımlar ve doğrudan veya bir işlem aracılığıyla bu hedefe navigate() yapmanıza olanak tanır. Bu yöntem, özellikle gezinme grafiğinizi XML'de tanımladığınız ve otomatik olarak oluşturulan R.id sabitlerini veya Safe Args'i (derleme sırasında kod oluşturmak için bu sabitleri kullanır) kullanabileceğiniz durumlarda geçerli ve yararlı olmaya devam etmektedir. Ancak bu benzersiz tam sayı sistemi, Navigation Kotlin DSL aracılığıyla çalışma zamanında programatik olarak oluşturulan tamamen dinamik grafikleri desteklemek için gereken anlamsal anlamı ve ifade gücünü yakalamamıştır.

Bu sürümde, bir navigasyon grafiğindeki hedefi rotasına göre benzersiz şekilde tanımlamak için yeni bir seçenek kullanıma sunulmuştur. Rota, bir hedefe giden benzersiz yolu tanımlayan bir String öğesidir. Hedef kimliği alan tüm Kotlin DSL yöntemlerinin desteği sonlandırıldı ve bu yöntemler, rota alan eşdeğer bir API ile değiştirildi.

Her rota, ilgili hedefi tanımlayan bir Uri öğesinin "path" kısmı olarak değerlendirilmelidir. Örneğin: home, profile/{userId}, profile/{userId}/friends vb. Bir hedefin kimliği belirli bir içerikle ilişkilendirildiğinde bu dinamik bağımsız değişkenler, örtülü derin bağlantılar ile aynı kurallara uyarak rotanın bir parçası olmalıdır.

Daha önce yalnızca kimlik alan tüm NavController API'lerinin artık bir rota String alan aşırı yükleme işlevi vardır. Buna navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.

Bu durum API'ler açısından bazı sonuçlara yol açmıştır:

  • Kotlin DSL'deki popUpTo Kotlin özelliğinin desteği sonlandırıldı ve popUpToId özelliğinin desteğine geçildi.
  • getStartDestination() API'si, getStartDestinationId() API'si lehine kullanımdan kaldırıldı.

Kimliğe göre gezinmenin aksine, rotaya göre gezinme, örtülü derin bağlantılar ile aynı kuralları izler. Bu sayede, herhangi bir iç içe yerleştirilmiş grafikteki herhangi bir hedefe doğrudan gidebilirsiniz. Böylece, her hedefe harici olarak görünür bir derin bağlantı eklemeden bu rotaların çok modüllü projelerde kullanılabilmesini sağlayabilirsiniz.

Gezinme Oluştur

navigation-compose yapı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.

Bu sürümde şunlar sağlanır:

  • composable ve dialog hedeflerini kullanarak navigasyon grafiğinizi Kotlin DSL üzerinden oluşturmanıza olanak tanıyan bir NavHost bileşeni ve Refakatçi Navigasyon Materyali'ndekiler gibi isteğe bağlı Gezginler için destek.
  • Hedefler arasında geçiş için zorunlu destek. Eşlik Eden Gezinme Animasyonu, deneysel Oluşturma API'lerini kullanarak giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
  • Her bir derlenebilir hedef için Lifecycle kapsamı. Her hedef yalnızca giriş geçişleri sona erdiğinde RESUMED durumuna ulaşır ve çıkış geçişleri başladığında hemen STARTED durumuna düşer. Böylece, yalnızca Lifecycle RESUMED olduğunda bir navigate çağrısı tetikleyerek tüm IllegalStateException ve çoklu dokunma sorunlarını önleyebilirsiniz.
  • ViewModel kapsamı (hedef düzeyde Lifecycle ViewModel Compose 2.4.0'in viewModel() API'si veya Hilt Navigation Compose 1.0.0'in hiltViewModel() aracılığıyla) yapılandırma değişikliklerinden etkilenmeyen ve arka yığınta bulunan (Composable içeriğiniz başka bir şekilde kaldırıldığında) bir kapsam sağlar ve ViewModel'in onCleared() bölümünde, bu NavBackStackEntry ile ilişkili durumun kalıcı olarak kaldırıldığını ve temizlendiğini belirten bir sinyal gönderir.
  • rememberSaveable durumunun hedef düzeyinde kapsamı, bir hedefe geri döndüğünüzde tüm derlenebilir durumun otomatik olarak kaydedilip geri yüklenmesini sağlar.
  • İşlem sona erdikten ve yeniden oluşturulduktan sonra NavController ve hedefinin durumunu kaydetme ve geri yükleme için tam destek.
  • Sistem geri düğmesiyle otomatik entegrasyon.
  • Parametreleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere bir sonuç döndürme desteği.

  • Yükseltme durumuna izin vermek ve NavControllerNavHost dışındaki bileşenlere (alt gezinme çubuğu gibi) bağlamak için rememberNavController() ve currentBackStackEntryAsState()'te belirli yardımcılar oluşturun.

val navController = rememberNavController()
Scaffold { innerPadding ->
    NavHost(navController, "home", Modifier.padding(innerPadding)) {
        composable("home") {
            // This content fills the area provided to the NavHost
            HomeScreen()
        }
        dialog("detail_dialog") {
            // This content will be automatically added to a Dialog() composable
            // and appear above the HomeScreen or other composable destinations
            DetailDialogContent()
        }
    }
}

Daha fazla bilgi için Gezinme oluşturma kılavuzuna bakın.

Birden fazla geri yığın

NavController, hedeflerin arka yığınını yönetmekten, navigate() yaptığınızda hedefleri arka yığına eklemekten ve popBackStack() çağırdığınızda veya sistem geri düğmesini tetiklediğinizde hedefleri kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'indeki <action> öğeleriyle entegrasyon, geri yığınının kaydedilmesini ve geri yüklenmesini desteklemek için genişletildi.

Bu değişiklik kapsamında, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController()'in NavigationUI yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükler. Böylece, herhangi bir kod değişikliği yapmadan birden fazla geri yığın desteği sağlanır. Navigasyon'u Fragment'lerle kullanırken birden fazla arka yığınla entegrasyon için önerilen yöntem budur.

Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler çeşitli platformlar üzerinden sunulur:

  • Gezinme XML'inde <action> öğesi artık app:popUpTo aracılığıyla açılan tüm hedeflerin durumunu kaydetmek ve app:destination olarak iletilen hedefle ilişkili durumu geri yüklemek için app:popUpToSaveState ve app:restoreState'nin doğru/yanlış özelliklerini kullanabilir:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL'de popUpTo oluşturucuya restoreState boole özelliğini ve saveState boole özelliğini ekleyebilirsiniz:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • NavOptions.Builder aracılığıyla manuel olarak bir NavOptions nesnesi oluştururken setRestoreState() ve setPopUpTo() için yeni aşırı yükleme yöntemini kullanarak ek bir saveState parametresi alabilirsiniz.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() için programatik çağrılar artık ek bir saveState parametresi içerebilir.

  • popBackStack() veya popUpToSaveState ile kaydedilen tüm durumları temizlemek için clearBackStack() yöntemini kullanabilirsiniz.

Her durumda NavController, gezinme hedefi kapsamlı ViewModel örnekleri dahil olmak üzere her NavBackStackEntry örneğinin durumunu kaydedip geri yükler. Navigator API'leri, her Navigator'ın kendi durumunu kaydetme ve geri yükleme özelliğini desteklemesi için güncellendi.

Davranış değişiklikleri

  • NavDeepLinkBuilder artık createPendingIntent() tarafından döndürülen PendingIntent değerine PendingIntent.FLAG_IMMUTABLE değerini ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlıyor.
  • Navigasyon artık Lifecycle 2.3.1'e bağlıdır ve NavBackStackEntry Lifecycle öğesini güncelleyen yöntemleri (setGraph(), popBackStack(), navigateUp() ve navigate()) @MainThread olarak işaretleyerek Navigasyon'u Lifecycle 2.3.0'de kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirir.
  • Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar) Uri içinde bulunduğunu doğrular.
  • NavDeepLink ayrıştırılmış bağımsız değişkenler artık soru işaretleriyle aynı şekilde, yol segmentleri arasında ayırıcı olarak pound işaretlerini dikkate alır. Bu sayede, bağımsız değişkenin pound işaretine sığması önlenir.
  • Safe Args'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değeri olmayan bağımsız değişkenleri parametre olarak varsayılan değeri olan bağımsız değişkenlerden önce yerleştiriyor.
  • Safe Args, artık bağımsız değişkenleri oluştururken varsayılan değeri olmayan parametreleri varsayılan değeri olan parametrelerden önce yerleştiriyor.
  • Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda, applicationIdTextResource kullanmayla ilgili uyarıyı artık almayacaksınız.

Bilinen sorunlar

  • Gezinme 2.5.0-alpha01 bölümünde düzeltildi: Bir parçanın onCreate() bölümünden by navGraphViewModels() aracılığıyla oluşturulan bir ViewModel'a erişildiğinde IllegalStateException hatası oluşur. (b/213504272)
  • Gezinme 2.5.0-alpha01 bölümünde düzeltildi: Safe Args 2.4.0, Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu değildir. (b/213086135)
  • Birden fazla iç içe yerleştirilmiş gezinme grafiğiyle derin bağlantı oluşturmak, tam geri yığınını doğru şekilde oluşturmaz. (b/214383060)

Sürüm 2.4.0-rc01

15 Aralık 2021

androidx.navigation:navigation-*:2.4.0-rc01 yayınlanır. 2.4.0-rc01 sürümü bu taahhütleri içerir.

Davranış değişiklikleri

  • NavDeepLink ayrıştırılmış bağımsız değişkenler artık bağımsız değişkenler arasındaki ayırıcı olarak soru işaretleriyle aynı şekilde pound işaretlerini dikkate alır. (I21309, b/180042703)

Hata Düzeltmeleri

  • Derin bağlantılar artık yer tutucunun adıyla aynı değere sahip bağımsız değişkenleri yoksayacaktır. (If8017, b/207389470)
  • NavController, NavController geri yüklendikten sonra geçişler kullanılarak iç içe yerleştirilmiş bir hedef açarken artık kilitlenmeyecek. (I0f7c9, b/205021623)
  • Geçersiz bir startDestination kullanıldığında gösterilen hata mesajı, artık varsayılan olarak başlangıç hedefinin rotasını (varsa) gösterir. (I86b9d, b/208041894)

Gezinme Compose Hata Düzeltmeleri

  • Alt gezinme menüsü öğeleri kullanılarak başlangıç hedefi ile başka bir hedef arasında hızlı geçiş yapılmasından kaynaklanan olası kilitlenme düzeltildi. (Ic8976, b/208887901)
  • Yapılandırma değişiklikleri veya işlem sona erdikten sonra iletişim kutusu hedefi artık ekranın üst kısmında düzgün şekilde geri yüklenir. (I4c0dc, b/207386169)
  • İletişim kutusu kapatıldığında iletişim kutusunun NavBackStackEntry öğesinden ViewModel öğesi alınmaya çalışılırken başarısız olma sorunu düzeltildi. (I6b96d, b/206465487)
  • Gezinme Oluşturma'nın NavHost özelliğiyle activity hedefleri kullanılırken sonsuz yeniden oluşturma işlemine neden olan bir sorun düzeltildi. (I8f64c)
  • Yapılandırma değişikliği veya işlem sona erdikten sonra eski etkinliğin referansını tutmaya devam eden Gezinme Oluşturma özelliğindeki bir sızıntı düzeltildi. (I4efcb, b/204905432)

Safe Args Hata Düzeltmeleri

  • SafeArgs, işlem sona erdikten sonra özel paketlenebilir dizileri geri yüklemeye çalışırken artık kilitlenmiyor. (I618e8, b/207315994)
  • safe args parametresinde, boole dizilerinin null değerine sahip olmasına izin vermeyen bir hata düzeltildi. (I8c396, b/174787525)

Sürüm 2.4.0-beta02

3 Kasım 2021

androidx.navigation:navigation-*:2.4.0-beta02 yayınlanır. 2.4.0-beta02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Hem açık hem de örtük derin bağlantıların işlenmesi artık başka bir grafiğe gidildiğinde otomatik olarak saveState işaretini ekler. Bu sayede NavigationUI.setupWithNavController gibi kodların ve birden fazla geri yığın kullanan kodların beklendiği gibi çalışması sağlanır. (Ic8807)

Davranış Değişiklikleri

  • Derin bağlantı kalıpları artık şişirme sırasında değil, NavDeepLink'te üşengeç olarak derlenir. Bu sayede, derin bağlantılar içeren gezinme grafiklerinin şişirme süresi iyileşir. (b8d257, b/184149935)

Hata Düzeltmeleri

  • NavHost doğrudan etkinliğin setContent()'ına eklendiğinde NavBackStackEntries'in Lifecycle.State.STARTED'a taşındıktan sonra Lifecycle.State.CREATED'e itilmesiyle ilgili sorun düzeltildi. (Ia5ac1, b/203536683)
  • İletişim kutusu gösterilmeden önce arka yığıntan bir DialogFragment hedefinin kaldırılmasının, iletişim kutusunu kapatmaması ve hatalı iletişim kutusu kullanıcı tarafından manuel olarak kapatıldığında kilitlenmeye neden olması sorunu düzeltildi. (I687e5)
  • NavigationUI'daki onNavDestinationSelected API'sinin, söz konusu gezinme grafiğine navigate() etmeseniz bile true döndürdüğü sorun düzeltildi. Artık hedefin hierarchy değerini kullanarak yalnızca geçerli hedefle ilişkili MenuItem değerini seçmek için setupWithNavController tarafından dahili olarak kullanılan aynı mantığı kullanır. (I2b053)

Sürüm 2.4.0-beta01

27 Ekim 2021

androidx.navigation:navigation-*:2.4.0-beta01 yayınlanır. 2.4.0-beta01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık Kotlin DSL'yi Fragment'lerle kullanmayı daha iyi desteklemek için kimlik kullanmaya alternatif olarak bir rotayla by navGraphViewModel kullanabilirsiniz. (I901e3, b/201446416)

API Değişiklikleri

  • visibleEntries API şu anda deneyseldir. (I93f6f)

Hata Düzeltmeleri

  • Aynı ekranlar arasında ileri geri gidilerek geçişler kesintiye uğradığında ViewModel'ler artık yok edilmeyecektir (Id52d8, b/200817333)
  • Boş bırakılabilen NavDeepLink bağımsız değişkenleri, NavDestination'lara derin bağlantı eklenirken artık varsayılan değer gerektirmez. (I5aad4, b/201320030)
  • Artık farklı yaşam döngülerine sahip NavBackStackEntries eşit kabul edilmiyor. Bu, NavHost'ın singleTop ile gezinirken ve alt menü öğelerini yeniden seçerken tüm hedefleri düzgün şekilde yeniden oluşturacağı anlamına gelir. (I1b351, b/196997433)
  • onCreateListPaneView() tarafından döndürülen liste bölmesinde layout_width ve layout_weight özelliklerinin yanlış şekilde işlenmesine veya yoksayılmasına neden olan AbstractListDetailFragment sorunu düzeltildi. (f5fbf3)
  • İletişim kutusu hedeflerinin görsel durumu artık DialogFragmentNavigator'ün durumuyla doğru şekilde senkronize edilir. Bu, DialogFragment için asenkron dismiss() API'yi manuel olarak çağırmanın artık kapatılmış olan iletişim kutusunun üzerindeki tüm iletişim kutusu hedeflerini düzgün şekilde temizlediği anlamına gelir. Bu durum, iletişim kutusunu kapatmak için popUpTo veya popBackStack() kullandığınız durumları etkilemez. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener artık onDestinationChanged() için daha net hata mesajları sunuyor. (Ie742d)

Sürüm 2.4.0-alpha10

29 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha10 yayınlanır. 2.4.0-alpha10 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavController artık visibleEntries StateFlow (Ia964e) aracılığıyla tüm görünür NavBackStackEntry örneklerini alma olanağı sunar.
  • rememberNavController() artık eşlik eden gezinme materyalindeki gibi isteğe bağlı gezginleri daha iyi desteklemek için döndürülen NavController öğesine eklenecek isteğe bağlı bir Navigator örneği grubu alır. (I4619e)

Hata Düzeltmeleri

  • Etkinlik yeniden oluşturulduğunda Dinamik Gezinme artık kilitlenmeyecek. (Ifa6a3, b/197942869)
  • Sistem geri düğmesiyle ilgili, yalnızca NavHost içeren bir derlenebilir hedefe geri döndükten sonra ortaya çıkan bir sorun düzeltildi. (3ed148, b/195668143)
  • SafeArgs artık fromBundle() ve fromSavedStateHandle() için bağımsız değişkenleri doğru parametre sırasına göre oluşturuyor. (I824a8, b/200059831)

Sürüm 2.4.0-alpha09

15 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha09 yayınlanır. 2.4.0-alpha09 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık popBackStack() veya popUpToSaveState ile kaydedilen durumları temizlemek için clearBackStack() yöntemini kullanabilirsiniz. (I80a0f)
  • Artık iç içe yerleştirilmiş gezinme grafiğinizin oluşturucusuna bir bağımsız değişkenler ve/veya derin bağlantılar listesi iletebilirsiniz. Bu bağımsız değişkenler ve derin bağlantılar, oluşturulan grafiğe otomatik olarak eklenir. (I8a470, b/182545357)

API Değişiklikleri

  • navArgument Kotlin DSL işlevi artık navigation-compose yerine navigation-common'in bir parçasıdır. Bu işlevi kullanmaya devam etmek için içe aktarma işlemlerini güncellemeniz gerekir. (I1d095)

Davranış Değişiklikleri

  • Safe Args, artık bağımsız değişkenleri oluştururken varsayılan değeri olmayan parametreleri varsayılan değeri olan parametrelerden önce yerleştiriyor. (I89709, b/198493585)

Hata Düzeltmeleri

  • Gezinme Oluşturma kullanılırken NavGraph'lar yalnızca tüm alt öğeleri DESTROYED olduğunda DESTROYED olur. (I86552, b/198741720)
  • Boş bırakılabilen NavDeepLink bağımsız değişkenleri için artık varsayılan değer gerekmez. (Ia14ef, b/198689811)
  • setGraph() işlevinin yeni bir grafikle çağrılması, artık önceki geri yığını gösterme davranışına ek olarak kayıtlı tüm geri yığınları da temizleyecektir. (I97f96)
  • launchSingleTop kullanılırken OnDestinationChangedListener örnekleri ve currentBackStackEntryFlow'un bilgilendirilmediği sorun düzeltildi. (Iaaebc)

Bağımlılık Güncellemeleri

Sürüm 2.4.0-alpha08

1 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha08 yayınlanır. 2.4.0-alpha08 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Artık özel NavTypes oluşturmak için NavType sınıfını genişletebilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL aracılığıyla) desteklenir. (I78440, b/196871885)

Davranış Değişiklikleri

  • Safe Args'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değeri olmayan bağımsız değişkenleri parametre olarak varsayılan değeri olan bağımsız değişkenlerden önce yerleştiriyor. (Idb697, b/188855904)
  • Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar) Uri içinde bulunduğunu doğrular. (#204, b/185527157)

Hata Düzeltmeleri

  • composable() içinde getBackStackEntry ve previousBackStackEntry'un remember() ile birlikte kullanılması artık arka yığınta hedef olmadığı için istisna oluşturmayacaktır. (I75138, b/194313238)
  • Gezinme Oluşturma, yığın bağımsız değişkenlerini geri değiştirip launchSingleTop=true kullanıldığında artık düzgün şekilde yeniden oluşturuyor. (Iebd69, b/186392337)
  • 13 veya 29 hedef içeren bir grafikle setGraph'i aradığınızda artık ArrayIndexOutOfBoundsException olmayacaktır. (I1a9f1, b/195171984)
  • SafeArgs Java oluşturucu artık Args sınıfları oluştururken lint uyarılarına neden olmayacak. (I1a666, b/185843837)

Harici Katkı

  • Derin bağlantıların, gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar) Uri içinde bulunduğundan emin olmasını sağlayan ospixd'ye teşekkürler. (#204, b/185527157)

Sürüm 2.4.0-alpha07

18 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha07 yayınlanır. 2.4.0-alpha07 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Gezinme Oluşturma, yapılandırma değişikliklerinden sonra ve birden fazla geri yığın özelliği kullanılırken grafikler değiştirilirken artık durumu düzgün şekilde kaydediyor. (If5a3d, b/195141957)
  • Birden fazla geri yığınıyla gezinme oluşturma özelliği kullanılırken aynı sekmenin yeniden seçilmesi artık boş ekranla sonuçlanmayacak. (I860dc, b/194925622)
  • NavHost artık NavBackStackEntry öğelerinin Lifecycle.State değerinde değişiklik olup olmadığını gözlemler. Bu, bir fragmanda NavHost kullanılmasının artık boş ekranla sonuçlanmak yerine yaşam döngüsü değiştikçe düzgün şekilde yeniden oluşturulacağı anlamına gelir. (I4eb85, b/195864489)
  • Bir DialogFragment'ü kapatmanın, etkinliğinizi yeniden oluşturduktan sonra (ör. yapılandırma değişikliğinden sonra) NavController durumunu doğru şekilde güncellememesine neden olan sorun düzeltildi. (Icd72b)
  • Bir iletişim kutusu hedefinin açılmasının, NavController'ın sistem geri düğmesi işlemesini güncellememesine neden olduğu ve bu durumun, açılacak geri yığını olmamasına rağmen NavController'ın geri düğmesini durdurmasına neden olduğu sorun düzeltildi. (If3b34)
  • Safe-args artık ViewModel kodunuzu test etmek için kullanılabilecek toSavedStateHandle parametreler için otomatik olarak bir yöntem oluşturur. (If1e2d, b/193353880)

Sürüm 2.4.0-alpha06

4 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha06 yayınlanır. 2.4.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • AbstractListDetailFragment'deki requireSlidingPaneLayout() ve requireDetailPaneNavHostFragment() yöntemleri sırasıyla getSlidingPaneLayout() ve getDetailPaneNavHostFragment() olarak yeniden adlandırıldı. (I34a08)

Davranış Değişiklikleri

  • Animasyonlarla gezinirken (Crossfade gibi), yeni hedefin Lifecycle artık yalnızca animasyon tamamlandığında RESUMED'ye ulaşır. (If0543, b/172112072, b/194301889)
  • Gezinme Oluştur'un NavHost işlevi artık grafiği ilk kompozisyonun parçası olarak ayarlar. (Ieb7be)

Hata Düzeltmeleri

  • Bir gezinme grafiğinin son hedefini göstermek artık ClassCastException hatası oluşturmuyor. (If0543, b/172112072, b/194301889)
  • Uri olmadan derin bağlantı ekleyip rota veya derin bağlantı üzerinden gezinirken ortaya çıkan bir NullPointerException düzeltildi. (938a0c, b/193805425)
  • Derin bağlantılı bir NavBackStackEntry öğesinin RESUMED durumuna ulaşamamasına neden olan Navigasyon Oluşturma'daki bir sorun düzeltildi. (I192c5)
  • Bir iletişim kutusu hedefinin açılmasının, NavController'ın sistem geri düğmesi işlemesini güncellememesine neden olduğu ve bu durumun, açılacak geri yığını olmamasına rağmen NavController'ın geri düğmesini durdurmasına yol açabileceği bir sorun düzeltildi. (aosp/1782668)

Sürüm 2.4.0-alpha05

21 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha05 yayınlanır. 2.4.0-alpha05 sürümü bu taahhütleri içerir.

Davranış Değişiklikleri

  • Gezinme Oluşturma'nın NavHost özelliği artık hedefler arasında gezinirken her zaman geçiş efektleri kullanır. (I07049, b/172112072)
  • Artık bir NavHost'un grafiğinde değişiklik yapabilirsiniz. Grafikte aynı startDestination ve hedeflere sahip grafikler eşit kabul edilir ve NavController geri yığınını temizlemez. (I0b8db, b/175392262)

Hata Düzeltmeleri

  • NavController'ın durumundaki yeniden giren güncellemelerden kaynaklanan bir NavBackStackEntry'a bağlı bir LifecycleObserver içinden popBackStack() çağrılırken NoSuchElementException hatası düzeltildi. (I64621)
  • AbstractListDetailFragment artık AbstractListDetailFragment kullanılmadığında SlidingPaneLayout'nin APK'nızdan tamamen kaldırılmasına izin veriyor. (I611ad)
  • NavGraph ve NavDestination artık eşittir yöntemini geçersiz kılıyor. Böylece, aynı değerlere sahip iki nesne eşit olarak kabul edilir. (I166eb, b/175392262)

Sürüm 2.4.0-alpha04

1 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha04 yayınlanır. 2.4.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • navigation-fragment yapıları artık yeni AbstractListDetailFragment aracılığıyla iki bölmeli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu fragmanda, bir liste bölmesini (alt sınıfınızın sağladığı) yönetmek için bir SlidingPaneLayout ve örnek uygulamamızda görüldüğü gibi uygulama olarak bir NavHostFragment kullanan bir ayrıntı bölmesi kullanılır. (Iac4be, b/191276636)
  • navigation-compose yapısını içeren NavHost, artık composable hedeflerine ek olarak dialog hedeflerini de desteklemektedir. Bu iletişim kutusu hedeflerinin her biri, mevcut composable hedefinin üzerinde yüzen bir Kompozit Dialog içinde gösterilir. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

API Değişiklikleri

  • NavigatorState içindeki add işlevi, push olarak yeniden adlandırıldı. add() için yapılan tüm mevcut çağrıların push() olarak değiştirilmesi gerekir. (Ie89fc, b/172112072)
  • Özel Navigator örnekleri artık bir hedefi asenkron olarak göndermek veya pop up olarak göstermek için NavigatorState'daki pushWithTransaction ve popWithTransition API'lerini kullanabilir. Bu API'lerin henüz dahil edilen gezginlerden hiçbiri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)

Davranış Değişiklikleri

  • NavDeepLinkBuilder artık createPendingIntent() tarafından döndürülen PendingIntent değerine PendingIntent.FLAG_IMMUTABLE değerini ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlıyor. (If8c52)

Hata Düzeltmeleri

  • Grafiğe iletilen bağımsız değişkenlerin dinamik olarak dahil edilen grafiğe doğru şekilde iletilmediği <include-dynamic> ile ilgili sorun düzeltildi. (I3e115)
  • Varsayılan değeri @null olan bir string[] bağımsız değişkeni kullanılarak bir hedefe giderken NullPointerException hatası düzeltildi. (I1fbe8)
  • R8 3.1 tam modu kullanırken ortaya çıkan sorunları düzeltmek için @Navigator.Name için ProGuard kuralları ekleyin. (I2add9, b/191654433)
  • Uygulamanızı 1.5.0 öncesi Kotlin sürümleriyle derlediğinizde SafeArgs artık hata vermez. (Icd1ff, b/190739257)

Sürüm 2.4.0-alpha03

16 Haziran 2021

androidx.navigation:navigation-*:2.4.0-alpha03 yayınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Dahil edilen dinamik bir grafiğe gitmek için iki navigate() çağrısının gerekli olduğu sorun düzeltildi. (I7785c, b/188859835)
  • Üst düzey bir hedefteyken setupActionBarWithNavController()'ın Yukarı simgesini düzgün şekilde kaldıramamasına yol açan Gezinme 2.4.0-alpha01 özelliğinde ortaya çıkan bir gerileme düzeltildi. (I5d443, b/189868637)
  • Daha önce NavController'ın kök grafiğini açtıktan sonra popBackStack() çağrılırken oluşan IllegalStateException hatası düzeltildi. (I2a330, b/190265699)
  • by navArgs() için ProGuard kuralları artık navigation-common veya ona bağlı öğeler kullanılırken düzgün şekilde uygulanıyor. (I68800, b/190082521)
  • Geri çağırma aldığında ilk kez navigate()'u çağıran bir OnDestinationChangedListener, artık gittiği hedefi içeren ikinci bir geri çağırma alır. (Ie5f9e, b/190228815)
  • Safe Args, dinamik özellik modülleri ve AGP 7.0 ve sonraki sürümlerle kullanıldığında artık kilitlenmiyor. (I69518, b/189966576)

Bilinen Sorun

  • Kotlin'in eski bir sürümüne bağımlı olması nedeniyle, Gradle 6.7.0 kullanılırken Güvenli Parametreler Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ hatasıyla başarısız olur. Bu sorun, Gradle 7.0'ı kullanacak şekilde güncellenerek çözülebilir. (b/190739257)

Sürüm 2.4.0-alpha02

2 Haziran 2021

androidx.navigation:navigation-*:2.4.0-alpha02 yayınlanır. 2.4.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Rotalar artık Activity, Fragment ve Dialog hedefleri için ve DynamicNavigation Kotlin DSL'de desteklenmektedir. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI, durumunuzun kaydedilmesini devre dışı bırakmanıza olanak tanımak için geçici olarak deneysel API'ler ekledi. Durumu her zaman kaydetmek doğru davranış olsa da, durum kaydedilirken desteklenemeyen desteği sonlandırılmış kitaplıklar (ör.tutulan parçalar) kullanımda olmaya devam etmektedir. Bu nedenle, uygulamalar desteklenmeyen API'lerden yavaş yavaş geçiş yapma fırsatı buluyor. (Idf93c)
  • Gezinme artık özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek findDestination() ve getHierarchy() API'leri sağlıyor. findDestination(), NavGraph üzerinde bir hedefi grafik içinde bulmayı sağlayan bir uzantı işlevidir. getHierarchy(), NavDestination üzerinde belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen bir işlevdir.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView alan NavigationUI yöntemleri, 1.4.0 materyalinde tanıtılan NavigationBarView üst sınıfını alacak şekilde güncellendi. Bu sayede bu yöntemler NavigationRailView ile kullanılabilir. (Ib0b36, b/182938895)

  • Bir <action> öğesi XML aracılığıyla şişirilirken animasyon özellikleri, app:enterAnim="?attr/transitionEnter" söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir. (I07bc1, b/178291654)

API Değişiklikleri

  • Kimlik kullanan Kotlin DSL oluşturucularının desteği sonlandırıldı ve bu oluşturucular, rota kullanan oluşturucularla değiştirilmelidir (I85b42, b/188816479) (I9f58f, b/188816479)

Hata Düzeltmeleri

  • DialogFragmentNavigator artık sistem geri düğmesine basılarak veya dışındaki bir yer tıklanarak bir iletişim kutusunun kapatıldığını NavController'ye bildirmek için NavigatorState.pop() API'yi kullanıyor. Böylece NavController durumunun her zaman Navigator'un durumuyla senkronize olmasını sağlıyor. (I2ead9)
  • Gezinme, onDestinationChanged geri çağırma işlevini kullanarak OnDestinationChangedListeners listesini değiştirirken artık ConcurrentModificationException hatası vermiyor. (Ib1707, b/188860458)

  • Safe Args, Kotlin'de yön özellikleri oluşturmaya çalışırken artık kilitlenmiyor. (Id2416, b/188564435)

  • NavDestination'daki setId yöntemi artık @IdRes ile uygun şekilde ek açıklamaya sahip olduğundan yalnızca kaynak kimliklerini kabul eder. (I69b80)

  • findNode için int parametresi artık resid yerine resId. (I7711d)

Bağımlılık Güncellemesi

  • Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda, applicationIdTextResource kullanmayla ilgili uyarıyı artık almayacaksınız. (I6d67b, b/172824579)

Sürüm 2.4.0-alpha01

18 Mayıs 2021

androidx.navigation:navigation-*:2.4.0-alpha01 yayınlanır. 2.4.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavController üzerindeki currentBackStackEntryAsFlow() yöntemi, mevcut NavBackStackEntry değiştiğinde yayınlanan bir Flow sağlar. Bu akış, OnDestinationChangedListener'ü manuel olarak yönetmenin alternatifi olarak kullanılabilir. (I19c4a, #89, b/163947280)

Birden fazla geri yığın

NavController, hedeflerin arka yığınını yönetmekten, navigate() yaptığınızda hedefleri arka yığına eklemekten ve popBackStack()'ı çağırdığınızda veya sistem geri düğmesini tetiklediğinizde hedefleri kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'indeki <action> girişlerine entegrasyon, geri yığının kaydedilip geri yüklenmesini desteklemek için genişletildi. (b/80029773)

Bu değişiklik kapsamında, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController()'in NavigationUI yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükler. Böylece, herhangi bir kod değişikliği yapmadan birden fazla geri yığın desteği sağlanır. Navigasyon'u Fragment'lerle kullanırken birden fazla arka yığınla entegrasyon için önerilen yöntem budur. (Ie07ca)

Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler çeşitli platformlar üzerinden sunulur:

  • Gezinme XML'inde <action> öğesi artık app:popUpTo aracılığıyla açılan tüm hedeflerin durumunu kaydetmek ve app:destination olarak iletilen hedefle ilişkili durumu geri yüklemek için app:popUpToSaveState ve app:restoreState'nin doğru/yanlış özelliklerini kullanabilir:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL'de popUpTo oluşturucuya restoreState boole özelliğini ve saveState boole özelliğini ekleyebilirsiniz:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • NavOptions.Builder aracılığıyla manuel olarak bir NavOptions nesnesi oluştururken setRestoreState() ve setPopUpTo() için yeni aşırı yükleme yöntemini kullanarak ek bir saveState parametresi alabilirsiniz.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() için programatik çağrılar artık ek bir saveState parametresi içerebilir.

Her durumda NavController, gezinme hedefi kapsamlı ViewModel örnekleri dahil olmak üzere her NavBackStackEntry örneğinin durumunu kaydedip geri yükler. Navigator API'leri, her Navigator'ın kendi durumunu kaydetme ve geri yükleme özelliğini desteklemesi için güncellendi.

Navigasyon Oluşturma'da composable varış noktaları için kullanılan ComposeNavigator ve Fragment ile Navigasyon'da <fragment> varış noktaları için kullanılan FragmentNavigator ve DynamicFragmentNavigator, yeni Navigator API'lerini kullanacak ve durumu kaydetme ve geri yüklemeyi destekleyecek şekilde güncellendi.

Gezinme Rotaları

Rota, bir hedefi benzersiz şekilde tanımlayan bir String öğesidir. Daha önce yalnızca Navigation Compose'da kullanılan bu kavram, artık temel Navigation API'lerinin bir parçası oldu. Bu, Navigation Kotlin DSL aracılığıyla grafiğinizi oluştururken tam sayı kimlikleri kullanmaya alternatif bir yöntem sunar. (b/172823546)

Eskiden yalnızca kimlik alan tüm API'lerin artık bir rota String alan aşırı yüklemesi vardır. Buna navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.

Bu durum API'ler açısından bazı sonuçlara yol açmıştır:

  • Kotlin DSL'deki popUpTo kotlin özelliğinin desteği sonlandırıldı ve popUpToId özelliğinin desteğine geçildi. (I59c73, b/172823546)
  • getStartDestination() API'si, getStartDestinationId() API'si lehine kullanımdan kaldırıldı. (I0887f, b/172823546)

Gezinme Oluşturma'nın önceki sürümlerinden Gezinme Oluşturma 2.4.0-alpha01'ya yükseltme yapan geliştiriciler için bu, uzantı yöntemlerinde aşağıdaki içe aktarma işlemlerinin artık gerekli olmadığı ve kaldırılması gerektiği anlamına gelir:

import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo

KEY_ROUTE bağımsız değişkeni, navBackStackEntry.destination.route işlevini doğrudan çağırmanıza olanak tanıyacak şekilde NavDestination üzerindeki route mülküyle değiştirildi.

API Değişiklikleri

  • Tüm gezinme yapıları Kotlin'de yeniden yazılmıştır. Bu sayede, genel sınıfların (NavType alt sınıfları gibi) boşluk kabul etme özelliği iyileştirildi. -ktx yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı. -ktx yapıları yayınlanmaya devam eder ancak tamamen boştur. (b/184292145)
  • NavDeepLinkBuilder artık oluşturulan arka yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)
  • DynamicNavHostFragment (Icd515, b/175222619) için fabrika işlevleri ekleme
  • NavBackStackEntry'lerin benzersiz kimliği artık herkese açık API'lerinin bir parçası olarak kullanıma sunuldu. (Ie033a)
  • name ve argument alanları ve NamedNavArgument'nin yapısını bozma işlevleri artık herkese açıktır. (#174, b/181320559)
  • İlgili beste yerellerine NavBackStackEntry sağlayan yeni bir NavBackStackEntry#provideToCompositionLocals uzantısı kullanıma sunuldu. (#175, b/187229439)

Safe Args

  • Güvenli bağımsız değişkenler artık her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturur. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Safe Args, KotlinPoet 1.8.0'e bağlı olacak şekilde güncellendi. (#172, b/183990444)

Davranış Değişiklikleri

  • Navigasyon artık Lifecycle 2.3.1'e bağlıdır ve NavBackStackEntry Lifecycle öğesini güncelleyen yöntemleri (setGraph(), popBackStack(), navigateUp() ve navigate()) @MainThread olarak işaretleyerek Navigasyon'u Lifecycle 2.3.0'de kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirir. (b/171125856)
  • Derin bağlantılardaki enum bağımsız değişkenlerinin ayrıştırılması artık büyük/küçük harf duyarlı değildir. Bu sayede, enum RED değerine sahip olsa bile http://www.example.com/red gibi bir derin bağlantı, www.example.com/{color} derin bağlantısıyla eşleşebilir. (#152, b/135857840)

Oluşturma Uyumluluğu

  • androidx.navigation:navigation-compose:2.4.0-alpha01 yalnızca 1.0.0-beta07 ve sonraki sürümlerin yüklü olduğu Oluştur ile uyumludur.

Hata Düzeltmeleri

  • Sonraki bağımsız değişken yer tutucularının, tam olarak eşleşen son ek içeren derin bağlantılara göre öncelikli olması sorunu düzeltildi. (#153, b/184072811)
  • NavHostFragment artık varsayılan DialogFragmentNavigator ile aynı @Navigator.Name("dialog") kullanan özel Gezgin'leri destekliyor. (Ib1c2c, b/175979140)
  • NavigatorProvider#addNavigator işlevinin, aynı örnekle tekrar tekrar çağrılmasının soruna neden olmaması için davranışı iyileştirildi. (#176, b/187443146)

Harici Katkılar

  • Her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturan Safe Args desteğini geliştiren simonschiller'a teşekkürler. (#122, b/136967621)
  • Derin bağlantılardaki Enum bağımsız değişkenlerini büyük/küçük harf duyarlı olmayan şekilde ayrıştırma özelliğini eklediğiniz için teşekkürler Bradleycorn. (#152, b/135857840)
  • Son bağımsız değişken yer tutucularının, tam olarak eşleşen son ek içeren derin bağlantılara göre öncelik kazandığı sorunu düzelttiği için osipxd'ye teşekkürler. (#153, b/184072811)
  • Safe Args'i KotlinPoet 1.8.0'e bağlayacak şekilde güncelleyen tatocaster'a teşekkürler. (#172, b/183990444)
  • NamedNavArgument'in name ve argument alanlarını ve yapısını bozma işlevlerini herkese açık hale getirdiğiniz için jossiwolf'a teşekkürler. (#174, b/181320559)
  • İlgili beste yerellerine NavBackStackEntry sağlayan yeni bir NavBackStackEntry#provideToCompositionLocals uzantısı kullanıma sunduğu için jossiwolf'a teşekkür ederiz. (#175, b/187229439)
  • NavigatorProvider#addNavigator işlevinin aynı örnekle tekrar tekrar çağrılmasının soruna neden olmaması için davranışını iyileştiren jossiwolf'a teşekkürler. (#176, b/187443146)

Sürüm 1.0.0-alpha10

7 Nisan 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 yayınlanır. 1.0.0-alpha10 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • NavHost artık bir Modifier kabul ediyor. Bu değer, hedef derlenebilir öğeleri saran derlenebilir kapsayıcıya iletilir. (I85aca, b/175125483)

Hata Düzeltmeleri

  • NavHost artık OnBackPressedDispatcherOwner bulunmadığında bile çalışır. Örneğin, NavHost önizlenirken. (I7d8b4)
  • Gezinme Oluştur özelliği artık Gezinme 2.3.5'e bağlıdır. Bu sayede, NavHost hedefinde BackHandler kullanılırken karşılaşılan bir sorun düzeltildi. (I7e63b, b/182284739)

Sürüm 1.0.0-alpha09

10 Mart 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 yayınlanır. 1.0.0-alpha09 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current artık mevcut kompozisyonda ViewModelStoreOwner'ın kullanılıp kullanılamayacağını daha iyi belirlemek için boş bırakılabilir bir ViewModelStoreOwner döndürüyor. viewModel() ve NavHost gibi ViewModelStoreOwner gerektiren API'ler, ViewModelStoreOwner ayarlanmasa bile istisna atar. (Idf39a)

Hata Düzeltmeleri

  • Navigation Compose artık grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlama denemesine yönelik düzeltmeyi içeren Navigation 2.3.4 sürümüne bağlıdır. (I65c24, b/177825470)

Sürüm 1.0.0-alpha08

24 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 yayınlanır. 1.0.0-alpha08 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavHost artık LocalSavedStateRegistryOwner CompositionLocal'ı ilgili hedefin NavBackStackEntry ile doldurur. Böylece, doğrudan SavedStateRegistry'a kaydedilen tüm durumların hedefle birlikte kaydedilip geri yüklenmesini sağlar. (I435d7, b/179469431)

Sürüm 1.0.0-alpha07

10 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 yayınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

Sürüm 1.0.0-alpha06

28 Ocak 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 yayınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • NavController üzerinde, ilişkili NavBackStackEntry değerini döndüren bir getBackStackEntry(route: String) uzantı yöntemi eklendi. (If8931)

Sürüm 1.0.0-alpha05

13 Ocak 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.

Compose 1.0.0-alpha10'a bağlı olacak şekilde güncellendi.

Sürüm 1.0.0-alpha04

16 Aralık 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.

  • Oluştur 1.0.0-alpha09 ile uyumluluk için güncellendi.

Sürüm 1.0.0-alpha03

2 Aralık 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Yapılandırma değişikliği veya işlem sonlandırılıp yeniden oluşturulduktan sonra popBackStack() ve navigateUp()'un çalışmaması sorunu düzeltildi. (Icea47, b/173281473)
  • NavHost'unuzda iç içe yerleştirilmiş bir grafiğe gitme özelliği artık düzgün çalışıyor. (I0948d, b/173647694)

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Gezinme oluşturma işlevi artık popUpTo ve launchSingleTop işlemlerini kullanmak için NavOptions'ı destekliyor (If96c3, b/171468994)
  • Navigasyon Oluşturma DSL'sinde iç içe yerleştirilmiş grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rota alan bir navigasyon işlevi eklendi. (I1661d)
  • startDestination artık NavHost parametre listesinde rotadan önce gelir (Ie620e)
  • Artık bir NavHost bileşeninin dışında başlangıç hedefi olarak rotayı kullanarak bir grafik oluşturabilirsiniz. (Iceb75)

Sürüm 1.0.0-alpha01

28 Ekim 2020

android.navigation:navigation-compose:1.0.0-alpha01 yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

navigation-compose yapı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.

Bu ilk sürümde şunlar sağlanır:

  • Kotlin DSL aracılığıyla gezinme grafiğinizi oluşturmanıza olanak tanıyan bir NavHost bileşeni.
  • Hedef düzeyinde yaşam döngüsü, ViewModel ve hatırlanan durumun kapsamı.
  • Sistem geri düğmesiyle otomatik entegrasyon.
  • Parametreleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere bir sonuç döndürme desteği.
  • Yükseltme durumuna izin vermek ve NavControllerNavHost dışındaki bileşenlere (alt gezinme çubuğu gibi) bağlamak için rememberNavController() ve currentBackStackEntryAsState()'te belirli yardımcılar oluşturun.

Daha fazla bilgi için Gezinme oluşturma kılavuzuna bakın.

Sürüm 2.3.5

Sürüm 2.3.5

7 Nisan 2021

androidx.navigation:navigation-*:2.3.5 yayınlanır. 2.3.5 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavDeepLinkRequest veya Uri kullanarak gezinirken artık KEY_DEEP_LINK_INTENT aracılığıyla bağımsız değişkenlerden intent'i alarak elde edilen hedefteki Uri, işleme ve mime türüne erişebilirsiniz. Bu sayede, harici derin bağlantı için halihazırda mevcut olan işlevler yansıtılır. (I975c3, b/181521877)

Hata Düzeltmeleri

  • OnBackPressedCallbacks, NavBackStackEntry ile bir dağıtıcıya eklendi. LifecycleOwner artık etkinlik yaşam döngüsü STOPPED ve ardından STARTED olduktan sonra geri çağrıyı düzgün bir şekilde durduruyor (Iff94f, b/182284739)
  • Derin bağlantı alan adı ayrıştırma işlemi artık büyük/küçük harfe duyarlı değildir. Bu sayede www.example.com hem www.example.com hem de www.Example.com ile eşleşir. Sorgu parametresi adlarının büyük/küçük harfe duyarlı olmaya devam ettiğini unutmayın. (#144, b/153829033)
  • Bir hedefin birden fazla boş olmayan varsayılan bağımsız değişkeni olduğunda ve yalnızca bu bağımsız değişkenlerin bir alt kümesini geçersiz kılarken söz konusu hedefe gittiğinizde ortaya çıkabilecek bir NullPointerException hatası düzeltildi. (aosp/1644827)

Bağımlılık Güncellemeleri

  • Gezinme Güvenli Arg'leri Gradle eklentisi artık Kotlin Gradle eklentisi 1.4.31'e bağlıdır. (aosp/1661058, b/181156413)

Harici Katkı

  • Derin bağlantı alan adının büyük/küçük harfe duyarlı olmayan şekilde ayrıştırılmasını sağlayan çekme isteği için bentrengrove'e teşekkürler. (#144, b/153829033)

2.3.4 sürümü

2.3.4 sürümü

10 Mart 2021

androidx.navigation:navigation-*:2.3.4 yayınlanır. 2.3.4 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • ReferenceType bağımsız değişkenleri artık derin bağlantı URI'sinin bir parçası olarak gönderildiğinde doğru şekilde ayrıştırılabilir. Bu, hem ham tam sayı değerini hem de ön ekinde 0x bulunan onaltılık değerleri destekler. (#127, b/179166693)
  • app:argType="float" içeren bir bağımsız değişken için android:defaultValue artık tamsayı varsayılan değerlerini destekler. Bu sayede 0.0 kullanmak yerine android:defaultValue="0" kullanabilirsiniz. (#117, b/173766247)

Hata Düzeltmeleri

  • Gezinme'nin dinamik özellikler için desteğini kullanırken takılan yükleme ilerleme durumunu düzeltme. (Ib27a7, b/169636207)
  • Halihazırda ayarlanmış olan aynı nesneyle setViewModelStore veya setLifecycleOwner çağrıldığında artık işlem yapılmaz (Idf491, b/177825470)
  • Safe-Args artık Java kullanılırken uygun yöntemlere suppress ek açıklamaları ekliyor. (I8fbc5, b/179463137)

Harici Katkılar

  • ReferenceType bağımsız değişkenlerinin artık derin bağlantı URI'si kapsamında gönderildiğinde düzgün şekilde ayrıştırılabilmesini sağlayan çekme isteği için JvmName'a teşekkür ederiz. (#127, b/179166693)
  • app:argType=”float” içeren bir bağımsız değişken için defaultValue'a izin veren çekme isteği için tatocaster teşekkür ederiz. Artık tam sayı varsayılan değerleri desteklenmektedir. (#117, b/173766247)

Sürüm 2.3.3

Sürüm 2.3.3

27 Ocak 2021

androidx.navigation:navigation-*:2.3.3 yayınlanır. 2.3.3 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Lifecycle'u CREATED'ye taşımadan önce NavBackStackEntry'ü açarken artık kilitlenme yaşanmıyor. (Ie3ba3)
  • Animasyon kaynağı değeri 0 olan bir etkinliğe gidildiğinde ResourceNotFoundException'e neden olan b/171364502 kaynaklı gerileme düzeltildi. (I7aedb, b/176819931)

Sürüm 2.3.2

Sürüm 2.3.2

2 Aralık 2020

androidx.navigation:navigation-*:2.3.2 yayınlanır. 2.3.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • NavigationUI'te, onNavDestinationSelected ile <activity> hedefi kullanıldığında etkinliğe gidilemeyen bir gerileme düzeltildi. (I22e34, b/171364502)
  • navigation-dynamic-features-fragment'ün, yeni kurulan hedefe birden çok kez gidilmesine neden olduğu sorun düzeltildi. (aosp/1486056, b/169636207)
  • launchSingleTop kullanılırken varsayılan bağımsız değişkenlerin OnDestinationChangedListener örneklerine gönderilmemesine neden olan sorun düzeltildi. (I2c5cb)
  • İç içe yerleştirilmiş bir gezinme grafiğine gidildiğinde arka yığınta yeni bir grafik örneğinin oluşturulmaması sorunu düzeltildi. (Ifc831)
  • Bir gezinme grafiğindeki son hedefi kaldıran bir popUpTo ile navigate() kullanılmasının, gezinme grafiğinin kendisini hemen yok edip arka yığıntan kaldırmamasına neden olan sorun düzeltildi. (I910a3)
  • Navigation SafeArgs artık Kotlin'in açık API modu için destek ekleyen KotlinPoet 1.7.2 sürümünü kullanıyor. (I918b5)
  • NavHostFragment.findNavController(Fragment) artık Fragment hiyerarşisi ve Fragment'in görünüm hiyerarşisindeki mevcut kontrollere ek olarak bir DialogFragment'in kök dekor görünümünü de kontrol ediyor. Bu sayede, FragmentScenario ve Navigation.setViewNavController() ile gezinme kullanan iletişim kutusu parçalarını test edebilirsiniz. (I69e0d)

Sürüm 2.3.1

Sürüm 2.3.1

14 Ekim 2020

androidx.navigation:navigation-*:2.3.1 yayınlanır. 2.3.1 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Varsayılan animatör kaynakları, gezinme kullanıcı arayüzüne eklendi ve varsayılan animasyon kaynakları yerine kullanılması önerilir. (b/167430145)
  • NavOptions artık karma kodu ve eşittir yöntemlerini geçersiz kılar (b/161586466)
  • Gezinme, artık "No destination with ID" IllegalArgumentException (No destination with ID) hatasında mevcut hedefi içeriyor. Bu da geliştiricilerin hata ayıklama deneyimini iyileştirecektir. (b/168311416)

Hata Düzeltmeleri

  • Güvenli bağımsız değişkenler, oluşturulan bağımsız değişken sınıfı adı 100 karakterden uzun olsa bile artık dönüş satırını sarmalamaz. (b/168584987)

Bağımlılık Değişiklikleri

  • navigation-ui artık DrawerLayout 1.1.1'i kullanıyor. Bu sayede NavigationUI, LOCK_MODE_LOCKED_CLOSED veya LOCK_MODE_LOCKED_OPEN kullanılırken bile çekmeceyi açabiliyor. (b/162253907)
  • Safe Args artık KotlinPoet 1.6.0'a (aosp/1435911) bağlıdır.
  • Safe Args artık AGP 4.0.1'e (aosp/1442337) bağlıdır

Sürüm 2.3.0

Sürüm 2.3.0

24 Haziran 2020

androidx.navigation:navigation-*:2.3.0 yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.

2.2.0 sürümünden beri yapılan önemli değişiklikler

  • Özellik modülü entegrasyonu: navigation-dynamic-features-runtime ve navigation-dynamic-features-fragment yapıları, özellik modüllerinde tanımlanan hedeflere gitmenize olanak tanır ve gerektiğinde özellik modüllerinin yüklemesini otomatik olarak yönetir. Daha fazla bilgi için Özellik modülleri ile gezinme başlıklı makaleyi inceleyin.
  • Gezinme Testi: navigation-testing yapı, gezinme işlemlerinden sonra geçerli hedefi ayarlamanıza ve geri yığınını doğrulamanıza olanak tanıyan bir TestNavHostController sağlar. Daha fazla bilgi için Gezinme testini yapma başlıklı makaleyi inceleyin.
  • Sonuç döndürme: Gezinme geri yığınındaki her hedefle ilişkili NavBackStackEntry, artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durum depolamak için uygun bir SavedStateHandle erişmenize olanak tanır. Daha fazla bilgi için Sonuçları önceki hedefe döndürme başlıklı makaleyi inceleyin.
  • NavigationUI için Openable desteği: NavigationUI'teki DrawerLayout'in tüm kullanımları, CustomView 1.1.0'e eklenen ve DrawerLayout 1.1.0'te DrawerLayout tarafından uygulanan daha genel Openable arayüzüyle değiştirildi.
  • Derin bağlantılarda işlem ve mime türü desteği: Derin bağlantı, daha önce mevcut olan app:uri'e ek olarak app:action ve app:mimeType'i de destekleyecek şekilde genişletildi. NavController artık yeni NavDeepLinkRequest sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuna göre gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest'i kullanarak gezinme başlıklı makaleyi inceleyin.

Bilinen Sorunlar

  • Derin bağlantı işlemleri ve MIME türleri için destek henüz Manifest Birleştirici'de sunulmamaktadır. Bu çalışma tamamlanana kadar, manifest dosyanızdaki <nav-graph> öğesinden oluşturulan <intent-filter> öğeleri, <data> öğesinde mime türünüzü veya özel <action> öğenizi içermez. Manifestinize uygun bir <intent-filter> manuel olarak eklemeniz gerekir.

Sürüm 2.3.0-rc01

10 Haziran 2020

androidx.navigation:navigation-*:2.3.0-rc01 yayınlanır. 2.3.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Bağımsız değişken içermeyen bir hedef örneğini, bağımsız değişken içeren başka bir örnekle değiştirirken singleTop ile ilgili bir sorun düzeltildi.NullPointerException (b/158006669)
  • NavController tarafından oluşturulan tüm destination is unknown istisnaları artık NavController durumunu belirlemeye yardımcı olacak ek hata ayıklama bilgilerine sahip. (b/157764916)

Sürüm 2.3.0-beta01

20 Mayıs 2020

androidx.navigation:navigation-*:2.3.0-beta01 yayınlanır. 2.3.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • İşlem sona erdikten sonra NavBackStackEntry öğesinin Lifecycle değerinin düzgün şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371)
  • setGraph() çağrılmadan önce kaydedilen OnDestinationChangedListener örnekleri, artık bir süreç sona erdikten sonra geri yüklenen hedefe düzgün şekilde gönderiliyor. (b/155218371)
  • singleTop kullanıldığında NavBackStackEntry'un argümanları artık doğru şekilde güncelleniyor ve güncellenen argümanlar tüm OnDestinationChangeListener örneklerine gönderiliyor. (b/156545508)

Bağımlılık Güncellemeleri

Sürüm 2.3.0-alpha06

29 Nisan 2020

androidx.navigation:navigation-*:2.3.0-alpha06 yayınlanır. (2.3.0-alpha06 sürümü bu taahhütleri içerir.)

Yeni Özellikler

  • Derin bağlantı, daha önce mevcut olan app:uri'ye ek olarak app:action ve app:mimeType'yi de destekleyecek şekilde genişletildi. NavController, artık yeni NavDeepLinkRequest sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuna göre gezinmeyi destekliyor. (b/136573074, b/135334841)

API Değişiklikleri

  • Dinamik gezinme hedefleri için Kotlin DSL desteği büyük ölçüde genişletildi. (b/148969800)

Hata Düzeltmeleri

  • İç içe yerleştirilmiş bir başlangıç hedefi kullanıldığında derin bağlantı isteklerinin yoksayılmasına neden olan sorun düzeltildi. (b/154532067)

Sürüm 2.3.0-alpha05

15 Nisan 2020

androidx.navigation:navigation-*:2.3.0-alpha05 yayınlanır. 2.3.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • <include-dynamic> kullanarak dinamik grafik dahil etme için artık app:graphPackage belirtmeniz gerekmez ve bir noktanın ardından applicationId'e moduleName soneki eklenerek varsayılan bir değer kullanılır. graphPackage öğenizi özelleştirmeniz gerekiyorsa artık ${applicationId} yer tutucusu desteklenmektedir. (b/152696768)
  • Navigasyon Grafiği Kotlin DSL'si artık işlemler için bir defaultArguments Map özelliği sunuyor. Bu özellik, Navigasyon XML dosyalarındaki <action> öğelerinde varsayılan değerler ayarlama özelliğini yansıtıyor. (b/150345605)

Hata Düzeltmeleri

  • Gezinme 2.2.2'den itibaren: Etkinliğinizde birden fazla NavHostFragment örneği varsa grafiğinizin başlangıç hedefine derin bağlantı oluştururken oluşan bir IllegalStateException düzeltildi. (b/147378752)

Bağımlılık güncellemeleri

Sürüm 2.3.0-alpha04

18 Mart 2020

androidx.navigation:navigation-*:2.3.0-alpha04 yayınlanır. 2.3.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Navigasyon Kotlin DSL'sinde özellik modülü etkinliği ve parça hedefleri için destek eklendi. (b/148969800)

API Değişiklikleri

  • DynamicExtras sınıfı artık bir oluşturucu kalıbı kullanmıyor ve artık doğrudan oluşturulabiliyor. (aosp/1253671)
  • DynamicActivityNavigator, artık oluşturucuda Activity yerine Context alıyor. (aosp/1250252)

Hata Düzeltmeleri

  • NavigationUI artık boş etiketleri (ör. android:label=”” içeren bir hedef) yoksayıp başlığı doğru şekilde boş bir dize olarak ayarlıyor. (b/148679860)

Bağımlılık Güncellemeleri

  • Gezinme Dinamik Özellikleri yapıları artık Play Core 1.6.5'e bağlıdır. (b/149556401)

Sürüm 2.3.0-alpha03

4 Mart 2020

androidx.navigation:navigation-*:2.3.0-alpha03 yayınlanır. 2.3.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • AppBarConfiguration artık somut DrawerLayout sınıfına güvenmek yerine CustomView 1.1.0-alpha02'te tanıtılan Openable arayüzünü kullanıyor (DrawerLayout, DrawerLayout 1.1.0-alpha04'tan itibaren bu arayüzü uyguluyor). Böylece NavigationUI ile Openable'nin özel uygulamalarını kullanabilirsiniz. (b/129030452)

Hata Düzeltmeleri

  • navigation-common-ktx ProGuard kuralları artık tüm NavArgs örnekleri yerine yalnızca kullanılan NavArgs sınıflarını doğru şekilde saklar. (b/150213558)

Bağımlılık değişiklikleri

  • Gezinme, Core 1.2.0'teki yeni API'lere bağlı olmadığında geliştiricilerin yeni bir bağımlılığa geçmesini zorunlu kılmak için Core 1.2.0'e olan bağımlılığını geri aldı ve artık Core 1.1.0'e bağlı.

Sürüm 2.3.0-alpha02

19 Şubat 2020

androidx.navigation:navigation-*:2.3.0-alpha02 yayınlanır. 2.3.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • NavBackStackEntry artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durum depolamak için uygun bir SavedStateHandle erişmenize olanak tanır. Örnek bir kullanım alanı için Sonuç döndürme bölümüne bakın. (b/79672220)

API Değişiklikleri

  • Mevcut ve önceki hedefler için NavBackStackEntry alımını kolaylaştırmak amacıyla getCurrentBackStackEntry() ve getPreviousBackStackEntry() kolaylık yöntemleri eklendi. (b/79672220)

Hata Düzeltmeleri

  • navigateUp() artık uygulamanızı kendi görev yığınınızda başlatırken mevcut hedefin bağımsız değişkenlerini ve KEY_DEEP_LINK_INTENT önceki hedefe iletir. (b/147456890)

Bağımlılık değişiklikleri

Sürüm 2.3.0-alpha01

5 Şubat 2020

androidx.navigation:navigation-*:2.3.0-alpha01 yayınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.

Yeni özellikler

  • Yeni navigation-testing yapı, bir TestNavHostController sınıfı sağlar. Bu sınıf, gezinmeyi test ederken mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra geri yığınını doğrulamanıza olanak tanıyan bir NavController sahtesi kullanmaya alternatif bir yöntem sunar. (b/140884273)
  • Yeni navigation-dynamic-features-fragment (ve onun geçişli bağımlılığı navigation-dynamic-features-runtime), özellik modüllerinden hedefleri veya gezinme grafiklerinin tamamını (<include-dynamic> aracılığıyla) dahil etmenize olanak tanır. Bu sayede, bu hedeflere giderken isteğe bağlı özellik modüllerinin sorunsuz bir şekilde yüklenmesi sağlanır. Daha fazla bilgi için Özellik modülleri ile gezinme başlıklı makaleyi inceleyin. (b/132170186)

Hata düzeltmeleri

  • Gezinme 2.2.1: Sorgu parametresi içermeyen derin bağlantılar artık sorgu parametrelerini son {argument} öğelerine eklemek veya derin bağlantıyla eşleştirmemek yerine doğru şekilde yoksayar. (b/147447512)
  • Gezinme 2.2.1 bölümünden: DrawerArrowDrawable için navigation-ui ProGuard kuralları, android.enableJetifier=true'in gerekli olmadığından emin olmak için güncellendi. (b/147610424)
  • Gezinme 2.2.1 bölümünde: navigation-common-ktx modülü artık navigation-runtime-ktx ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)

Bağımlılık güncellemeleri

Sürüm 2.2.2

Sürüm 2.2.2

15 Nisan 2020

androidx.navigation:navigation-*:2.2.2 yayınlanır. 2.2.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Etkinliğinizde birden fazla NavHostFragment örneği varsa grafiğinizin başlangıç hedefine derin bağlantı oluştururken yaşanan bir IllegalStateException sorunu düzeltildi. (b/147378752)
  • NavigationUI artık boş etiketleri (ör. android:label=”” içeren bir hedef) yoksayıp başlığı doğru şekilde boş bir dize olarak ayarlıyor. Bu özellik daha önce Navigation 2.3.0-alpha04 sürümünde yayınlanmıştı. (b/148679860)
  • navigation-common-ktx ProGuard kuralları artık tüm NavArgs örnekleri yerine yalnızca kullanılan NavArgs sınıflarını doğru şekilde saklar. Bu özellik daha önce Navigation 2.3.0-alpha03 sürümünde yayınlanmıştı. (b/150213558

Bağımlılık güncellemeleri

Sürüm 2.2.1

Sürüm 2.2.1

5 Şubat 2020

androidx.navigation:navigation-*:2.2.1 yayınlanır. 2.2.1 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Sorgu parametresi içermeyen derin bağlantılar artık sorgu parametrelerini son {argument} öğelerine eklemek veya derin bağlantıyla eşleştirmemek yerine doğru şekilde yoksayar. (b/147447512)
  • DrawerArrowDrawable için navigation-ui ProGuard kuralları, android.enableJetifier=true'nin gerekli olmadığından emin olmak için güncellendi. (b/147610424)
  • navigation-common-ktx modülü artık navigation-runtime-ktx ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)

Bağımlılık güncellemeleri

Sürüm 2.2.0

Sürüm 2.2.0

22 Ocak 2020

androidx.navigation:navigation-*:2.2.0 yayınlanır. 2.2.0 sürümü bu taahhütleri içerir.

2.1.0 sürümünden bu yana yapılan önemli değişiklikler

  • NavBackStackEntry: Artık arka yığıntaki bir hedefin veya gezinme grafiğinin kimliğini ileterek NavController.getBackStackEntry()'yi çağırabilirsiniz. Döndürülen NavBackStackEntry, bu hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıra navigasyon odaklı bir LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() tarafından döndürülenle aynı) ve SavedStateRegistryOwner sağlar.
  • Lifecycle ViewModel SavedState Entegrasyonu: SavedStateViewModelFactory artık by navGraphViewModels() veya NavController.getBackStackEntry() ya da NavController.getViewModelStoreOwner() tarafından döndürülen bir ViewModelStoreOwner ile ViewModelProvider kurucusu kullanılırken kullanılan varsayılan fabrikadır.
  • Derin Bağlantılar İçin Sorgu Parametresi Desteği: Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekler; varsayılan değeri olan veya boş değer alabilecek bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlıdır.
  • İyileştirilmiş Animasyon Desteği: NavHostFragment artık Fragment 1.2.0'daki FragmentContainerView'ı kullanıyor. Bu sayede animasyon z sıralaması sorunları ve parçalara dağıtılan pencere içe eklemeleri düzeltildi.

Sürüm 2.2.0-rc04

18 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc04 yayınlanır. 2.2.0-rc04 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • navigation-ui tarafından kullanılan varsayılan şeffaflaştırma animasyonlarını, 1.2.0-rc04 Kırıntısı'ndaki ayarlanmış şeffaflaştırma animasyonlarıyla eşleşecek şekilde ayarladı. (b/145769814)

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc03 yayınlanır. 2.2.0-rc03 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Sorgu parametreleri ve yolun son kısmı olarak bir bağımsız değişken kullanıldığında, nihai yol bağımsız değişkeninin birden fazla karakterinin ayrıştırılmasını engelleyen derin bağlantı ayrıştırma sorunu düzeltildi. (b/144554689)
  • İsteğe bağlı parametrelerin null yerine "@null" aldığının tespit edildiği derin bağlantı ayrıştırma sorunu düzeltildi. (b/141613546)
  • NavHostFragment, FragmentContainerView ile birlikte kullanıldığında yapılandırmanın değiştirilmesinden sonra artık grafiği doğru şekilde geri yüklemektedir. (b/143752103)

Bağımlılık değişiklikleri

  • Gezinme artık yaşam döngüsü 2.2.0-rc03, yaşam döngüsü ViewModel SavedState 1.0.0-rc03, etkinlik 1.1.0-rc03 ve uygun durumlarda parça 1.2.0-rc03'a bağlıdır.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.navigation:navigation-*:2.2.0-rc02 yayınlanır. 2.2.0-rc02 sürümü bu taahhütleri içerir.

Bağımlılık değişiklikleri

  • Gezinme artık androidx.lifecycle 2.2.0-rc02'e bağlıdır.

Sürüm 2.2.0-rc01

23 Ekim 2019

androidx.navigation:navigation-*:2.2.0-rc01, 2.2.0-beta01 tarihinden bu yana herhangi bir değişiklik içermeden yayınlandı. 2.2.0-rc01 sürümü bu taahhütleri içerir.

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.navigation:navigation-*:2.2.0-beta01 yayınlanır. 2.2.0-beta01 sürümü bu taahhütleri içerir.

Yeni özellikler

  • NavDestination ve alt sınıfları artık hata ayıklama sırasında daha faydalı bilgiler sağlamak için toString()'u geçersiz kılıyor. (b/141264986)

Davranış değişiklikleri

  • Ekstra sorgu parametreleri artık derin bağlantıları eşlerken eşlemenin başarısız olmasına neden olmak yerine yoksayılıyor. (b/141482822)

Hata düzeltmeleri

  • Sorgu parametreleri de belirtilirse derin bağlantının yolundaki bağımsız değişkenlerin yoksayılmasına neden olan sorun düzeltildi. (b/141505755)
  • Activity'daki navArgs() Kotlin uzantısında, ek öğe olmadığında artık daha iyi bir hata mesajı gösteriliyor. (b/141408999)
  • Safe Args tarafından oluşturulan Directions Java sınıfları artık varsayılan değerler içeriyor. (b/141099045)
  • Safe Args tarafından oluşturulan Args Java sınıfları artık varsayılan değerler içeriyor. (b/140123727)
  • Toolbar kullanıldığında NavigationUI, iki üst düzey hedef arasında geçiş yaparken metin değişikliğini artık animasyonlu olarak göstermez. (b/140848160)

Sürüm 2.2.0-alpha03

18 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha03 yayınlanır. 2.2.0-alpha03 sürümü bu taahhütleri içerir.

Davranış değişiklikleri

  • setGraph'u aradıktan sonra setViewModelStore()'ü aradığınızda artık IllegalStateException gösteriliyor. Tüm NavBackStackEntry örneklerinin ViewModel örnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla bu değer, her zaman ilk kurulum kapsamında NavHost tarafından belirlenmelidir. (aosp/1111821)

Hata düzeltmeleri

  • Birden fazla farklı gezinme grafiği kapsamlı ViewModelStore örneğine bağlı ViewModel örnekleri kullanıldığında ortaya çıkan bir ConcurrentModificationException sorunu düzeltildi. (aosp/1112257)

Sürüm 2.2.0-alpha02

5 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekler. Varsayılan değeri olan veya boş değer alabilecek bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlıdır. (b/133273839)
  • Artık arka yığıntaki bir hedefin veya gezinme grafiğinin kimliğini ileterek NavController.getBackStackEntry() işlevini çağırabilirsiniz. Döndürülen NavBackStackEntry, bu hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıra navigasyon odaklı bir LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() tarafından döndürülenle aynı) ve SavedStateRegistryOwner sağlar. (aosp/1101691, aosp/1101710)

Hata düzeltmeleri

  • ViewPager2'a NavHostFragment eklenirken IllegalArgumentException ile başarısız olan sorun düzeltildi. (b/133640271)
  • NavInflater artık getResourceName()'ı gereksiz yere aramaktan kaçınıyor ve enflasyon süresini %40'a varan oranda hızlandırıyor. (b/139213740)

Sürüm 2.2.0-alpha01

7 Ağustos 2019

androidx.navigation:navigation-*:2.2.0-alpha01 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • SavedStateViewModelFactory artık by navGraphViewModels() veya NavController.getViewModelStoreOwner() tarafından döndürülen bir ViewModelStoreOwner ile ViewModelProvider oluşturucusu kullanılırken kullanılan varsayılan fabrikadır. (b/135716331)

API değişiklikleri

  • Gezinme 2.1.0-rc01 bölümünde: 2.1.0-alpha02 sürümünde kullanımdan kaldırılan NavController'teki getViewModelStore() API'si kaldırıldı. (aosp/1091021)

Hata düzeltmeleri

  • NavHostFragment artık FragmentContainerView kullanıyor. Bu sayede animasyon z sıralaması sorunları ve Fragment'lere gönderilen pencere içe eklemeleri düzeltildi. (b/137310379)

2.1.0 sürümü

2.1.0 sürümü

5 Eylül 2019

androidx.navigation:navigation-*:2.1.0 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

2.0.0 sürümünden bu yana yapılan önemli değişiklikler

  • ViewModel'lerin kapsamını gezinme grafiğiyle sınırlama: Artık -ktx kitaplıklarını kullanan Kotlin kullanıcıları için by navGraphViewModels() mülk temsilcisini veya NavController'e eklenen getViewModelStoreOwner() API'yi kullanarak gezinme grafiği düzeyinde kapsama sahip ViewModel'ler oluşturabilirsiniz. Daha fazla bilgi için Hedefler arasında kullanıcı arayüzüyle ilgili verileri paylaşma başlıklı makaleyi inceleyin.
  • İletişim hedefleri: Artık navigate ettiğinizde DialogFragment gösteren <dialog> hedefleri oluşturabilirsiniz. NavHostFragment, varsayılan olarak iletişim kutusu hedeflerini destekler. Daha fazla bilgi için DialogFragment'ten hedef oluşturma başlıklı makaleyi inceleyin.
  • Uri'ye göre gezinme: Artık bir hedefe gitmek için hedefe eklediğiniz <deepLink>'yi kullanan Uri kullanarak navigate yapabilirsiniz. Daha fazla bilgi için Uri kullanarak gezinme bölümüne bakın.
  • NavHostController: Özel bir NavHost oluşturmak için özel olarak kullanılan API'ler NavHostController'e taşındı. Bu sayede, uygulama geliştiriciler NavController'lerini barındırma LifecycleOwner, OnBackPressedDispatcher ve ViewModelStore'e bağlayabilir.

Sürüm 2.1.0-rc01

7 Ağustos 2019

androidx.navigation:navigation-*:2.1.0-rc01 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

API değişiklikleri

  • 2.1.0-alpha02'de kullanıma sunulan ve NavController'te kullanımdan kaldırılan getViewModelStore() API kaldırıldı. (aosp/1091021)

Sürüm 2.1.0-beta02

19 Temmuz 2019

androidx.navigation:*:2.1.0-beta02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Hata düzeltmeleri

  • 2.1.0-beta01 sürümünde yanlışlıkla eklenen jacoco bağımlılığı kaldırıldı. (b/137782950)

Sürüm 2.1.0-beta01

17 Temmuz 2019

androidx.navigation:*:2.1.0-beta01 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • NavigationUI, setupWithNavController() düğmesi Toolbar veya CollapsingToolbarLayout ile kullanıldığında düğmenin kaldırılmasını animasyonlu olarak gösterir. (b/131403621)

Hata düzeltmeleri

  • findNavController() ile aynı kapsayıcıda birden fazla NavHostFragment kullanıldığında ortaya çıkan zamanlama sorunu düzeltildi. (b/136021571)

Sürüm 2.1.0-alpha06

2 Temmuz 2019

androidx.navigation:*:2.1.0-alpha06 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • NavHostFragment tarafından kullanılan app:navGraph özelliği artık navigation-runtime yapısına taşındı. XML aracılığıyla eklenebilen özel gezginler, Gezinme Düzenleyici'nin Ana Bilgisayar paneliyle entegrasyon sağlamak için bu özelliği kullanmalıdır. (b/133880955)

API değişiklikleri

  • NavController API'si için destek sonlandırıldı ve ViewModelStoreOwner döndüren yeni getViewModelStoreOwner() yöntemi kullanıma sunuldu.getViewModelStore() (aosp/987010)
  • <dialog> hedefleri gibi kayan pencere hedeflerinin uygulanması, artık tüm <dialog> hedeflerinin uyguladığı FloatingWindow işaretçi arayüzüne genelleştirildi. Üst uygulama çubuğuyla etkileşime geçmek için kullanılan NavigationUI yöntemleri artık FloatingWindow hedeflerini yok sayıyor. (b/133600763)

Davranış değişiklikleri

  • Gezinme, artık <dialog> hedefi kullanırken durumunu ekranda görünenle senkronize şekilde doğru şekilde tutar. Sonuç olarak, artık Gezinme, <fragment> hedefi gibi iletişim kutusu ve etkinlik olmayan bir hedefe gittiğinizde otomatik olarak <dialog> hedefleri gösterir. (b/134089818)

Hata düzeltmeleri

  • Gezinme, artık derin bağlantıyı işlerken etkinliği yeniden oluştururken oluşan animasyonu bastırarak görsel yanıp sönmeyi düzeltir. (b/130362979)
  • İlk parça eklenirken bir parça gösterilirken gezinme geri yığınının senkronize olmamasına neden olan hata düzeltildi. (b/133832218)

Sürüm 2.1.0-alpha05

5 Haziran 2019

androidx.navigation:*:2.1.0-alpha05 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

API değişiklikleri

  • NavController'teki barındırmayla ilgili API'ler yeniden adlandırıldı ve NavController'nin yeni bir alt sınıfına, NavHostController'e taşındı. (aosp/966091)
  • NavController setHostOnBackPressedDispatcherOwner() yöntemi, NavHostController'nin setOnBackPressedDispatcher() yöntemiyle değiştirildi ve artık bu yöntemi çağırmadan önce setLifecycleOwner() yöntemini çağırmanız gerekiyor. (aosp/965409)
  • NavHostController artık setHostOnBackPressedDispatcherOwner() tarafından daha önce döndürülen NavHostOnBackPressedManager sınıfının yerini alan bir enableOnBackPressed(boolean) yöntemi içeriyor. (aosp/966091)

Hata düzeltmeleri

  • URI'ye göre gezindikten sonra geri yığınının doğru olmaması sorunu düzeltildi. (b/132509387)
  • NavController tarafından otomatik olarak işlenen derin bağlantılar artık yalnızca bir kez tetikleniyor. (b/132754763)

Sürüm 2.1.0-alpha04

16 Mayıs 2019

androidx.navigation:*:2.1.0-alpha04 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Hata düzeltmeleri

  • NavHostFragment, sistem Geri düğmesi etkinliklerini durdururken app:defaultNavHost'ye doğru şekilde uyuyor ve Gezinme 2.1.0-alpha03'de bir gerileme düzeltiliyor. b/132077777
  • DialogFragmentNavigator artık popBackStack() ve navigateUp() işlemlerini doğru şekilde yönetiyor. b/132576764
  • İç içe yerleştirilmiş grafikler arasında tekrar tekrar gezinirken IllegalStateException: unknown destination during restore sorunu düzeltildi. b/131733658

Sürüm 2.1.0-alpha03

7 Mayıs 2019

androidx.navigation:*:2.1.0-alpha03 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Bilinen Sorunlar

  • NavHostFragment, app:defaultNavHost="false" b/132077777 kullanıldığı halde sistem Geri düğmesini engellemeye devam ediyor

Yeni özellikler

  • Artık navigate ettiğinizde DialogFragment gösteren <dialog> hedefleri oluşturabilirsiniz. NavHostFragment varsayılan olarak iletişim kutusu hedeflerini destekler. b/80267254
  • navigate'ü bir kaynak kimliği veya NavDirections örneğiyle çağırmanın yanı sıra artık doğru hedefe gitmek için bir hedefe eklediğiniz <deepLink>'ı kullanan bir Uri aracılığıyla da gezinebilirsiniz. b/110412864

Davranış değişiklikleri

  • NavigationUI tarafından sağlanan varsayılan animasyonlar, etkinliklerin ve parçaların varsayılan animasyon hızıyla eşleşecek şekilde 400 ms'den 220 ms'ye hızlandırıldı. b/130055522

API değişiklikleri

  • NavHostFragment sınıfının createFragmentNavigator() yöntemi kullanımdan kaldırıldı ve işlevi, NavHostFragment sınıfının alt sınıfını oluştururken özel Gezginler eklemenin doğru giriş noktası olduğunu daha net bir şekilde belirtmek için yeni onCreateNavController() yöntemine taşındı. b/122802849
  • Belirli bir Uri'nin ilgili hedef tarafından işlenip işlenemeyeceğini veya NavGraph söz konusu olduğunda navigasyon grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenize olanak tanıyan bir hasDeepLink() yöntemi NavDestination'a eklendi. b/117437718

Hata düzeltmeleri

  • Varsayılan bağımsız değişkenler artık OnDestinationChangedListener örneklerine doğru şekilde iletiliyor. b/130630686
  • NavHostFragment artık OnBackPressedDispatcher kullanarak sistem Geri etkinliklerini durduruyor. Bu sayede, bir Fragment'e döndükten sonra Fragment yaşam döngüsü yöntemlerinde koşullu gezinme yapılırken ortaya çıkan bir sorun düzeltildi. b/111598096
  • Safe Args için, belirtilmemiş bir app:argType içeren android:defaultValue=”@null” artık string bağımsız değişkeni olarak doğru şekilde anlaşılıyor. b/129629192

Sürüm 2.1.0-alpha02

3 Nisan 2019

androidx.navigation:*:2.1.0-alpha02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni özellikler

  • Artık Kotlin kullanıcıları için by navGraphViewModels() mülk temsilcisi aracılığıyla veya NavController'e eklenen getViewModelStore() API'yi kullanarak gezinme grafiği düzeyinde kapsamlı ViewModel'ler oluşturabilirsiniz. b/111614463

API değişiklikleri

  • Artık eşleşen paket adını sınırlamak için bir <activity> hedefine app:targetPackage ekleyebilirsiniz. Paketi kendi uygulama kimliğinizle kısıtlamak için app:targetPackage="${applicationId}" desteklenir. b/110975456

Hata düzeltmeleri

  • <activity> hedefleri için android:name artık şişirme sırasında bir sınıfa ayrıştırılmıyor. Bu sayede dinamik özellikler kullanırken ClassNotFoundExceptions önleniyor. b/124538597

Sürüm 2.1.0-alpha01

19 Mart 2019

Bu, Gezinme 2.1.0'ün ilk alfa sürümüdür.

Bağımlılık değişiklikleri

  • Gezinme artık androidx.core:core:1.0.1 ve androidx.fragment:fragment:1.1.0-alpha05'e bağlıdır. Bu sürümde androidx.legacy:legacy-support-core-utils:1.0.0 bağımlılığı da kaldırıldı. b/128632612

API Değişiklikleri

  • Kaynak kimliği ve paket içeren bir tıklama dinleyicisi oluşturmanın alternatifi olarak yeni bir Navigation.createNavigateOnClickListener(NavDirections) yöntemi eklendi. b/127631752
  • FragmentNavigator.instantiateFragment desteği sonlandırıldı. Varsayılan uygulama artık parçaları örneklemek için FragmentFactory kullanıyor. b/119054429

Hata Düzeltmeleri

  • Bir hedefe bağımsız değişken eklendiğinde gezinme artık null Bundle göndermiyor. Bu sayede, android:defaultValue="@null" kullanılırken yaşanan bir sorun düzeltildi. b/128531879
  • Safe Args artık KotlinPoet 1.1.0'a bağlı. Bu sayede, son derece uzun paket adlarıyla ilgili bir sorun düzeltildi. b/123654948

Sürüm 2.0.0

Sürüm 2.0.0

14 Mart 2019

Navigasyon 2.0.0, 2.0.0-rc02'ten herhangi bir değişiklik olmadan yayınlanır.

Sürüm 2.0.0-rc02

6 Mart 2019

Navigation 2.0.0-rc02, androidx.navigationgrup kimliğiyle yeni yapı taşlarını sağlar ve bağımlılıkları AndroidX eşdeğerleriyle değiştirir.

2.0.0-rc02 sürümünün davranışı, Navigation 1.0.0-rc02 sürümünün davranışıyla aynıdır ve 1.0.0-rc02 sürümünden güncellemek için kodunuzda herhangi bir değişiklik yapmanız gerekmez. Bunun dışında, bağımlılıkları yeni bağımlılıklarla eşleşecek şekilde güncellemeniz gerekir.

Navigation'ın 2.X sürümlerini kullanabilmeniz için projeniz AndroidX'e taşınmış olmalıdır. Navigation 1.0 kararlı sürümü, Destek Kitaplığı bağımlılıkları kullanılan son sürüm olacak. 1.0'dan sonraki tüm geliştirmeler AndroidX'e dayalı olacak ve 2.0 kararlı sürümünü temel alacak.

AndroidX öncesi bağımlılıklar

AndroidX öncesi sürümlerde Navigasyon için aşağıdaki bağımlılıkları ekleyin:

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

Güvenli bağımsız değişkenler için üst düzey build.gradle dosyanıza aşağıdaki sınıf yolu ekleyin

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

Sürüm 1.0.0

Sürüm 1.0.0

14 Mart 2019

Navigasyon 1.0.0, 1.0.0-rc02'ten herhangi bir değişiklik olmadan yayınlanır.

Sürüm 1.0.0-rc02

26 Şubat 2019

Bu, Navigation'ın 1.0.0 kararlı sürümünün ikinci sürüm adayıdır. Bu sürümde çeşitli hata düzeltmeleri yer almaktadır.

Hata Düzeltmeleri

  • Kök grafiğin kimliği yoksa popBackStack()'ün yoksayılmasına neden olan sorun düzeltildib/126251695
  • navigateUp() artık FLAG_ACTIVITY_NEW_TASK olmadan derin bağlantıyı işledikten sonra çağrıldığında uygulamanızın görevine geri dönmeyi doğru şekilde yönetiyor b/126082008
  • ActivityNavigator.applyPopAnimationsToPendingTransition pop-up çıkış animasyonunun doğru şekilde uygulanmamasıyla ilgili sorun düzeltildib/126237567
  • Safe Args tarafından oluşturulan Kotlin kodu artık R sınıfıyla ilişkili paket adındaki in ve fun gibi Kotlin anahtar kelimelerini düzgün bir şekilde kod dışına alıyor. b/126020455

Sürüm 1.0.0-rc01

21 Şubat 2019

Bu, Navigasyon'un 1.0.0 kararlı sürümü için sürüm adayıdır. Bu sürümde bir hata düzeltmesi yer almaktadır.

Hata Düzeltmeleri

  • Fragment'ler ve singleTop gezinme işlemleri kullanılırken yaşanan bir sorun düzeltildi b/124294805

Sürüm 1.0.0-beta02

12 Şubat 2019

Bu sürümde çeşitli küçük iyileştirmeler ve önemli hata düzeltmeleri yer almaktadır.

Yeni Özellikler

  • Artık reference bağımsız değişkenleri için 0android:defaultValue olarak kullanabilirsiniz. b/124248602

Davranış değişiklikleri

  • Tam derin bağlantı eşleşmelerine artık .* veya bağımsız değişken eşleşmeleri içeren derin bağlantılara göre öncelik verilir. b/123969518

Hata Düzeltmeleri

  • popBackStack() ve navigateUp, arka yığıntaki son hedefi pop'larken artık doğru bir şekilde false döndürüyor. Bu sayede, 1.0.0-beta01 sürümünde ortaya çıkan bir gerileme düzeltildi. b/123933201
  • Gezinme, artık kayıtlı örnek durumunun geri yüklenmesinde ClassLoader değerini doğru şekilde ayarlayarak Navigator kayıtlı durumunda veya NavDestination'ye gönderilen bağımsız değişkenlerde özel sınıflar kullanılırken ortaya çıkabilecek sorunları önler. b/123893858
  • Güvenli Arg'ler tarafından oluşturulan NavArgs sınıfları, kaydedilmiş örnek durumundan bir Parcelable[] bağımsız değişkeni geri yüklerken artık kilitlenmiyor. b/123963545
  • Safe Args artık gereksiz şekilde oluşturulan Kotlin sınıflarını düzgün bir şekilde temizliyor. b/124120883

Sürüm 1.0.0-beta01

4 Şubat 2019

Bu, Navigasyon'un ilk beta sürümüdür. Bundan sonra, kritik bir sorun olmadığı sürece Navigasyon API'nin bir sonraki sürüme kadar kararlı kalması beklenir. Bu sürüm, bazı hata düzeltmeleri ve davranış değişiklikleri içerir.

Davranış değişiklikleri

  • Gezinme, artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Güvenli Arg'ler aracılığıyla aynı şekilde ele alınmasını sağlar. Sonuç olarak, yalnızca app:argType="reference" içeren bağımsız değişkenler başka bir kaynağı (ör. @color/colorPrimary) işaret eden bir varsayılan değere sahip olabilir. Referans varsayılan değerini farklı bir app:argType ile kullanmaya çalışmak, gezinme XML'ini ayrıştırırken istisnayla sonuçlanır. b/123551990
  • Safe Args artık Android Gradle Eklentisi 3.3.0'a bağlıdır aosp/888413
  • Safe Args artık Kotlin 1.3.20'e bağlıdır aosp/888414

Hata Düzeltmeleri

  • Güvenli bağımsız değişkenler artık Android Gradle eklentisinin tüm sürümlerinde kitaplık ve özellik modüllerinde kullanılabilir. b/121304903
  • Tek bir popBackStack() işleminin, tek bir hedef yerine bir hedefin tüm kopyalarını arka yığının üst kısmından çıkarmasına neden olan bir gerileme düzeltildi. b/123552990
  • FragmentNavigator durumunun NavController durumuyla senkronizasyonunun bozulmasına ve arka yığının geri yüklenmeye çalışılması sırasında IllegalStateException oluşmasına neden olan sorun düzeltildi. b/123803044
  • ProGuard'ın karartma özelliğiyle birlikte kullanılması durumunda NavigationUI sarmaşık geri okunun görünmemesi sorunu düzeltildi. b/123449431
  • Safe Args tarafından oluşturulan kod artık .OuterClass$InnerClass biçiminde statik bir iç sınıfa işaret eden bir app:argType kullanarak düzgün şekilde işlenmektedir. b/123736741
  • Safe Args tarafından oluşturulan Java kodu artık global işlemleri ve derin iç içe yerleştirilmiş hedefleri düzgün şekilde yönetiyor. b/123347762

Sürüm 1.0.0-alpha11

23 Ocak 2019

Bu, Safe Args ile ilgili bir sorunu gideren 1.0.0-alpha10 sürümü için bir acil durum düzeltme sürümüdür.

Hata Düzeltmeleri

  • Safe Args'in, genel işlemlerle ilişkili Directions sınıfını içe aktaramadığı sorunu düzeltir. b/123307342

Sürüm 1.0.0-alpha10

23 Ocak 2019

Bilinen Sorunlar

  • Safe Args, genel işlemlerle ilişkili Directions sınıfını içe aktaramaz. b/123307342

Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.

Yeni Özellikler

  • Kotlin kullanıcıları artık Activity veya Fragment içinde Safe Args tarafından oluşturulan bir NavArgs sınıfına referans almak için by navArgs() mülk temsilcisini kullanabilir. b/122603367
  • Safe Args artık androidx.navigation.safeargs.kotlin eklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanır. Kotlin kodu, önceki androidx.navigation.safeargs eklentisi aracılığıyla hâlâ kullanılabilen oluşturucu kalıbı üzerinde varsayılan bağımsız değişkenler ve değişmez sınıflar kullanılarak yalnızca Kotlin modülleri için özel olarak oluşturulur. b/110263087

Davranış Değişiklikleri

  • Eşleşen derin bağlantılar artık en fazla eşleşen bağımsız değişkene sahip derin bağlantıya göre ağırlıklandırılıyor. b/118393029
  • NavController numaralı telefondan setGraph() numaralı telefonu aramak artık arka yığını sıfırlayacaktır. b/111450672
  • Bilinmeyen derin bağlantılar artık IllegalStateException hatası oluşturmuyor, ancak yoksayılıyor. Böylece iç içe yerleştirilmiş veya birden fazla NavHostFragment ile ilgili sorunlar düzeltiliyor. b/121340440

Zararlı Değişiklikler

  • Bir etkinliğe pop animasyonları uygulamak için kullanılan NavOptions.applyPopAnimationsToPendingTransition() yöntemi ActivityNavigator yöntemine taşındı. b/122413117
  • Güvenli bağımsız değişkenler artık bağımsız değişken içermeyen işlemler için aynı sınıfların kopyalanmasını önler. Oluşturulan NavDirections sınıflarındaki bağımsız değişken içermeyen yöntemlerin döndürdüğü tür artık NavDirections. b/123233147
  • Safe Args tarafından oluşturulan Directions sınıflarının artık herkese açık bir kurucusu yoktur. Yalnızca oluşturulan statik yöntemlerle etkileşime geçmeniz gerekir. b/123031660
  • Safe Args tarafından oluşturulan NavDirections sınıflarının artık herkese açık bir kurucusu yoktur. Bu sınıflar yalnızca oluşturulan Directions sınıflarındaki statik yöntemler aracılığıyla oluşturulmalıdır. b/122963206
  • NavDirections'un getArguments() alanından döndürülen Bundle artık @Nullable yerine @NonNull olarak işaretleniyor. b/123243957

Hata Düzeltmeleri

  • NavDeepLinkBuilder artık benzersizliği belirlemek için ilettiğiniz bağımsız değişkenleri kullanarak aynı hedefe yönelik birden fazla eşzamanlı PendingIntent'yi doğru şekilde yönetiyor. b/120042732
  • NavController artık iç içe yerleştirilmiş bir NavHostFragment veya arka yığın içeren diğer alt Fragment'ler kullanıldığında popBackStack() işlemlerini doğru şekilde yönetiyor. b/122770335
  • NavigationUI artık Yukarı düğmesinin içerik açıklamasını doğru şekilde ayarlıyor. b/120395362
  • Safe Args tarafından oluşturulan Yönler sınıfları artık bir hedefteki işlemle aynı kimliğe sahip genel işlemleri doğru şekilde yönetiyor. b/122962504
  • Güvenli bağımsız değişkenler tarafından oluşturulan NavDirections sınıfları, equals() doğru değerini döndürdüğünde artık doğru şekilde eşit hashCode() değerlerine sahip. b/123043662
  • FragmentNavigator, NavHostFragment'nin FragmentManager bölümünde özel FragmentTransactions yapmaya çalıştığınızda artık daha iyi bir hata mesajı gösteriyor. Her zaman getChildFragmentManager() kullanmalısınız. b/112927148

Sürüm 1.0.0-alpha09

18 Aralık 2018

Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.

android.arch.navigation:navigation-testing yapısını geliştirmeye devam etmemeyi tercih ettik. NavController'ün dahili testinde faydalı olduğu kanıtlanmış olsa da doğru navigate() çağrılarının yapıldığını doğrulamak için NavController örneğini taklit etme gibi alternatif test stratejilerini önemle tavsiye ederiz. Bu yaklaşım, AndroidDevSummit 2018'deki tek etkinlik konuşmasında ayrıntılı olarak ele alınmıştır. Ayrıca, özellikle Navigasyon ile test etmeyle ilgili ek dokümanlar üzerinde çalışacağız.

Yeni Özellikler

  • menuCategory="secondary" içeren MenuItem'ler, NavigationUI yöntemleriyle kullanıldığında artık arka yığını pop-up olarak göstermeyecektir. b/120104424
  • AppBarConfiguration artık navController.navigateUp() false döndürdüğünde çağrılacak bir yedek OnNavigateUpListener örneği ayarlamanıza olanak tanır. b/79993862 b/120690961

Zararlı Değişiklikler

  • argType="reference" ile <argument> kullanıldığında Gezinme artık referansı ayrıştırmaz, bunun yerine ham kaynak kimliğini sağlar. b/111736515
  • onNavDestinationSelected(), artık varsayılan olarak gezinme grafiğinizin başlangıç hedefine geri dönüyor. Bu sayede setup yöntemleriyle tutarlı hale geliyor. Arka yığının açılmasını önlemek için MenuItem dosyanıza menuCategory="secondary" ekleyin. aosp/852869
  • Oluşturulan Args sınıflarının fromBundle() yöntemleri artık null değer alabilecek Bundle yerine null olmayan bir Bundle alıyor aosp/845616

Hata Düzeltmeleri

  • Parametreler artık derin bağlantılardan her zaman b/110273284 dizesi yerine doğru argType olarak doğru şekilde ayrıştırılıyor
  • Gezinme artık herkese açık kaynaklarını doğru şekilde dışa aktarıyor b/121059552
  • Safe Args artık Android Gradle Eklentisi 3.4 Canary 4 ve sonraki sürümlerle uyumludur b/119662045

Sürüm 1.0.0-alpha08

6 Aralık 2018

Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.

Yeni Özellikler

  • Hedef etiketleri, NavigationUI yöntemleriyle kullanıldığında artık android:label öğenizdeki {argName} örneklerini doğru bağımsız değişkenle otomatik olarak değiştirecek b/80267266
  • Navigasyon artık Destek Kitaplığı 28.0.0 sürümüne bağlıdır b/120293333

Zararlı Değişiklikler

  • OnNavigatedListener, OnDestinationChangedListener olarak yeniden adlandırıldı b/118670572
  • OnDestinationChangedListener artık bağımsız değişkenler Bundle değerini de iletiyor aosp/837142
  • app:clearTask ve app:launchDocument özellikleri ile ilişkili yöntemler kaldırıldı. Arka yığınınızdaki tüm hedefleri kaldırmak için grafiğinizin köküyle birlikte app:popUpTo kullanın. b/119628354
  • ActivityNavigator.Extras artık Builder kalıbı kullanıyor ve Intent.FLAG_ACTIVITY_ işaretlerini ayarlama özelliğini ekliyor aosp/828140
  • NavController.onHandleDeepLink, handleDeepLink olarak yeniden adlandırıldı aosp/836063
  • Alt sınıf oluşturmak için tasarlanmamış birçok sınıf ve yöntem (ör. NavOptions, NavInflater, NavDeepLinkBuilder ve AppBarConfiguration) final olarak değiştirildi aosp/835681
  • Desteği sonlandırılan NavHostFragment.setGraph() yöntemi kaldırıldı aosp/835684
  • Desteği sonlandırılan NavigationUI.navigateUp(DrawerLayout, NavController) yöntemi kaldırıldı. aosp/835684
  • Parça oluşturma işlemi FragmentNavigator'e taşındı. Bu sayede, parça oluşturma işlemini bir FragmentFactory'a devretmek daha kolay hale geldi. b/119054429
  • NavGraphNavigator sınıfının kurucusu artık Context almıyor aosp/835340
  • NavigatorProvider artık bir arayüz yerine sınıftır. getNavigatorProvider() tarafından döndürülen NavigatorProvider işlevselliğini değiştirmedi. aosp/830660
  • NavDestination.navigate() kaldırıldı. Bunun yerine Navigator numaralı telefondan navigate()'ü arayın. aosp/830663
  • Navigator'te önemli bir yeniden yapılanma yapıldı. OnNavigatorNavigatedListener'a ihtiyaç duyulmuyor ve bunun yerine navigate, gidilen NavDestination öğesini döndürüyor.
  • Navigator örnekleri artık NavController'a pop etkinlikleri gönderemez. Geri düğmesine basmaları engellemek ve navController.popBackStack()'ı çağırmak için OnBackPressedCallback kullanabilirsiniz. aosp/833716

Hata Düzeltmeleri

  • popUpTo artık hedef bir <navigation> öğesi olduğunda tutarlı bir şekilde çalışıyor b/116831650
  • İç içe yerleştirilmiş grafikler kullanılırken IllegalArgumentException ile sonuçlanan bazı hatalar düzeltildi b/118713731 b/113611083 b/113346925 b/113305559
  • <activity> hedeflerinin dataPattern özelliği artık toString() b/120161365 çağrısını yaparak dize olmayan bağımsız değişkenlerden bağımsız değişkenleri dolduracak

Safe Args

  • Safe Args, enum değerleri dahil olmak üzere serileştirilebilir nesneleri destekler. Enum türleri, sınıf adı olmadan enum değişmezi kullanılarak (ör.app:defaultValue="READ") varsayılan bir değer ayarlayabilir. b/111316353
  • Güvenli bağımsız değişkenler, desteklenen tüm türlerin dizilerini destekler b/111487504
  • Güvenli bağımsız değişkenler artık kaynak dizinlerinin alt klasörlerini yoksayarb/117893516
  • Safe Args, uygun durumlarda @Override ek açıklamaları ekler b/117145301

Sürüm 1.0.0-alpha07

29 Ekim 2018

Yeni Özellikler

  • Yeni AppBarConfiguration sınıfı, hangi hedeflerin üst düzey hedefler olarak kabul edileceğini özelleştirmenize olanak tanır. Ayrıntılar için güncellenmiş dokümanları inceleyin. b/117333663
  • Artık grafiğinizin başlangıç hedefine bağımsız değişkenler iletebilirsiniz b/110300470
  • Derin bağlantılar artık nokta, kısa çizgi ve artı işareti içeren özel şemaları desteklemektedir. b/112806402

Zararlı Değişiklikler

  • navigation-testing-ktx modülü navigation-testing artifact'e dahil edildi ve artık yayınlanmayacak.
  • navigation-testing yapı artık Kotlin standart kitaplığına bağımlı. API, Kotlin kurallarına daha uygun olacak şekilde değiştirildi ancak Java ile yazılmış testlerde kullanmaya devam edebilirsiniz.
  • Meta veri manifest'ine kayıtlı gezinme grafikleri artık desteklenmiyor. b/118355937
  • İşlemler artık <activity> hedeflerine eklenemez. aosp/785539

Hata Düzeltmeleri

  • Derin bağlantılar artık sorgu parametrelerini doğru şekilde ayrıştırıyor. b/110057514
  • Etkinlik hedefleri artık tüm giriş ve çıkış animasyonlarına doğru şekilde uygulanıyor. b/117145284
  • Özel Gezginler kullanılırken yapılandırma değişikliklerinden sonra oluşan kilitlenme düzeltildi. b/110763345

Safe Args

  • Güvenli bağımsız değişkenler artık Android Gradle eklentisi 3.2.1'e sabit bir bağımlılığa sahiptir. b/113167627
  • Artık iç sınıflar için yönler oluşturulabilir. b/117407555
  • <include> grafiği için yol tarifi oluşturmayla ilgili bir sorun düzeltildi. b/116542123

Sürüm 1.0.0-alpha06

20 Eylül 2018

Yeni Özellikler

API Değişiklikleri

  • Kırılma Değişikliği: Gezgin navigate() yöntemi artık bir Navigator.Extras parametresi alıyor.
  • NavController'ın getGraph() yöntemi artık NonNull b/112243286

Hata Düzeltmeleri

  • NavigationUI.setupWithNavController(), ayrı hedeflerden gelen görünümlerle birlikte kullanıldığında artık görünümleri sızdırmıyor b/111961977
  • Navigator onSaveState() artık yalnızca bir kez çağrılıyor b/112627079

Safe Args

  • Gezinme hedefi yol tarifi sınıfları artık varsa üst öğelerinin yol tarifi sınıfını genişletir b/79871405
  • Directions ve Args sınıfları artık kullanışlı bir toString() uygulamasına sahip b/111843389

Sürüm 1.0.0-alpha05

10 Ağustos 2018

Hata Düzeltmeleri

  • Yanlış geri yığın davranışına neden olan bir hata düzeltildi. b/111907708
  • Oluşturulan Arg sınıflarının equals() sınıfında bir hata düzeltildi. b/111450897
  • Safe Args'de derleme hatası düzeltildi. b/109409713
  • Kaynak tanımlayıcılardan Java adlarına geçiş sorununu düzeltme b/111602491
  • Safe Args eklentisinde boşluk değeriyle ilgili hata mesajları düzeltildi.
  • Eksik boşluk değeri notlarını ekleyin.

Sürüm 1.0.0-alpha04

19 Temmuz 2018

Gezinme 1.0.0-alpha04 ve ilişkili Safe Args gradle eklentisi, çeşitli API değişiklikleri, davranış değişiklikleri ve hata düzeltmeleri içerir.

API / Davranış Değişiklikleri

  • NavHostFragment, her zaman mevcut Fragment'i birincil gezinme fragment'i olarak ayarlar. Böylece, dış NavController oluşturulmadan önce alt fragment yöneticilerinin oluşturulmasını sağlar b/111345778

Safe Args

  • Zararlı Değişiklik: ConstraintLayout 2.0.0-alpha1 b/111110548 gibi diğer kitaplıklarla çakışmayı önlemek için app:type, app:argType olarak değiştirildi
  • Safe Args'den gelen hata mesajları artık tıklanabilir b/111534438
  • Args sınıfları artık NonNull özelliklerinin aslında null olmadığını onaylıyor b/111451769
  • NavDirections ve Args tarafından oluşturulan sınıflara b/111455455 b/111455456 ek NonNull ek açıklamaları eklendi

Hata Düzeltmeleri

  • Bir parça hedefine derin bağlantı oluşturduktan sonra sistem geri düğmesiyle ilgili sorun düzeltildi b/111515685

Sürüm 1.0.0-alpha03

12 Temmuz 2018

Gezinme 1.0.0-alpha03 ve ilişkili Safe Args gradle eklentisi, çeşitli API değişiklikleri, davranış değişiklikleri ve hata düzeltmeleri içerir.

API / Davranış Değişiklikleri

  • Araç çubuğu için NavigationUI.setupWithNavController yöntemi eklendi b/109868820
  • CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
  • popBackStack(), geri yığın boş olduğunda veya verilen hedef kimliği geri yığınta olmadığında artık yanlış değerini döndürüyor b/110893637
  • FragmentNavigator artık FragmentManager durumu kaydettikten sonra gezinme işlemlerini yoksuyor ve "onSaveInstanceState işlevi çalıştıktan sonra bu işlem yapılamaz" istisnalarını önlüyor b/110987825

Safe Args

  • Kırılma Değişikliği: İşlem ve bağımsız değişken adlarındaki alfanümerik olmayan karakterler, ilgili NavDirections yöntem adlarında büyük/küçük harf kullanımına göre değiştirilecek
    • Örneğin, DemoController.index setDemoControllerIndex b/79995048 olur.
    • Örneğin, action_show_settings actionShowSettings b/79642240 olur.
  • Kırılma Değişikliği: Argümanlar artık varsayılan olarak boş olmayan olarak kabul edilir. Dize ve paketlenebilir bağımsız değişkenlerde boş değerlere izin vermek için app:nullable="true" b/79642307 ekleyin.
  • Artık "123L" biçiminde defaultValues ile app:type="long" kullanabilirsiniz b/79563966
  • app:type için tam nitelikli sınıf adı kullanılarak paketlenebilir bağımsız değişkenler artık desteklenmektedir. Yalnızca "@null" b/79563966 varsayılan değeri desteklenir.
  • Args sınıfları artık equals() ve hashCode() işaretlemelerini uyguluyor b/79642246
  • Safe Args eklentisi artık kitaplık projelerine uygulanabilir b/80036553
  • Safe Args eklentisi artık özellik projelerine uygulanabilir b/110011752

Hata Düzeltmeleri

  • Fragment yaşam döngüsü yöntemleri sırasında gezinirken karşılaşılan sorunlar düzeltildi b/109916080
  • İç içe yerleştirilmiş grafiklerde birden fazla kez gezinirken yaşanan sorunlar düzeltildi b/110178671
  • setPopUpTo işlevinin grafikteki ilk hedefle (b/109909461) kullanılmasıyla ilgili sorunlar düzeltildi.
  • Tüm app:defaultValue değerlerinin dize olarak iletilmesine neden olan sorun düzeltildi b/110710788
  • Android Gradle Eklentisi 3.2 Beta 01 ile birlikte sunulan aapt2, artık Gezinme XML dosyalarındaki her android:name özelliği için saklama kuralları ekliyor b/79874119
  • Varsayılan FragmentNavigator değiştirilirken bellek sızıntısı düzeltildi b/110900142

Sürüm 1.0.0-alpha02

7 Haziran 2018

Davranış Değişiklikleri

  • FragmentNavigator artık setReorderingAllowed(true) kullanıyor. b/109826220

  • Gezinme artık derin bağlantı URL'lerinden ayrıştırılan bağımsız değişkenleri URL'den kodunu çözer. b/79982454

Hata Düzeltmeleri

  • Fragment yaşam döngüsü yöntemlerinden navigate çağrılırken oluşan bir IllegalStateException hatası düzeltildi. b/79632233

  • Gezinme, animasyon kullanırken titremeyi düzeltmek için artık Destek Kitaplığı 27.1.1'i kullanıyor. b/80160903

  • Alt fragman olarak defaultNavHost="true" kullanıldığında bir IllegalArgumentException düzeltildi. b/79656847

  • NavDeepLinkBuilder kullanılırken ortaya çıkan bir StackOverflowError sorunu düzeltildi. b/109653065

  • İç içe yerleştirilmiş bir grafiğe geri giderken karşılaşılan IllegalArgumentException sorunu düzeltildi. b/80453447

  • launchSingleTop kullanılırken örtüşen Fragmanlar ile ilgili sorun düzeltildi. b/79407969

  • Gezinme artık iç içe yerleştirilmiş grafikler için doğru sentetik arka yığın oluşturuyor. b/79734195

  • NavigationUI, MenuItem olarak iç içe yerleştirilmiş bir grafik kullanıldığında artık doğru öğeyi vurgulayacaktır. b/109675998

API Değişiklikleri

  • İşlemler için clearTask özelliği ve NavOptions'daki ilişkili API'nin desteği sonlandırıldı. b/80338878

  • İşlemler için launchDocument özelliği ve NavOptions'teki ilişkili API'nin desteği sonlandırıldı. b/109806636

Sürüm 1.0.0-alpha01

8 Mayıs 2018

Gezinme, uygulama içi gezinme oluşturmak için bir çerçeve sağlar. Bu ilk sürüm 1.0.0-alpha01.