Gezinme

Navigation, hedefler Fragment, Activity veya başka bileşenler olarak uygulanmış olsa da tutarlı bir API sağlayan, Android uygulamasındaki "hedefler" arasında gezinmeye yönelik bir çerçevedir.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
23 Eylül 2026 2.10.2 - - -

Bağımlılıkları bildirme

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

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Groovy

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.10.2"

  // 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.10.2"

  // 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

Projenize Safe Args'ı eklemek için üst düzey build.gradle dosyanıza aşağıdaki classpath öğesini ekleyin:

Groovy

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

Kotlin

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

Ayrıca, mevcut iki eklentiden birini de uygulamanız gerekir.

Java veya karma Java ve Kotlin modüllerine uygun Java dili kodu oluşturmak için uygulamanızın ya da modülünüzün build.gradle dosyasına şu satırı ekleyin:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Alternatif olarak, yalnızca Kotlin modüllerine uygun Kotlin kodu oluşturmak için şunu ekleyin:

Groovy

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

Kotlin

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

AndroidX'e taşıma işlemine göre gradle.properties dosyanızda android.useAndroidX=true olmalıdır.

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

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

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

Sürüm 2.10.2

23 Eylül 2026

androidx.navigation:navigation-*:2.10.2 iptal edilir. 2.10.2 sürümü bu commit'leri içerir.

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

  • androidx.lifecycle bağımlılıkları 2.10.0 sürümüne güncellendi. I4505a9f9a

Sürüm 2.10.1

9 Eylül 2026

androidx.navigation:navigation-*:2.10.1 iptal edilir. 2.10.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • NavHost animasyonları atladığında artık beklenmedik kırpmaları önlemek için sizeTransform de atlanan animasyonun bir parçası olarak kabul edilecek. (I4f995, b/550924680)

Sürüm 2.10.0

26 Ağustos 2026

androidx.navigation:navigation-*:2.10.0 iptal edilir. 2.10.0 sürümü bu commit'leri içerir.

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

  • NavHost artık, tahmin edilen geri gitme hareketi sırasında özel geçişe izin vermek için predictivePopEnterTransition ve predictivePopExitTransition parametrelerini kabul eden bir aşırı yükleme sağlar.
  • handleDeepLink, yalnızca tanınan derin bağlantıların işlenmesini sağlamak için değiştirildi. Diğer tüm bağlantılar yoksayılacak. Bu durum uygulamanızda hataya neden olursa gezinme grafiğinizde tanımlanan derin bağlantılar aracılığıyla gezinmeye geçmeyi düşünebilirsiniz. Robolectric testleri için güvenilir bir pakete setPackage yöntemini kullanmanız gerekebilir.
  • Navigasyon etkinlikleri sırasında geri yığın anlık görüntülerini göstermek için NavBackStackEntryInfo eklendi. Bu sayede daha zengin özel tahmin edilen geri gitme animasyonları etkinleştirilir.

Ek Platform Desteği

  • navigation-common, navigation-runtime ve navigation-testing modüllerine desktop, linux, macOS, iOS, javascript, WASM, watchos ve tvos desteği eklendi.

Sürüm 2.10.0-rc01

12 Ağustos 2026

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

Davranış değişiklikleri

  • Navigasyon için minimum SDK, AndroidX kitaplıklarının geri kalanıyla birlikte API 24'e taşındı. (I972da, b/474169350)

Sürüm 2.10.0-beta01

29 Temmuz 2026

androidx.navigation:navigation-*:2.10.0-beta01 iptal edilir. 2.10.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Gezinme etkinlikleri sırasında arka plandaki anlık görüntüleri göstermek için NavBackStackEntryInfo'ı kullanıma sunuyoruz. Bu sayede daha zengin özel tahmin edilen geri gitme animasyonları etkinleştirilir. (Icb3b8)

Sürüm 2.10.0-alpha06

1 Temmuz 2026

androidx.navigation:navigation-*:2.10.0-alpha06 iptal edilir. 2.10.0-alpha06 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Yalnızca tanınan derin bağlantıların işlenmesini sağlamak için handleDeepLink değiştirildi (Id4fe3, b/509640056)
  • Birleştirilebilir işlevleri genişletmek için parça bağımsız değişkeni yerine hedefteki tam nitelikli adı kullanmak üzere ComposableFragment değiştirildi. (I65ded, b/509640586)
  • FragmentNavigator'da, işlemler optimize edildiğinde meşru Fragment'ların IllegalArgumentException hatası vermesine neden olan kilitlenme sorunu düzeltildi. (I093b0, b/340202276)
  • Parçalarla gezinme özelliğinde, grafiğin programatik olarak ayarlanmasının düzgün şekilde geri yüklenememesine neden olan hata düzeltildi. (I41251, b/321147435)

Sürüm 2.10.0-alpha05

19 Mayıs 2026

androidx.navigation:navigation-*:2.10.0-alpha05 iptal edilir. 2.10.0-alpha05 sürümü bu commit'leri içerir.

Sürüm 2.10.0-alpha04

6 Mayıs 2026

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

Hata Düzeltmeleri

  • Tahmin edilen geri gitme hareketinin neden olduğu olası NavHost'lara karşı koruma sağlamak için NullPointerException iyileştirildi. (Ie36c6, b/500945998)

Sürüm 2.10.0-alpha03

22 Nisan 2026

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

Hata Düzeltmeleri

  • Compose compileSdk, API 37'ye güncellendi. Bu nedenle, Compose kullanılırken minimum AGP sürümü 9.2.0 olmalıdır. (Id45cd, b/413674743)

Harici Katkı (External Contribution)

  • watchos ve tvos hedefleri navigation-common, navigation-runtime ve navigation-testing modüllerine eklendi (I60e46)
  • DefaultNavTransitions herkese açık hale getirme (Ide293)

Sürüm 2.10.0-alpha02

25 Mart 2026

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

Sürüm 2.10.0-alpha01

11 Mart 2026

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

Yeni Özellikler

  • NavHost artık, tahmin edilen geri gitme hareketi sırasında özel geçişe izin vermek için predictivePopEnterTransition ve predictivePopExitTransition parametrelerini kabul eden bir aşırı yükleme sağlar. (Iac9b0, b/478294569)

Minimum SDK Güncellemesi

Harici Katkı (External Contribution)

  • navigation:navigation-common, navigation:navigation-runtime ve navigation:navigation-testing artık Android'in yanı sıra masaüstü, Linux, macOS, iOS, JavaScript ve WASM'yi de destekliyor. Thanks Konstantin Tskhovrebov!(I035d9, Iec624, I1615d)

Sürüm 2.9

Sürüm 2.9.8

22 Nisan 2026

androidx.navigation:navigation-*:2.9.8 iptal edilir. 2.9.8 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Tahmin edilen geri gitme hareketinin neden olduğu olası NavHost'lara karşı koruma sağlamak için NullPointerException iyileştirildi. (Ie36c6, b/500945998)

Sürüm 2.9.7

28 Ocak 2026

androidx.navigation:navigation-*:2.9.7 iptal edilir. 2.9.7 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme SafeArgs, Google hizmetleriyle birlikte kullanılırken artık yapılandırma önbelleğe alma sorunlarına neden olmuyor. (I57cda, b/458071608)
  • Gezinme testinde SavedStateHandle oluşturucusunun List<String> kodunu çözmemesi sorunu düzeltildi. (I26aac,b/454180135)

Sürüm 2.9.6

5 Kasım 2025

androidx.navigation:navigation-*:2.9.6 iptal edilir. 2.9.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation SafeArgs eklentisi, tüm AGP 8.4.2 ve sonraki sürümlerle uyumlu olmasını sağlayacak modern Android Gradle eklentisi API'lerine taşındı. Bu değişiklikler sonucunda, eklenti tarafından oluşturulan dosyaların çıkış dizini, AGP tarafından sağlanan varsayılan konuma değiştirildi. (Ie09d6, I7c431, b/203559535, b/293920476, b/269532448, b/443261197)
  • Gezinme SafeArgs eklentisi, AGP 9.0.0-alpha04+ ile kullanıldığında artık useAndroidX özelliğinin ayarlanmasını gerektirmeyecek. (I6c3a4, b/444746731, b/443106400)

Sürüm 2.9.5

24 Eylül 2025

androidx.navigation:navigation-*:2.9.5 iptal edilir. 2.9.5 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Safe Args artık AGP 9.0'ın yerleşik Kotlin desteğini işleyebilir. (I1d9d76)

Bağımlılık Güncellemesi

  • Navigation Safe Args eklentisi artık Android Gradle eklentisinin 8.4.2 sürümüne bağlıdır. (b/431847270, I5932a)

Sürüm 2.9.4

10 Eylül 2025

androidx.navigation:navigation-*:2.9.4 iptal edilir. 2.9.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • İşleyici, NavHost geçişinde devre dışı bırakıldıktan sonra bir kare ortasında tahmin edilen geri gitme etkinliği teslim edildiğinde kilitlenmeyi önleme. (I5667c, b/384186542)

Sürüm 2.9.3

30 Temmuz 2025

androidx.navigation:navigation-*:2.9.3 iptal edilir. 2.9.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • NavController'da, OnDestinationChangedListeners kullanılırken ConcurrentModificationException'a neden olan hata düzeltildi. (If7406, b/417784831)
  • navigate(uri, navOptions,navigationExtras) kullanılırken ekstraların yoksayıldığı hata düzeltildi. (I67fb7, b/430336813)

Sürüm 2.9.2

16 Temmuz 2025

androidx.navigation:navigation-*:2.9.2 iptal edilir. 2.9.2 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Girişin üzerindeki iletişim kutusu kapatıldığında girişin devam etmemesiyle ilgili sorun düzeltildi (Idb20e, b/418746335).
  • Özel NavTypes kullanılırken tür güvenli rotalarla SavedStateHandle test edilirken oluşan MissingFieldException hatası düzeltildi. (I2f843, b/421002511)

Sürüm 2.9.1

2 Temmuz 2025

androidx.navigation:navigation-*:2.9.1 iptal edilir. 2.9.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Tek bir üst kullanılarak oluşturulan NavEntries öğelerinin Lifecycle.State içinde hiçbir zaman CREATED durumunun ötesine geçmemesine neden olan sorun düzeltildi. (I043ba, b/421095236)

Sürüm 2.9.0

7 Mayıs 2025

androidx.navigation:navigation-*:2.9.0 iptal edilir. 2.9.0 sürümü bu commit'leri içerir.

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

  • Navigation Safe Args işlemleri artık @CheckResult ek açıklamasıyla oluşturuluyor. Böylece bu işlemlerin kullanılması sağlanıyor.

SupportingPane Interface

  • Özel Gezginler artık hedeflerini, SupportingPane arayüzünü uygulayan hedefler olarak işaretleyebilir. Bu, NavController'a bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüzü kullanarak birden fazla hedefi aynı anda RESUMED yapabilirsiniz.

Compose Kotlin Multiplatform

  • Gezinme artık Intent yerine NavDeepLinkRequest alan bir yeni ortak NavController.handleDeepLink() işlevi sunuyor. Bu sayede Android dışındaki platformlar, derin bağlantıları düzgün şekilde işleyebilir. Teşekkürler Konstantin Tskhovrebov!
  • Navigasyon artık diğer platformlarda Android'in URI'si için uyumlu bir API olan yeni bir ortak ayrıştırıcı işlevi NavUri sunuyor. Bu sayede, platformdan bağımsız bir şekilde URI oluşturmak mümkün olur. Teşekkürler Konstantin Tskhovrebov!

Type Safe işlevleri

  • Daha önce yalnızca reified yöntemleriyle erişilebilen tür güvenli API'ler (ör. composable<YourScreen> artık doğrudan bir KClass örneği alan, somutlaştırılmamış sürümlere sahip.
  • Gezinme tip güvenliği artık rota olarak veya rotanın bağımsız değişken türü olarak değer sınıflarını destekliyor.

Sürüm 2.9.0-rc01

23 Nisan 2025

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

Hata Düzeltmeleri

  • Bu hedefler aslında çalışmadığı için Jetpack Navigation'dan Android dışı tüm platform hedefleri kaldırıldı. Artık farklı platformlar için kısa açıklamalar sağlanmaktadır.(I2877d)

Sürüm 2.9.0-beta01

9 Nisan 2025

androidx.navigation:navigation-*:2.9.0-beta01 iptal edilir. 2.9.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • parseStringAsNavUri'nın ortak API'si, bir dize alan NavUri fabrika işlevi olarak değiştirildi. (I4db6e, b/403616316)

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

  • Bu kitaplık artık Kotlin 2.0 dil düzeyini hedefliyor ve KGP 2.0.0 veya daha yeni bir sürüm gerektiriyor. (Idb6b5)

Sürüm 2.9.0-alpha09

26 Mart 2025

androidx.navigation:navigation-*:2.9.0-alpha09 iptal edilir. 2.9.0-alpha09 sürümü bu commit'leri içerir.

Yeni Özellikler

  • navigation-testing modülü artık Android'in yanı sıra masaüstü, Linux, macOS ve iOS'te de destekleniyor. (I2b770, b/398265336)
  • NavType artık Android'in yanı sıra masaüstü, Linux, macOS ve iOS'te de destekleniyor. (I297d8)

Sürüm 2.9.0-alpha08

12 Mart 2025

androidx.navigation:navigation-*:2.9.0-alpha08 iptal edilir. 2.9.0-alpha08 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme 2.8.9: Gezinme 2.8.8'de bulunan ve eşleşme olarak kabul edilmesi için derin bağlantı isteği veya amacının tüm alanlarıyla tam olarak eşleşen bir derin bağlantı gerektiren regresyon düzeltildi. Bu durum, kısmi alan eşleşmeleri içeren ve başka eşleşme içermeyen derin bağlantıların artık çalışmamasına neden oldu. (Ie5e36, b/399826566)

Harici Katkı (External Contribution)

  • NavUri oluşturmak için yeni ortak ayrıştırıcı işlevi. Teşekkürler Konstantin Tskhovrebov! (If0a6a)

Sürüm 2.9.0-alpha07

26 Şubat 2025

androidx.navigation:navigation-*:2.9.0-alpha07 iptal edilir. 2.9.0-alpha07 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Kapsayıcı olmayan pop ile saveState denenmesi durumunda, geri yükleme sırasında kilitlenmeye neden olabilecek boş bir savedState ile sonuçlanmasına neden olan sorun düzeltildi. (I9f3e8, b/395091644)
  • Navigation 2.8.8'den itibaren: Bir derin bağlantı ve derin bağlantı isteğinin uri, işlem ve mime üzerinde tam olarak eşleşmesi gerektiği NavDeepLink eşleşme sorunu düzeltildi. Yalnızca bir veya iki alan eşleşiyorsa artık eşleştirme yapılamaz. (I3b029, b/395712033)
  • Navigation 2.8.8 sürümünde: Joker karakterli yolların eklenen derin bağlantıyla eşleşmemesine neden olan hata düzeltildi (I7ea92, b/389970341).

Harici Katkı (External Contribution)

  • Gezinme için ortak olan, gezinme sırasında çalışan ve gezinme için oluşturulan API'leri ortak platforma ayıklayın. Teşekkürler Konstantin Tskhovrebov! (I1e626, Ica76f, Idf479)

Bilinen Sorunlar

  • b/395712033 numaralı sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya Intent ile aynı alanlara sahip olması yanlışlıkla zorunlu tutuluyor. Derin bağlantıların yalnızca sahip oldukları alanlarla eşleşmesi gerekir ve dahil edilmeyen alanlar yoksayılmalıdır. Bu sorun, b/399826566 kapsamında sonraki bir sürümde düzeltilmiştir.

Sürüm 2.9.0-alpha06

12 Şubat 2025

androidx.navigation:navigation-*:2.9.0-alpha06 iptal edilir. 2.9.0-alpha06 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Navigasyon güvenli bağımsız değişken işlemleri artık @CheckResult ek açıklamasıyla oluşturuluyor. Böylece bu işlemlerin kullanılması sağlanıyor. (I14d4c, b/356323084)

Hata Düzeltmeleri

  • NavController içinde, backStack durumları bir listeye kaydedildiğinde bir diziye yanlış şekilde geri yüklenmeye çalışılmasına neden olan hata düzeltildi. (Idfb9b)
  • Navigation 2.8.7: Navigation Safe Args artık composable hedeflerini destekliyor. (I35320, b/362791955)

Sürüm 2.9.0-alpha05

29 Ocak 2025

androidx.navigation:navigation-*:2.9.0-alpha05 iptal edilir. 2.9.0-alpha05 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Compose kullanılırken beklenmedik bir ölçek animasyonuna neden olan sorun düzeltildi. (I480f4, b/353294030)
  • Gezinme 2.8.6: XML aracılığıyla sağlanan NavDestination etiketleri, özel NavType mantığına uyulduğundan emin olmak için NavType.get üzerinden ayrıştırılır. (I7ec2f, b/388100796)
  • Gezinme 2.8.6: dataPattern ile etkinliğe giderken ActivityNavigator artık arg değerini bağımsız değişkenin NavType ile kodlamaya çalışacak. (I16376, b/383616432)
  • Navigation 2.8.5: Navigation Compose kullanılırken ve mevcut animasyonun sona erdiği karede gezinme işlemi çağrılırken beklenmedik bir ölçek animasyonuna neden olan sorun düzeltildi. (I26cb1, b/353294030)

Sürüm 2.9.0-alpha04

11 Aralık 2024

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

Yeni Özellikler

Aşağıdaki tabloda, reified ve KClass API'leri verilmiştir.

gerçekleştirilmiş KClass
composable<TestClass> { } composable(TestClass::class) { }
navigation<NestedGraph>(startDestination = TestClass::class) navigation(route = NestedGraph::class, startDestination = TestClass::class)
dialog<TestClass> {} dialog(TestClass::class) {}
navDeepLink<TestClass>(baseUri) navDeepLink(TestClass::class, baseUri)
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri)
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { }
navController.getBackStackEntry<TestClass>() navController.getBackStackEntry(TestClass::class)
navController.popBackStack<TestClass>(true) navController.popBackStack(TestClass::class, true)
navController.clearBackStack<TestClass>() navController.clearBackStack(TestClass::class)
NavOptions.setPopUpTo<TestClass>() NavOptions.setPopUpTo(TestClass::class)
navOptions { popUpTo<TestClass> {...} } navOptions { popUpTo(TestClass::class) {...} }
NavGraph.setStartDestination<TestClass>() NavGraph.setStartDestination(TestClass::class)
NavGraph.findNode<TestClass>() NavGraph.findNode(TestClass::class)
backStackEntry.toRoute<TestClass>() backStackEntry.toRoute(TestClass::class)
savedStateHandle.toRoute<TestClass>() savedStateHandle.toRoute(TestClass::class)

API Değişiklikleri

  • Tür güvenliği için Kotlin'e özgü NavGraph.setStartDestination aşırı yüklemesi, Java kaynaklarından gizlenir. (Ic640c, b/364634035)

Hata Düzeltmeleri

  • Gezinme 2.8.5: Geri yığın 1 girişe indirildiğinde ve aynı karede bir sistem geri işlemi tetiklendiğinde NavHost'ın PredictiveBackHandler içinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407)
  • Navigasyon 2.8.5 bölümünde: Bir grafiğin startDestination güncellenirken NavDestination NullPointerException sorunu düzeltildi. (I99421, b/361560785)

Harici Katkı (External Contribution)

  • Gezinme 2.8.5: Gezinme türü güvenliği artık özel NavType gerektirmeden bir rotanın bağımsız değişken türü olarak List<Enum> öğesini destekliyor. Teşekkürler Csaba Kozák! (GH-725, b/375559962)

Sürüm 2.9.0-alpha03

13 Kasım 2024

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

Yeni Özellikler

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

Hata Düzeltmeleri

  • Bir NavBackStackEntry öğesine eklenmiş bir LifecycleObserver, kapsayan Etkinlik veya Parça gibi ana makine LifecycleOwner yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilen ConcurrentModificationException düzeltildi. (Ia9494)

Sürüm 2.9.0-alpha02

30 Ekim 2024

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

Harici Katkı (External Contribution)

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

Sürüm 2.9.0-alpha01

16 Ekim 2024

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

Yeni Özellikler

  • Özel Gezginler artık hedeflerini, SupportingPane arayüzünü uygulayan yerler olarak işaretleyebilir. Bu arayüz, NavController'a bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüzü kullanarak birden fazla hedefi aynı anda RESUMED yapabilirsiniz. (Id5559)
  • Gezinme 2.8.3: navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontroller, @Serializable ile doğru şekilde açıklama eklenmemiş tür güvenli rotaların belirlenmesine yardımcı olur. Bu kontrol, tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • Navigation 2.8.3: navigation-common, navigation-runtime ve navigation-compose modüllerine yönelik yeni lint kontrolleri eklendi. Bu kontroller, @Keep ile doğru şekilde açıklama eklenmemiş Enum bağımsız değişkenlerine sahip tür açısından güvenli rotaları belirlemeye yardımcı olur. 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 kullanmaya çalışıldığında artık IllegalStateException hatası oluşacak. (I520da, b/369616172)

Hata Düzeltmeleri

  • Enum sınıfı küçültülmüş derlemelerde silinirse @Keep ek açıklamasının kullanılmasını önermek için Enum sınıfı bulunamadı istisnasını güncelleyin. (I90e79, b/358137294)

Bilinen Sorunlar

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

Sürüm 2.8

Sürüm 2.8.9

12 Mart 2025

androidx.navigation:navigation-*:2.8.9 iptal edilir. 2.8.9 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme 2.8.8'de bulunan ve eşleşme olarak kabul edilmesi için derin bağlantı isteği veya intent'in tüm alanlarıyla tam olarak eşleşmesi gereken bir regresyon düzeltildi. Bu durum, kısmi alan eşleşmeleri içeren ve başka eşleşme içermeyen derin bağlantıların artık çalışmamasına neden oldu. (Ie5e36, b/399826566)

Sürüm 2.8.8

26 Şubat 2025

androidx.navigation:navigation-*:2.8.8 iptal edilir. 2.8.8 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Joker karakter yolları içeren rotaların, eklenen derin bağlantıyla eşleşmemesine neden olan hata düzeltildi. (I7ea92, b/389970341)
  • Derin bağlantı ve derin bağlantı isteğinin uri, işlem ve mime'de tam olarak eşleşmesi gerektiği NavDeepLink eşleşmesi düzeltildi. Yalnızca bir veya iki alan eşleşiyorsa artık eşleştirme yapılamaz. (I3227f, b/395712033)

Bilinen Sorunlar

  • b/395712033 numaralı sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya Intent ile aynı alanlara sahip olması yanlışlıkla zorunlu tutuluyor. Derin bağlantıların yalnızca sahip oldukları alanlarla eşleşmesi gerekir ve dahil edilmeyen alanlar yoksayılmalıdır. Bu sorun, b/399826566 kapsamında sonraki bir sürümde düzeltilmiştir.

Sürüm 2.8.7

12 Şubat 2025

androidx.navigation:navigation-*:2.8.7 iptal edilir. 2.8.7 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Safe Args artık composable hedefleri destekliyor. (I35320, b/362791955)

Sürüm 2.8.6

29 Ocak 2025

androidx.navigation:navigation-*:2.8.6 iptal edilir. 2.8.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • NavDestination etiketleri, özel NavType mantığına uyulmasını sağlamak için XML aracılığıyla NavType.get üzerinden ayrıştırılır. (Id366d, b/388100796)
  • dataPattern ile etkinliğe giderken ActivityNavigator artık arg değerini bağımsız değişkenin NavType ile kodlamaya çalışacak. (I1a71d, b/383616432)

Sürüm 2.8.5

11 Aralık 2024

androidx.navigation:navigation-*:2.8.5 iptal edilir. 2.8.5 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Geri yığın 1 girişe indirildiğinde ve aynı karede bir sistem geri işlemi tetiklendiğinde NavHost öğesinin PredictiveBackHandler içinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407)
  • Bir grafiğin startDestination güncellenirken NavDestination NullPointerException sorunu düzeltildi. (I99421, b/361560785)
  • Navigation Compose kullanılırken ve mevcut animasyonun sona erdiği karede gezinme işlemi çağrılırken beklenmedik bir ölçek animasyonuna neden olan sorun düzeltildi. (I26cb1, b/353294030)
  • Bir NavBackStackEntry öğesine eklenen bir LifecycleObserver, kapsayan Etkinlik veya Parçacık gibi ana makine LifecycleOwner yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilecek bir ConcurrentModificationException düzeltildi. (Ia9494)

Harici Katkı (External Contribution)

  • Gezinme tip güvenliği artık özel NavType gerektirmeden bir rotanın bağımsız değişken türü olarak List<Enum> öğesini destekliyor. Teşekkürler Csaba Kozák! (GH-725, b/375559962)

Sürüm 2.8.4

13 Kasım 2024

androidx.navigation:navigation-*:2.8.4 iptal edilir. 2.8.4 sürümü bu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

Sürüm 2.8.3

16 Ekim 2024

androidx.navigation:navigation-*:2.8.3 iptal edilir. 2.8.3 sürümü bu commit'leri içerir.

Yeni Özellikler

  • navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontroller, @Serializable ile doğru şekilde açıklama eklenmemiş tür güvenli rotaların belirlenmesine yardımcı olur. Bu kontrol, tüm NavGraphBuilder ve NavDeepLinkBuilder uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • navigation-common, navigation-runtime ve navigation-compose modülleri için yeni lint kontrolleri eklendi. Bu kontroller, @Keep ile doğru şekilde açıklama eklenmemiş Enum bağımsız değişkenlerine sahip tür açısından güvenli olmayan rotaları belirlemeye yardımcı olur. 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 veya sonraki sürümlerle lint çalıştırma girişiminde Obsolete custom lint check hatasına neden olduğu sorun düzeltildi. (I1be3d, b/368070326, b/371463741)

Bilinen Sorunlar

  • Navigation lint, Lint 16 (AGP 8.7) veya sonraki sürümlerle lint çalıştırmaya çalışırken Obsolete custom lint check hatası verir. (b/371926651)

Sürüm 2.8.2

2 Ekim 2024

androidx.navigation:navigation-*:2.8.2 iptal edilir. 2.8.2 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Gezinme Tip Güvenliği artık özel NavType gerektirmeden Double, Double?, DoubleArray, DoubleArray?, List<Double> ve List<Double>? içeren Serileştirilebilir sınıflarını destekliyor. (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ında bağımsız değişken adı, bağımsız değişkenin tam nitelikli adı ve rotanın tam nitelikli adı yer alacak. (Id8416, b/346264232)

Sürüm 2.8.1

18 Eylül 2024

androidx.navigation:navigation-*:2.8.1 iptal edilir. 2.8.1 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Tür güvenli API'ler kullanılarak popBackStack işlemi denenirken somutlaştırılmış 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 artık NavGraph öğesinin startDestination öğesine iletilen rotanın, boş değer atanamayan ve varsayılan değeri olmayan bağımsız değişkenler de dahil olmak üzere gerekli tüm bağımsız değişkenlerin değerlerini içermesini gerektiriyor. (I18e74, b/362594265)
  • Navigation Safe Args, boş değer içermeyen dizeler için destek ekledi. Bu sayede "null" değerleri ayrıştırılıp pakete olduğu gibi depolanacak. Bu, "null" değerlerinin null nesne olarak ayrıştırıldığı mevcut davranıştan farklıdır. Bu değişiklik yalnızca boş değer atanamayan String türleri için geçerlidir. Boş değer atanabilir dizeler değişmeden kalır. (I08b4a, b/348936238)
  • Artık NavDestination için, hedefte açıkça eklenmiş bir derin bağlantı dışında derin bağlantı oluşturulamaz. Bu, yalnızca dize rotası alan gezinme işlevi aşırı yüklemesiyle bir hedefin rotasına gidebileceğiniz anlamına da gelir. Bu düzeltme, potansiyel olarak korunan bir hedefe derin bağlantı oluşturmayı mümkün kılan güvenlik açığını giderir. (Ie30e6)

Bağımlılık Güncellemesi

  • Navigation Safe Args artık Kotlin 2.X yerine Kotlin 1.9.24'e bağlı olduğundan geliştiricilerin güncelleme yapması zorunlu değildir. (a4129a)
  • Gezinme Oluşturma artık Oluşturma 1.7.2'ya bağlıdır.

Sürüm 2.8.0

4 Eylül 2024

androidx.navigation:navigation-*:2.8.0 iptal edilir. 2.8.0 sürümü bu commit'leri içerir.

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

Navigation Kotlin DSL Type-Safety

  • Navigasyon artık Kotlin Serialization'ı kullanarak Kotlin DSL (Navigation Compose tarafından kullanılır) için tür güvenliği sağlıyor. Böylece, tür güvenli nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizdeki 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 Navigation Compose meet Type Safety blog yayınını inceleyin.

Navigation Compose Predictive Back

  • Navigation Compose artık compose-animation'daki yeni SeekableTransitionState API'ler aracılığıyla uygulama içi tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanan hareketle onaylamaya veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri gitme hareketini kullanabilirsiniz.

Navigation Fragment Composable

  • NavHostFragment yerine ComposableNavHostFragment alternatifini içeren yeni bir navigation-fragment-compose yapısı eklendi. Bu yapı, Navigation XML dosyalarınıza birleştirilebilir hedefler eklemenize olanak tanır. Her composable hedefi, tam nitelikli adı her hedefte android:name özelliği olarak kullanılan, üst düzey ve 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 kapsayan 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

  • Navigation Compose artık Compose 1.7.0'a bağlıdır.
  • Navigasyon artık liste, diziler ve haritalar gibi koleksiyona dayalı bağımsız değişkenler için NavType<T> sınıfının alt sınıfı olan yeni bir CollectionNavType<T> sınıfı sunuyor. Tüm varsayılan NavType dizileri (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType ve StringArrayType) artık bu yeni sınıftan devralınıyor.
  • NavType artık Int, String, Boolean, Float ve Long listeleri için yerleşik destek sunuyor.

Sürüm 2.8.0-rc01

21 Ağustos 2024

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

Hata Düzeltmeleri

  • Üst düzey Enum sınıfları tür açısından güvenli bağımsız değişkenler olarak geçirildiğinde gezinme kilitlenmesi düzeltildi. (I0ba76, b/358137294)
  • Navigation 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 iptal edilir. 2.8.0-beta07 sürümü bu commit'leri içerir.

Bilinen Sorunlar

  • b/358137294 nedeniyle, yalnızca başka bir sınıfa yerleştirilmiş Enums'lar kutudan çıktığı haliyle desteklenir. Üst düzey numaralandırmalar sonraki sürümde desteklenecektir.

Hata Düzeltmeleri

  • Aynı 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 gezinmeye yeni bir NavType.EnumType eklendi. Bu nedenle, Enum türleri artık özel NavType gerektirmez. Enum'nın SerialName, varsayılan tam nitelikli ad olmalıdır. (I66d22, b/346475493)
  • Safe Args'da gezinme,Int?, Long?, Float?, Boolean? ve Enum<*>? dahil olmak üzere boş değer atanabilir bağımsız değişken türleri için yerleşik destek ekledi. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • NavGraph'nın startDestination, NavGraph'ya iletilen startDestination rotası tam olarak startDestination.route'ya eşitse artık varsayılan bağımsız değişken değerlerini kullanacak. (I13762, b/354046047)

Sürüm 2.8.0-beta06

24 Temmuz 2024

androidx.navigation:navigation-*:2.8.0-beta06 iptal edilir. 2.8.0-beta06 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • WrongStartDestinationType Lint kontrollerinin, iletilen sınıf türündeki 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 iptal edilir. 2.8.0-beta05 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • singleTop iç içe yerleştirilmiş NavGraphs öğeler aynı startDestination rotayı paylaştığında yaşanan navigasyon kilitlenmesi sorunu düzeltildi. (I17b94, b/294408596)

Sürüm 2.8.0-beta04

26 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta04 iptal edilir. 2.8.0-beta04 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Navigasyon artık yol bağımsız değişkenlerinde boş dizelerle gezinmeyi destekliyor. (Ic5dbd, b/339481310)
  • @Serializable(with =...) aracılığıyla doğrudan sınıf alanlarında bildirilen özel serileştiriciler için hata mesajını iyileştirerek bunun şu anda desteklenmeyen bir özellik olduğunu netleştirin. (I052b0, b/341319151)
  • SavedStateHandleFactory test API'si artık Android olmayan testlerde kullanılabilir ancak Robolectric'in, paketlerle bağımsız değişken ayrıştırmayı desteklemesi gerekir. (I76cdc, b/340966212)
  • Compose'da tür güvenli gezinme kullanılarak işlem sonlandırıldıktan sonra uygulama devam ettirilirken durumun geri yüklenmesiyle ilgili kilitlenme sorunu düzeltildi. (Ia8f38, b/341801005)
  • Navigation Compose'da, Tahmin Edilen Geri Gitme Hareketi iptal edildikten sonra kullanıcının döndüğü NavBackStackEntry'nın hiçbir zaman RESUMED yaşam döngüsü durumuna geri dönmemesine neden olan sorun düzeltildi. Bu sayede, geri dönen hedef, hızlı kaydırma işleminden sonra yerine oturmak yerine doğru şekilde geri animasyonlanır. (I97a0c, b/346608857)
  • Navigation Compose ile tahmin edilen geri gitme özelliği kullanılırken açılan hedef artık uygun z-sırasına sahip olacak ve gelen hedefin üzerinde doğru şekilde animasyon oluşturacak. (I2077b, b/345993681)

Sürüm 2.8.0-beta03

12 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta03 iptal edilir. 2.8.0-beta03 sürümü bu commit'leri içerir.

API Değişiklikleri

  • CollectionNavType, yeni bir özet emptyCollection() yöntemine sahip. 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 çıktıların URI kodlu olması gerektiğini vurgulamak için NavType.serializeAsValue ve serializeAsValues ile ilgili dokümanlar eklendi. (Ida6bd, b/344943214)
  • Boş CollectionNavType bağımsız değişkeniyle toRoute<T> çağrıldığında kilitlenme sorunu düzeltildi. Boş bir CollectionNavType ile gezinirken çıkış bağımsız değişkeni, Serializable sınıfınızda belirtilen varsayılan değer veya varsayılan değer yoksa emptyCollection()'nin dönüş değeri olur. (I84158, Id630f, b/342672856)

Sürüm 2.8.0-beta02

29 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-beta02 iptal edilir. 2.8.0-beta02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Boş değer atanabilir özel NavType ile NavBackStackEntry.toRoute kullanılırken ClassCastException kilitlenmesi sorunu düzeltildi. (I1c29b, b/342239473)
  • Geçerli hedeften kimlik aracılığıyla ulaşılamayan bir geri yığın girişi geri yüklenmeye çalışıldığında ortaya çıkan, geri yığın durumunu geri yüklemeyle ilgili sorunlar düzeltildi. Rotalar kimliklerle desteklendiğinden rotalarla oluşturulan hedefler de bu durumdan etkilendi. Bu düzeltme, aynı temel soruna sahip olan clearBackStack() çağrıldığında oluşan 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 iptal edilir. 2.8.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • Navigation Kotlin DSL işlevleriyle ilgili eksik parametre belgeleri eklendi. (I26a36)

Sürüm 2.8.0-alpha08

1 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-alpha08 iptal edilir. 2.8.0-alpha08 sürümü bu commit'leri içerir.

Navigation Compose'da Safe Args

Bu işlev, tür güvenli nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizde hedefler tanımlamanıza olanak tanımak için Kotlin Serialization'ı 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 Navigation Compose meet Type Safety blog yayınını inceleyin.

Yeni Özellikler

  • navigation-fragment-compose yapısı artık ComposableFragment içinde composable yöntemlere yerel bir LocalFragment kompozisyonu sağlıyor. (If35e5)
  • NavType artık Int, String, Boolean, Float ve Long listeleri için yerleşik destek sunuyor. (I4b6dd, Ia914c, b/188693139)

Sürüm 2.8.0-alpha07

17 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha07 iptal edilir. 2.8.0-alpha07 sürümü bu commit'leri içerir.

Yeni Özellikler

  • navigation-fragment-compose öğesine NavHostFragment yerine kullanılabilecek yeni bir ComposableNavHostFragment öğesi ekler. Bu öğe, gezinme XML dosyalarınıza composable hedefleri eklemenize olanak tanır. Her composable hedefi, tam nitelikli adı her hedefte android:name özelliği olarak kullanılan, üst düzey ve 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östermek için bir kapsayan 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

Sürüm 2.8.0-alpha06

3 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha06 iptal edilir. 2.8.0-alpha06 sürümü bu commit'leri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • Varsayılan contentAlignment bağımsız değişkeni olarak artık NavHost yerine Alignment.TopStart kullanılıyor. Bu, AnimatedContent için varsayılan değerle uyumlu hale getirir ve merkezden ölçeklendirme geçişinde beklenmeyen ölçeklendirme durumlarını düzeltir. (I09e72, b/330111602)
  • Navigation Compose kullanılırken tahmin edilen geri gitme hareketi yapıldığında NavHost artık özel geçişi hemen bitirmek yerine doğru şekilde tamamlayacak. (I99017, b/327292110)

Sürüm 2.8.0-alpha05

20 Mart 2024

androidx.navigation:navigation-*:2.8.0-alpha05 iptal edilir. 2.8.0-alpha05 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Artık NavGraph'nın startDestination işlevine defaultValue'a güvenmeden doğrudan startDestination rotasında 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> sınıfının alt sınıfı olan yeni bir soyut CollectionNavType<T> sınıfı eklendi. (Ic6d63, b/188693139)
  • Tüm varsayılan NavType dizileri (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType ve StringArrayType) artık CollectionNavType türündedir (Idcf79, b/188693139).
  • NavType artık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açık valueEquals API'si sunuyor. (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 parantezleri (ör. {argName}) biçimindeki değerlere izin veriyor. Bu düzeltme, söz konusu değerin tüm türler için geçersiz (veya değerin olmaması) olarak kabul edildiği sorunu giderir. (I18302, b/327274038)
  • NavController gibi rotaları destekleyen işlevler artık navigate veya popBackStack, Dizi NavTypes bağımsız değişkenleriyle doldurulmuş 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 iptal edilir. 2.8.0-alpha04 sürümü bu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Compose Gezinme'de NavHost, System Back'i hareket olmadan kullanırken geçişi düzgün şekilde göstermiyordu. Bu sorun düzeltildi. (Iceeae, b/325998468)

Sürüm 2.8.0-alpha03

21 Şubat 2024

androidx.navigation:navigation-*:2.8.0-alpha03 iptal edilir. 2.8.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • NavBackStackEntry.savedStateHandle, ana iş parçacığında olması gereken kodu kullandığı için artık @MainThread olarak işaretleniyor. (Ibb988, b/299523245)

Hata Düzeltmeleri

  • Gezinme'de, ilişkili girişin ViewModel kaydedilmiş duruma dahil olmadığı için NavGraph ViewModel'lerin DESTROYED çok erken oluşturulmasına neden olan 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 iptal edilir. 2.8.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Navigation Compose artık compose-animation'daki yeni SeekableTransitionState API'leri aracılığıyla uygulama içi tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanan hareketle onaylamaya veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri gitme hareketini kullanabilirsiniz. (I8b8e9)

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.navigation:navigation-*:2.8.0-alpha01 iptal edilir. 2.8.0-alpha01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Bir hedefte birden fazla saveState çağrısı yapıldığında birden fazla durumun kaydedilmesine ancak yalnızca ilk durumun geri yüklenebilmesine neden olan 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ılırken, String olmayan bağımsız değişkenlerin düzgün şekilde görüntülenmemesine neden olan sorun düzeltildi. (#636, b/316676794)

Bağımlılık Güncellemesi

Harici Katkı (External Contribution)

  • NavigationUI yardımcılarını kullanarak uygulama çubuklarının başlığını doldururken String olmayan bağımsız değişkenler için 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 iptal edilir. 2.7.7 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation 2.8.0-alpha01'dan geri taşındı: Tek bir NavBackStackEntry üzerinde birden fazla saveState() çağrısı yapıldığında birden fazla durumun kaydedilmesine ancak yalnızca ilk kaydedilen durumun geri yüklenebilmesine neden olan BackStackState sızıntısı düzeltildi. (I598b0, b/309559751)
  • Navigation 2.8.0-alpha01'dan geri aktarıldı: Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcıları kullanılırken 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ı (External Contribution)

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

Sürüm 2.7.6

Sürüm 2.7.6

13 Aralık 2023

androidx.navigation:navigation-*:2.7.6 iptal edilir. 2.7.6 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavGraph equals() işlevi artık yalnızca çağıran grafiği değil, diğer grafiğin düğümlerini de doğru şekilde dikkate alıyor. Bu sayede, farklı kimliklere sahip düğümler içeren grafikler artık eşit kabul edilmeyecek (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 iptal edilir. 2.7.5 sürümü şu commit'leri içerir.

Performans İyileştirmeleri

  • İki grafiği karşılaştırma performansı (hem süre hem de tahsis sayısı açısından) büyük ölçüde iyileştirildi. Bu, yeni grafiği mevcut olanla dahili olarak karşılaştıran setGraph gibi çağrıların çok daha hızlı olduğu ve daha az atlanan kareyle sonuçlandığı anlamına gelir. Bu iyileştirmeye yol açan kapsamlı analiz için Michał Z'ye teşekkür ederiz. (I6ad62)
  • NavHost artık güncellenmiş durumu okumak için ikinci geçişin beklenmesine gerek kalmadan başlangıç hedefini ilk bileşim geçişinde oluşturacak. (I439a7, b/304852206)

Hata Düzeltmeleri

  • Grafiğinizde iki hedefi bağlayan bir işlem içeren bir hedef varsa ve setGraph işlevini tam olarak aynı grafikle birden fazla kez çağırdıysanız geri yığınınızın çıkarılmasına neden olan sorun düzeltildi. (Ieaed7)
  • Hızlı bir şekilde gezinilip kapatılan iletişim kutuları artık NavController.visibleEntries listesine sızmayacak. (I67586, b/287969970)
  • Bir giriş, yapılandırma değişikliğiyle birlikte çıkarıldığında saveState yanlışsa girişin ViewModel değeri artık düzgün şekilde temizlenir. (Idf242, b/298164648)
  • Geriye gitme yığını, yapılandırma değişikliğinden veya yalnızca gelen Intent'te FLAG_ACTIVITY_NEW_TASK işareti ayarlandığında setGraph çağrısından önce tamamen boşsa NavController'nın aynı derin bağlantıyı birden fazla kez işlemesine neden olan sorun düzeltildi. (I73c7f)

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

  • Parçalarla gezinme artık Fragment 1.6.2'ye bağlıdır. Bu sayede, clearBackStack çağrıldığında iç içe yerleştirilmiş parçaların ViewModel örneklerinin temizlenmemesi sorunu düzeltilir.

Sürüm 2.7.4

Sürüm 2.7.4

4 Ekim 2023

androidx.navigation:navigation-*:2.7.4 iptal edilir. 2.7.4 sürümü şu commit'leri içerir.

Yeni Özellikler

  • popBackStack'da bulunan destekle eşleşen, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe geri dönülmesine izin vermek için popUpTobağımsız değişkenlerle rotaların kullanılmasına yönelik destek eklendi. (I731f4, b/299255572)

Hata Düzeltmeleri

  • ile yapılan bir navigasyonu popUpTo ile yapılan başka bir navigasyonla kesintiye uğratmanın FragmentNavigator'ın kilitlenmesine neden olması sorunu düzeltildi. (I3c848, b/301887045)
  • Sistemde geri tuşuna basıldığında currentDestination öğesinin, görüntülenen parçayla eşleşecek şekilde doğru güncellenmemesine neden olan sorun düzeltildi. (Id0d6c, b/289877514)
  • DialogFragment yaşam döngüsü, artık üstündeki iletişim kutusu kapatıldığında RESUMED durumuna doğru şekilde geçiş yapacak. (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 iptal edilir. 2.7.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parçalarla gezinme özelliğinde, visibleEntries listesinin yanlış girişler içermesine neden olan sorun düzeltildi. (I5caa9, b/288520638)
  • Kayan pencere hedefinin (ör.Dialogs, Bottomsheets vb.) hiçbir zaman RESUMED yaşam döngüsü geri çağırma yöntemi almamasına neden olan 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 iptal edilir. 2.7.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme artık Lifecycle 2.6.2'a bağlı. Bu sayede, hedeflerin rememberSaveable durumu ile ViewModel ait SavedStateHandle örneklerinin işlem sonlandırma ve yeniden oluşturma sonrasında düzgün şekilde geri yüklenmesini engelleyen rememberSaveable ile Navigation Compose'un NavHost arasındaki etkileşim düzeltiliyor. (b/298059596, b/289436035)
  • Navigation Compose'da aynı anda birden fazla iletişim kutusu gösterilirken kısmen gizlenmiş iletişim kutularının (ör. en üstteki iletişim kutusu olmayan) STARTED durumu yerine CREATED yaşam döngüsü durumunda olmasına neden olan sorun düzeltildi. (aosp/2728520, b/289257213)
  • Navigation Compose'da aynı anda birden fazla iletişim kutusu gösterilirken en üstteki iletişim kutusunun kapatılmasının, yeni en üstteki iletişim kutusunun doğru şekilde RESUMED yaşam döngüsü durumuna geçmek yerine STARTED yaşam döngüsü durumunda takılmasına neden olduğu sorun düzeltildi. (aosp/2629401, b/286371387)
  • Navigation Safe Args, görevi gerçekten yürütülmüyorsa artık hemen başlatmaz. (I0e385, b/260322841)

Bağımlılık Güncellemesi

  • Navigation Compose artık Compose 1.5.1'e bağlıdır.

Sürüm 2.7.1

Sürüm 2.7.1

23 Ağustos 2023

androidx.navigation:navigation-*:2.7.1 iptal edilir. 2.7.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Compose ile gezinmede, Scaffold kullanılırken Lifecycle.State.DESTROYED ViewModel öğesine erişmeye çalışırken hata alınmasına neden olan sorun düzeltildi. (I1dc11, b/268422136)

Sürüm 2.7.0

Sürüm 2.7.0

9 Ağustos 2023

androidx.navigation:navigation-*:2.7.0 iptal edilir. 2.7.0 sürümü şu commit'leri içerir.

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

Accompanist'ten animasyonlar

AnimatedContent kararlı hale geldiğinden Accompanist Navigation Animation'daki kodu Navigation Compose'a geri taşıyabildik.

Bu, AnimatedNavHost'da bulunan tüm özel geçiş ayarlarının doğrudan NavHost'da desteklendiği anlamına gelir.

Accompanist Navigation Animation'da başka değişiklik yapılmayacak ve yakında Navigation Compose'a geri geçişle ilgili yönergelerle birlikte resmi olarak desteği sonlandırılacak. Ancak en son Accompanist alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka API değişikliği yapmanız gerekmez. Bu, taşıma kılavuzunun tersi olacaktır. (b/197140101)

Hata Düzeltmeleri

  • Navigation Compose'daki NavHost artık Etkinlik DURDURULUP DEVAM ETTİRİLDİKTEN sonra bile sistemin geri çağırmalarını doğru şekilde yakalıyor. (Icb6de, b/279118447)

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

  • Gezinme artık 1.1.0 yerine Compose 1.5.0'a bağlıdır.

Sürüm 2.7.0-rc01

26 Temmuz 2023

androidx.navigation:navigation-*:2.7.0-rc01 iptal edilir. 2.7.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavHost kapsamında oluşturulan EnterTransition ve ExitTransition lambda'larının, NavHost kompozisyondan kaldırıldıktan sonra bile bellekte kalabilmesine neden olan sorun düzeltildi. (I893d0)

Bilinen Sorunlar

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

Sürüm 2.7.0-beta02

28 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta02 iptal edilir. 2.7.0-beta02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Compose artık popUpTo seçeneğiyle gezinmeyi kullanan özel geçişler için doğru z-sırasına sahip.(/Ib1c3a, b/285153947)

Sürüm 2.7.0-beta01

7 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta01 iptal edilir. 2.7.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme Compose'daki NavHost, artık Activity STOPPED ve RESUMED işleminden sonra bile sistem geri çağırmalarını doğru şekilde yakalıyor. (Icb6de, b/279118447)

Sürüm 2.7.0-alpha01

24 Mayıs 2023

androidx.navigation:navigation-*:2.7.0-alpha01 iptal edilir. 2.7.0-alpha01 sürümü şu commit'leri içerir.

Accompanist'ten animasyonlar

AnimatedContent kararlı hale geldiğinden Accompanist Navigation Animation'daki kodu Navigation Compose'a geri taşıyabildik.

Bu, AnimatedNavHost'da bulunan tüm özel geçiş ayarlarının doğrudan NavHost'da desteklendiği anlamına gelir.

Accompanist Navigation Animation'da başka değişiklik yapılmayacak ve yakında Navigation Compose'a geri geçişle ilgili yönergelerle birlikte resmi olarak desteği sonlandırılacak. Ancak en son Accompanist alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka API değişikliği yapmanız gerekmez. Bu, taşıma kılavuzunun tersi olacaktır. (b/197140101)

Hata Düzeltmeleri

  • Navigation 2.6.0-rc02: Fragmentlerde gezinme ile ilgili bir sorun düzeltildi. Bu sorunda, popUpTo ile gezinme ve görünümü yeniden oluşturmadan bir fragment'ı eski yığından çıkarma, sistemin geri işlevinin çalışmamasına neden oluyordu. (Ieb8d4, b/281726455)

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

  • Gezinme artık Compose 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 iptal edilir. 2.6.0 sürümü şu commit'leri içerir.

2.5.0 sürümünden beri gezinme ile ilgili yapılan önemli değişiklikler

  • NavBackStackEntry's arguments ve OnDestinationChangedListener'ye iletilen arguments artık yalnızca hedefe gittiğinizde oluşturulan değişmez bağımsız değişkenlerin bir kopyasıdır. Bu nedenle, bu paketlerde yapılan değişiklikler, arguments veya diğer OnDestinationChangedListener örneklerine sonraki erişimlerde yansıtılmaz.
  • 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 olan tekrarlanan sorgu parametreleri desteklenebiliyor. NavType artık ayrıştırılan iki değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor.
  • NavType öğesinin özel alt sınıfları artık bir değeri dizeye dönüştürmek için serializeAsValue öğesini geçersiz kılabilir. Bu sayede hem serileştirme hem de seri durumdan çıkarma (parseValue aracılığıyla) tamamen NavType sınıfında kapsanabilir. StringType artık belirtilen String üzerinde Uri.encode'ı aramak için bu yöntemi geçersiz kılıyor.

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

  • NavHost ile bir composable'ı önizlerken artık varsayılan olarak NavGraph'ın startDestination gösterilecek.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) artık bağımsız değişkenleri kısmen veya tamamen doldurulmuş 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'yi kullanarak boş bir NavDeepLink oluşturmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek.

2.5.0 sürümünden itibaren Fragment'lerle gezinme konusunda yapılan önemli değişiklikler

  • NavHostFragment artık sistemin geri düğmesini engellemiyor. Bu, temel FragmentManager'nın sistem geri işlemini gerçekleştirmesine olanak tanır. Bu sayede Fragment 1.7.0-alpha01 ve sonraki sürümler, Android U cihazlarda uygulama içi tahmini geri animasyonu sağlayabilir.
  • Parçalarla gezinme kullanılırken, FragmentTransaction'ın geri yığınına parça ekleyen FragmentManager işlemini manuel olarak yapmaya çalışmak artık IllegalArgumentException hatası verecek. Parçaları her zaman navigate() API'si üzerinden eklemelisiniz.
  • 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 genişletme sırasında bağlamın packageName ile otomatik olarak doldurulur.
  • FragmentNavigator artık gezinirken ve pop-up'lar gösterilirken geçiş API'lerini kullanıyor NavBackStackEntries. Bu, NavBackStackEntry Lifecycle karakterinin artık son Lifecycle.State hareketini yapmadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.
  • DialogFragmentNavigator artık gezinirken ve pop-up'lar gösterilirken geçiş API'lerini kullanıyor NavBackStackEntries. Bu, NavBackStackEntry Lifecycle öğesinin artık DESTROYED öğesine geçmeden önce DialogFragment Lifecycle öğesinin DESTROYED öğesine geçmesini bekleyeceği anlamına gelir.
  • NavHostFragment artık NavHostFragment, FragmentManager cihazına takılır takılmaz NavController cihazını almanıza olanak tanıyor. Daha önce bu işlem yalnızca onCreate() sonrasında yapılabiliyordu.
  • Navigation'ın dinamik özellik modülleri desteği artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlıdır.
  • Navigation Safe Args artık Android Gradle eklentisinin 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.

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

  • Bir gezinme grafiğinin kimliğini AppBarConfiguration'ya iletirken (ör. Menu aracılığıyla), NavigationUI artık grafikteki her hedefi yanlışlıkla üst düzey hedef olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak değerlendiriyor. Tek bir hedefin kimliğini iletme davranışı değişmez. 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 içindeki setupWithNavController entegrasyonları artık android:label içinde bulunan ReferenceType bağımsız değişkenleri için R.string değerlerini ayrıştırıp otomatik olarak oluşturulan kaynak tam sayısını çıkış olarak vermek yerine String değerlerine dönüştürecek.
  • NavigationUI artık seçilen bir MenuItem üzerinden gezinme başarısız olduğunda günlükler sağlar.

Sürüm 2.6.0-rc02

24 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc02 iptal edilir. 2.6.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parçalardaki gezinme ile ilgili bir sorun düzeltildi. Bu sorunda, popUpTo ile gezinme ve görünümü yeniden oluşturmadan bir parçayı geri yığından çıkarma, sistemin geri işlevinin durmasına neden oluyordu. (Ieb8d4, b/281726455)

Sürüm 2.6.0-rc01

10 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc01 iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parçalarla ilgili Gezinme'de, bir parçanın onResume() yaşam döngüsü geri çağırma yöntemiyle popUpTo gezinerek kaldırılmasının IllegalStateException'ye neden olduğu sorun düzeltildi. (I21884, b/279644470)

Sürüm 2.6.0-beta01

19 Nisan 2023

androidx.navigation:navigation-*:2.6.0-beta01 iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Parçalarla gezinme kullanılırken, FragmentTransaction işlemiyle FragmentManager'nin geri yığınına parça eklemeye çalışıldığında artık IllegalArgumentException hatası verilecek. Parçaları her zaman navigate() API'si üzerinden eklemelisiniz. (I6d38e)
  • Aynı karede bir giriş ekleyen navigate ve bu girişi kaldıran popBackStack olduğunda, eski yığındaki sonuçlanan üst giriş artık tutarlı bir şekilde RESUMED Lifecycle.State'e geri dönecek. (Id8067, b/276495952)

Sürüm 2.6.0-alpha09

5 Nisan 2023

androidx.navigation:navigation-*:2.6.0-alpha09 iptal edilir. 2.6.0-alpha09 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Geçersiz rota kontrolleri düzeltildi. Artık bir NavDestination, boş değer atanamayan bir NavArgument içeriyorsa bu hedefin rotası, boş değer atanamayan NavArgument ile aynı ada sahip bağımsız değişkenler için yer tutucular içermelidir. (Ic62bf, b/274697949)
  • Action/MimeType temel alınarak yapılan derin bağlantı gezinmeleri, gezinme işleminde Action/MimeType ile eşleşen NavDestination tarafından gerekli kılınan, boş değer atanamayan bir NavArgument eksikse artık başarısız olur. (Ibfa17, b/271777424)
  • NavController, önceki grafikle aynı rotaya ve hedeflere sahip bir grafik ayarladığında artık mevcut grafik düğümlerini ve geri yığın hedeflerini yeni örneklerle düzgün bir şekilde değiştiriyor. Bu düzeltme, Navigation Compose'da durumu kaydetmeden onLaunchSingleTop kullanılırken yaşanan kilitlenme sorununu giderir. Bu düzeltme, kök grafik yapılarıyla ilişkili hedeflere gidildiğinde yanlış geri yığın oluşturulmasına neden olan 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 iptal edilir. 2.6.0-alpha08 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavHostFragment artık NavHostFragment, FragmentManager cihazına takılır takılmaz NavController cihazını almanıza olanak tanıyor. Daha önce bu işlem yalnızca onCreate() sonrasında yapılabiliyordu. (Ic6382, b/220186282)

Hata Düzeltmeleri

  • Boş değer atanamayan bir bağımsız değişken içeren iç içe yerleştirilmiş bir grafik açılırken oluşan NullPointerException düzeltildi. (6b3581, b/249988437)
  • popUpTo ile gezinme işleminden sonra sistem geri işlevi kullanıldığında NavController durumu doğru girişe yönlendirilir. (I3a8ec, b/270447657)
  • FragmentNavigator artık sistem geri veya popBackStack() aracılığıyla geri yığın çıkarıldığında ve işlemin parça için efekt kullanıp kullanmadığına bakılmaksızın girişleri düzgün şekilde çıkaracak. (I81bdf)
  • Gezinme kullanmadan FragmentNavigator'ya FragmentManager parça eklemek artık kilitlenmeye neden olmayacak. (b17204, b/274167493)

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

Sürüm 2.6.0-alpha07

8 Mart 2023

androidx.navigation:navigation-*:2.6.0-alpha07 iptal edilir. 2.6.0-alpha07 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Rotaları alan getBackStackEntry, popBackStack, clearBackStack API varyantları artık boş değer atanabilir bağımsız değişkenlere ve boş değer atanabilir sorgu parametrelerine sahip rota kalıplarını alıyor (I22294, b/269302500).
  • NavController öğesinden clearBackStack() işlevi çağrıldığında, temizlenen geri yığınla ilişkili parça yöneticisindeki kaydedilmiş durumun temizlenmemesine neden olan sorun düzeltildi. (Ic1cce, b/271190202)
  • 2.6.0-alpha06 sürümünde, sekmeler arasında Sistem Geri'yi kullanırken BottomNavigationView içindeki yanlış MenuItem öğesinin vurgulanmasına neden olan gerileme düzeltildi. (I634f6, b/270447657)
  • 2.6.0-alpha06 sürümünde, Animation kullanılırken NavBackStackEntry öğelerinin RESUMED 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 iptal edilir. 2.6.0-alpha06 sürümü şu commit'leri içerir.

Yeni özellikler

  • NavHost ile bir composable'ı önizlerken artık varsayılan olarak NavGraph'ın startDestination gösterilecek. (I2b89f)

API Değişiklikleri

  • Tüm NavController navigate aşırı yüklemeleri artık ana iş parçacığında çağrıldıklarından emin olmak için @MainThread ile açıklama ekleniyor. (I2c0b0, b/263427111)

Hata Düzeltmeleri

  • Dinamik Parça Gezinme kullanılırken gezinmeye çalışıldığında yaşanan kilitlenme sorunu düzeltildi. (I3ee29, b/268360479)
  • Sistemin geri düğmesiyle başka bir parçaya gidildiğinde alt çubuğun doğru seçilen öğeyle güncellenmemesine neden olan hata düzeltildi (If559f, b/269044426).

Bilinen Sorunlar

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

Sürüm 2.6.0-alpha05

8 Şubat 2023

androidx.navigation:navigation-*:2.6.0-alpha05 iptal edilir. 2.6.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) artık bağımsız değişkenleri kısmen veya tamamen doldurulmuş 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 gezinirken ve pop-up'lar gösterilirken geçiş API'lerini kullanıyor NavBackStackEntries. Bu, NavBackStackEntry Lifecycle karakterinin artık son Lifecycle.State hareketini yapmadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına geliyor. (I3cb19, b/238686802)
  • DialogFragmentNavigator artık gezinirken ve pop-up'lar gösterilirken geçiş API'lerini kullanıyor NavBackStackEntries. Bu nedenle, NavBackStackEntry Lifecycle artık DialogFragment Lifecycle öğesinin DESTROYED öğesine taşınmasını bekleyecek ve ardından kendisi DESTROYED öğesine taşınacaktır. (I53ee5, b/261213893)

API Değişiklikleri

  • NavigatorState artık prepareForTransition API'yi sunarak Navigator'lerin NavBackStackEntries'leri ara Lifecycle.State'lere taşımasına olanak tanıyor. (I42c21, b/238686802)
  • Artık NavGraphNavigator veya ComposeNavigator ile ilişkili geri yığına backstack özelliği üzerinden erişebilirsiniz. ComposeNavigator artık onTransitionComplete() geri çağırmasını da kullanıma sunarak bir NavBackStackEntry öğesini, gezinme veya popBackStack işlemi gerçekleştirmişse tamamlandı olarak işaretleyebilir. (I02062, I718db, b/257519195)

Hata Düzeltmeleri

  • Giriş zaten işleniyorsa push/popWithTransition API'leri kullanılırken gezinme durumu artık işlem yapmayacak. (Iadbfa, b/261213893)
  • İç içe yerleştirilmiş bir NavGraph ile launchSingleTop kullanılırken orijinal hedeften startDestination'sine kadar olan tüm hedefler yalnızca geri yığınının en üstüne doğru şekilde eklenir. (Id4bea, b/253256629)
  • Gezinme özelliği, launchSingleTop işareti true olarak ayarlanmış şekilde aynı hedefe gidildiğinde artık DialogFragment örneğini düzgün şekilde değiştiriyor. (I45b5a, b/149572817)
  • Navigation SafeArgs, tam olarak 19 karakter uzunluğunda bağımsız değişkenler kullanılırken artık derleme hatasına neden olmayacak. (Id60bc, b/257110095)

Sürüm 2.6.0-alpha04

9 Kasım 2022

androidx.navigation:navigation-*:2.6.0-alpha04 iptal edilir. 2.6.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavType öğesinin özel alt sınıfları artık bir değeri dizeye dönüştürmek için serializeAsValue öğesini geçersiz kılabilir. Böylece hem serileştirme hem de seri durumdan çıkarma (parseValue aracılığıyla) tamamen NavType sınıfında kapsanabilir. StringType artık belirtilen String üzerinde Uri.encode'ı aramak için bu yöntemi geçersiz kılıyor. (Ie5213, b/247637434)
  • NavigationUI artık seçilen bir MenuItem üzerinden gezinme başarısız olduğunda günlükler sağlar. (I2af5a, b/247730357)

Hata Düzeltmeleri

  • Gezinme derin bağlantıları artık grafik başlatma sırasında değil, geç ayrıştırılıyor. Bu da başlangıçta uygulama performansını artırabilir. (Iab0ab)
  • Boş varsayılan bağımsız değişkenlere sahip bir hedefe derin bağlantı oluşturduktan sonra yukarı gidildiğinde kilitlenmeye neden olan sorun düzeltildi. (I51c24, b/243183636)

Bağımlılık Güncellemesi

  • Gezinme özelliğinin dinamik özellik modülleri desteği artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlıdır. (Ib4ddc)
  • Navigation Safe Args 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 iptal edilir. 2.6.0-alpha03 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme 2.5.3 bölümünden: NavHost, Crossfade için hedef olmadığında artık NoSuchElementException'e neden olmayacak. Artık yalnızca kompozisyon atlanır. (Ieb46e, b/253299416)
  • Gezinme 2.5.3: Bir hedef eski yığından çıkarıldığında kaydedilmiş Compose durumunun (ör. rememberSaveable kullanımları) unutulup kaldırılmamasına neden olan sorun düzeltildi. (I64949)

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

Sürüm 2.6.0-alpha02

5 Ekim 2022

androidx.navigation:navigation-*:2.6.0-alpha02 iptal edilir. 2.6.0-alpha02 sürümü şu commit'leri içerir.

Davranış Değişiklikleri

  • Bir gezinme grafiğinin kimliğini AppBarConfiguration'ya iletirken (ör. Menu aracılığıyla), NavigationUI artık grafikteki her hedefi yanlışlıkla üst düzey hedef olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak kabul ediyor. Tek bir hedefin kimliğini iletme davranışı değişmedi. 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 Fragment sürümü 1.5.2'e bağlıdır. (I00ba4)
  • Seçili menü öğesi, iletişim kutusu gibi bir FloatingWindow hedefine gidildiğinde artık güncellenmeyecek. (I4cde8, b/240308330)

Sürüm 2.6.0-alpha01

7 Eylül 2022

androidx.navigation:navigation-*:2.6.0-alpha01 iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Üst uygulama çubuğuyla çalışmak için NavigationUI içindeki setupWithNavController entegrasyonları artık android:label içinde bulunan ReferenceType bağımsız değişkenleri için R.string değerlerini ayrıştırıp otomatik olarak oluşturulan kaynak tam sayısını çıkış olarak vermek yerine String değerlerine dönüştürecek. (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 olan tekrarlanan 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 genişletme sırasında bağlamın packageName ile otomatik olarak doldurulur. (Iaabde, b/234223561)
  • navDeepLink Kotlin DSL'si kullanılarak boş bir NavDeepLink oluşturulmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek. (I08d2f, b/154038883)

API Değişiklikleri

  • android:label="{arg}" biçimindeki bağımsız değişkenlerle dinamik etiketleri ayrıştırıp String'e dönüştürmek için yeni NavDestination uzantı işlevi eklendi. ReferenceType değerlerini String değerlerine ayrıştırarak R.string bağımsız değişkenlerini destekler. (I07d89, b/236269380)

Davranış Değişiklikleri

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

Hata Düzeltmeleri

  • Gezinme 2.5.2: Dinamik Gezinme artık diğer modüllerden Activity hedeflerini yüklemeye çalıştıktan sonra bu hedeflere gidiyor. (Ia2c16, b/240292838)
  • Gezinme 2.5.2: Gezinme, aynı hedefe gidilirken ve launchSingleTop işareti true olarak ayarlanırken artık Fragment örneğini düzgün şekilde değiştirecek. (I5a2f1, b/237374580)
  • Gezinme 2.5.2: Yeni açılan bir başlangıç hedefiyle üst öğeyi paylaşan, iç içe geçmiş bir grafiğe gitmekten kaynaklanan IllegalStateException 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 iptal edilir. 2.5.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavHost, Crossfade için oluşturulacak hedef olmadığında artık NoSuchElementException'a neden olmayacak. Artık yalnızca kompozisyon atlanır. (Ieb46e, b/253299416)
  • Bir hedef eski yığından çıkarıldığında, kaydedilen Compose durumunun (ör. rememberSaveable kullanımları) unutulup kaldırılmamasına neden olan sorun düzeltildi. (I64949)

Sürüm 2.5.2

7 Eylül 2022

androidx.navigation:navigation-*:2.5.2 iptal edilir. 2.5.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Dinamik Gezinme artık diğer modüllerden Activity hedeflerini yüklemeyi denerken bu hedeflere gitmeden önce yüklemeyi doğru şekilde yapıyor. (Ia2c16, b/240292838)
  • Navigasyon artık aynı hedefe giderken ve launchSingleTop işaretini true olarak ayarlarken Fragment örneğini düzgün şekilde değiştiriyor. (I5a2f1, b/237374580)
  • Yeni açılan başlangıç hedefiyle üst öğe paylaşan, iç içe geçmiş bir grafiğe gidildiğinde oluşan 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 iptal edilir. 2.5.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Safe Args, Bundle içinde kaydedilen özel bağımsız değişken türleri kullanılırken oluşturulan sınıflarda artık kullanımdan kaldırma uyarılarına neden olmayacak. (Id86ed, b/237725966)

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

Sürüm 2.5.0

29 Haziran 2022

androidx.navigation:navigation-*:2.5.0 iptal edilir. 2.5.0 sürümü şu commit'leri 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'ın CreationExtras aracılığıyla durum bilgisi içermeyen ViewModelProvider.Factory sağlayabilir.

Navigation SafeArgs

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

Diğer Değişiklikler

  • visibleEntries API artık deneysel değildir ve NavController'ye göre hedefi ş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 iptal edilir. 2.5.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Compose NavHost kullanılırken alt hedefler arasında hızlı geçiş yapıldığında kilitlenmeye neden olan sorun düzeltildi. (I3979a, b/234054916)
  • Navigation SafeArgs, applicationIdSuffix ve ad alanı kullanılırken artık kilitlenmeyecek. Bu durum, applicationId öğesinin bulunmadığı veya applicationId ile ad alanının farklı olduğu durumlarda geçerlidir. (I754b1, b/233119646)
  • NavArgument artık bağımsız değişkenin dahili değerlerini göstermek için özel bir toString() işlevine sahip. (I900a8)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.navigation:navigation-*:2.5.0-rc01 iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • NavHost ve DialogHost'deki birleştirilebilir kapsamlar artık beklenen sırada (yani iç birleştirilebilirler dış birleştirilebilirlerden önce) kaldırılıyor. (I157e6)
  • Navigation SafeArgs artık önbelleğin taşınabilirliğini sağlamak için ArgumentsGenerationTask içinde PathSensitivity.RELATIVE kullanıyor. Bu, önbellek girişinin artık bir CI derlemesinden yerel bir derlemeye yeniden kullanılabileceği anlamına gelir. (I5f67c, b/173420454)
  • UnrememberedGetBackStackEntryDetector lint kuralı, getBackStackEntry() çağrısı etrafındaki remember çağrısının da anahtar olarak NavBackStackEntry nesnesi iletilmesini sağlayacak şekilde güncellendi.(Ib7081, b/227382831)

Sürüm 2.5.0-beta01

20 Nisan 2022

androidx.navigation:navigation-*:2.5.0-beta01 iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • DialogNavigator artık dismiss() araması yaparken popWithTransition kullanıyor. Bu düzeltme, dialog hedefinde ViewModel kullanılırken, iletişim kutusunu sistemin geri düğmesini kullanarak veya iletişim kutusunun dışına dokunarak kapatırken IllegalStateException hatasına neden olan bir yarış durumu sorununu düzeltir. (Id7376, b/226552301)

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

  • Gezinme artık Yaşam Döngüsü2.5.0-beta01'ne bağlıdır. Birden fazla geri yığın kullanılırken bir NavHost'nin birincil olmayan bir alt gezinme sekmesinde başka bir NavHost içine yerleştirilmesi sırasında IllegalStateException düzeltildi.

Sürüm 2.5.0-alpha04

6 Nisan 2022

androidx.navigation:navigation-*:2.5.0-alpha04 iptal edilir. 2.5.0-alpha04 sürümü şu commit'leri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • NavHost artık hangi girişlerin oluşturulacağını belirlemek için NavController içindeki visibleEntries öğesine bağlıdır. Bu, iç içe yerleştirilmiş NavHost kullanılırken artık içteki NavHost öğesinin düzgün şekilde animasyonla çıkacağı 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ü durumuna göre belirleniyor. Bu, navController öğesinin ana makine yaşam döngüsü STARTED'ı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. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
  • NavDeepLink artık değeri olmayan tek bir sorgu parametresi içeren URI'leri ayrıştırabilir. (I0efe8, b/148905489)
  • Boş dizeler artık derin bağlantılarda geçerli bağımsız değişkenler olarak kabul ediliyor. (I70a0d, b/217399862)
  • Ad alanları kullanılırken ve AndroidManifest.xml bulunmadığında Navigation Safe Args artık kilitlenmeyecek. (I17ccf, b/227229815)

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha03 iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Artık ViewModel oluşturmak için CreationExtras değerini by navGraphViewModels parametresine 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'ler oluşturmak için NavBackStackEntries ile birlikte kullanıldığında artık doğru şekilde çalışacak. (I69161, b/217617710)
  • Navigation Safe Args artık AndroidManifest'teki paketin yerine build.gradle içinde tanımlanan ad alanının kullanılmasını destekliyor. (I659ef, b/217414933)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha02 iptal edilir. 2.5.0-alpha02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Gezinme 2.4.1 bölümünde: NavHostFragment, iç içe yerleştirilmiş grafiklerle viewbinding kullanılırken artık OnBackPressedDispatcher öğesini doğru şekilde ayarlayacak. (Ifbb51, b/214577959)
  • Gezinme2.4.1: Birden fazla iç içe yerleştirilmiş NavGraph üzerinden 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 iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Bir Fragment'ın onCreate() öğesinden by navGraphViewModels() aracılığıyla oluşturulan ViewModel öğesine erişmenin IllegalStateException ile başarısız olmasına neden olan sorun düzeltildi. (I8a14d)
  • NavDeepLink artık gereksiz yere iki kez kod çözülmeyecek. Bu da nihai hedefinize doğru bağımsız değişkenlerin iletileceği anlamına geliyor. (I31b0a, b/210711399)

Safe Args

  • Safe Args artık Android Gradle eklentisinin 7.0.4 sürümüne bağlıdır. Bu nedenle, Navigation Safe Args artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacak ancak Android Gradle eklentisinin 7.1.0 ve sonraki sürümleriyle uyumlu olacaktır. (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 iptal edilir. 2.4.2 sürümü şu commit'leri 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 iptal edilir. 2.4.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavHostFragment, iç içe yerleştirilmiş grafiklerle görünüm bağlama kullanılırken artık OnBackPressedDispatcher öğesini düzgün şekilde ayarlayacak. (Ifbb51, b/214577959)
  • Birden fazla iç içe yerleştirilmiş NavGraph üzerinden derin bağlantı oluşturulduğunda geri yığın artık ara başlangıç hedeflerini düzgün şekilde içerecek. (I504c0, b/214383060)
  • Navigation 2.5.0-alpha01'dan geri taşındı: by navGraphViewModels() aracılığıyla oluşturulan bir ViewModel'e Fragment'in onCreate() bölümünden erişildiğinde IllegalStateException ile başarısız olmasına neden olan sorun düzeltildi. (I8a14d)
  • Navigation 2.5.0-alpha01'dan geri taşındı: NavDeepLink artık gereksiz yere iki kez kod çözülmüyor. Bu sayede, düzgün şekilde kod çözülmüş bağımsız değişkenler artık nihai hedefinize iletiliyor. (I31b0a, b/210711399)
  • Navigation 2.5.0-alpha01'dan geri taşındı: Safe Args artık Android Gradle eklentisinin 7.0.4 sürümüne bağlıdır. Bu nedenle, Navigation Safe Args artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacak ancak Android Gradle eklentisinin 7.1.0 ve sonraki sürümleriyle uyumlu olacaktır. (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 iptal edilir. 2.4.0 sürümü şu commit'leri içerir.

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

  • Tüm Navigation yapıları Kotlin'de yeniden yazıldı. Bu, genel öğeler kullanan sınıfların (ör. NavType alt sınıfları) boş değer atanabilirliğini iyileştirdi. Eskiden -ktx yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı. -ktx yapay öğeleri yayınlanmaya devam eder ancak tamamen boştur.
  • navigation-fragment yapısı artık yeni AbstractListDetailFragment aracılığıyla iki panelli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, bir liste bölmesini (alt sınıfınız tarafından sağlanır) ve uygulaması olarak NavHostFragment kullanan bir ayrıntı bölmesini yönetmek için SlidingPaneLayout kullanır.
  • NavController üzerindeki currentBackStackEntryAsFlow() yöntemi, mevcut NavBackStackEntry her değiştiğinde yayın yapan bir Flow sağlar. Bu akış, OnDestinationChangedListener'yı manuel olarak yönetmeye alternatif olarak kullanılabilir.
  • NavController artık deneysel visibleEntries özelliği aracılığıyla tüm görünür NavBackStackEntry örneklerinin listesini StateFlow olarak alma olanağı sunuyor.
  • Artık NavType sınıfını genişleterek özel NavType'lar oluşturabilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Navigation Graph Kotlin DSL aracılığıyla) desteklenir.
  • Gezinme artık özel Gezinme Kullanıcı Arayüzü'nün uygulanmasına yardımcı olmak için kullanılabilecek findStartDestination() ve getHierarchy() API'leri sunuyor. findStartDestination(), NavGraph üzerinde bir uzantı işlevidir. startDestination kendi başına 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 }
    
  • NavigationUIBottomNavigationView yöntemleri, 1.4.0NavigationBarView sürümünde kullanıma sunulan üst sınıfını alacak şekilde güncellendi. Bu sayede, söz konusu yöntemler NavigationRailView ile kullanılabilir.

  • XML aracılığıyla bir <action> öğesi genişletilirken animasyon özellikleri, app:enterAnim="?attr/transitionEnter" söz dizimi kullanılarak temanızdan çekilen özellikleri kullanabilir.

  • Safe Args artık her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturuyor. (#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'si

Navigasyon'un önceki sürümlerinde, her hedef için sabit bir tam sayı kimliği kullanılıyordu. Bu kimlik, hedefi kardeş hedeflerinden benzersiz şekilde tanımlıyor ve doğrudan veya bir işlem aracılığıyla hedefe navigate() yapmanıza olanak tanıyordu. Bu yöntem, özellikle gezinme grafiğinizi XML'de tanımladığınız ve otomatik olarak oluşturulan R.id sabitlerini ya da Safe Args'ı (bu sabitleri kullanarak derleme zamanında kod oluşturur) kullanabildiğiniz durumlarda geçerliliğini ve faydasını korumaya devam etse de benzersiz tam sayılardan oluşan bu sistem, 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ü yakalamadı.

Bu sürümde, gezinme grafiğindeki bir hedefi rotasına göre benzersiz şekilde tanımlamak için yeni bir seçenek sunulmaktadır. Rota, bir hedefe giden benzersiz yolu tanımlayan bir String. Hedef kimliği alan tüm Kotlin DSL yöntemleri artık kullanımdan kaldırıldı ve rota alan eşdeğer bir API ile değiştirildi.

Her rota, hedefi tanımlayan bir Uri öğesinin "yol" kısmı olarak ele alınmalıdır. Ö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ılarla aynı kurallara uyarak rotanın bir parçası olmalıdır.

Daha önce yalnızca kimlik alan tüm NavController API'leri artık rota String alan bir aşırı yüklemeye sahip. navigate(), popBackStack(), popUpTo() ve getBackStackEntry() bu kategoriye dahildir.

Bu durumun API ile ilgili bazı sonuçları oldu:

  • Kotlin DSL'deki popUpTo Kotlin özelliğinin desteği sonlandırıldı. Bunun yerine popUpToId kullanılacak.
  • getStartDestination() API'sinin desteği sonlandırıldı ve getStartDestinationId() API'si kullanıma sunuldu.

Kimliğe göre gezinmenin aksine, rotaya göre gezinme örtülü derin bağlantılarla aynı kurallara uyar. Bu sayede, herhangi bir iç içe yerleştirilmiş grafikteki herhangi bir hedefe doğrudan gidebilirsiniz. Bu rotaların, her hedefe harici olarak görünür bir derin bağlantı açıkça eklenmeden çok modüllü projelerde kullanılabilmesini sağlayabilirsiniz.

Navigation Compose

navigation-compose yapısı, Navigation Component ile Jetpack Compose arasında entegrasyon sağlar. Başvurunuzdaki hedefler olarak @Composable işlevlerini kullanır.

Bu sürümde sunulanlar:

  • composable ve dialog hedeflerini kullanarak Kotlin DSL aracılığıyla gezinme grafiğinizi oluşturmanıza olanak tanıyan bir NavHost composable'ı. Ayrıca, Accompanist Navigation Material'daki gibi isteğe bağlı Navigator'lar için destek de sunar.
  • Hedefler arasında geçiş için zorunlu destek. Eşlikçi gezinme animasyonu, deneysel Compose API'leri kullanılarak giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
  • Her bir composable hedef için Lifecycle kapsamı. Her hedef yalnızca giriş geçişleri tamamlandığında RESUMED durumuna ulaşır ve çıkış geçişleri başladığında hemen STARTED durumuna düşer. Böylece, Lifecycle RESUMED olduğunda yalnızca bir navigate çağrısı tetikleyerek tüm IllegalStateException ve çoklu dokunma sorunlarından kaçınabilirsiniz.
  • ViewModel kapsamı (hedef düzeyinde Lifecycle ViewModel Compose 2.4.0'un viewModel() API'si veya Hilt Navigation Compose 1.0.0'un hiltViewModel() aracılığıyla). Bu kapsam, yapılandırma değişikliklerinden ve geri yığında olmaktan (Composable içeriğiniz başka bir şekilde kaldırıldığında) etkilenmez. Ayrıca ViewModel'in onCleared() bölümünde, NavBackStackEntry ile ilişkili durumun kalıcı olarak kaldırıldığını ve temizlendiğini belirten bir sinyal sağlar.
  • rememberSaveable Durumun hedef düzeyinde kapsamı belirlenir. Böylece, bir hedefe döndüğünüzde tüm birleştirilebilir durum otomatik olarak kaydedilir ve geri yüklenir.
  • NavController ve hedefinin durumunu işlem sonlandırma ve yeniden oluşturma sonrasında kaydetme ve geri yükleme için tam destek.
  • Sistemin geri düğmesiyle otomatik entegrasyon.
  • Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere sonuç döndürme desteği.

  • rememberNavController() ve currentBackStackEntryAsState() içinde, durum yükseltmeye izin vermek ve NavController öğesini NavHost dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamak için 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 Compose Navigation kılavuzuna bakın.

Birden fazla geri yığın

NavController, hedeflerin eski yığınını yönetmekten, navigate() ile hedeflere gittiğinizde hedefleri eski yığına eklemekten ve popBackStack() işlevini çağırdığınızda veya sistemin geri düğmesini tetiklediğinizde hedefleri kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'sindeki <action> öğelerine entegrasyon, geri yığını kaydetme ve geri yükleme işlemlerini destekleyecek şekilde genişletildi.

Bu değişiklik kapsamında, NavigationUI yöntemleri onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController() artık açılan hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek herhangi bir kod değişikliği yapmadan birden fazla geri yığını desteği sunuyor. Parçalarla gezinmeyi kullanırken birden fazla geri yığınıyla entegrasyon için bu yöntem önerilir.

Durumu kaydetme ve geri yükleme için temel alınan API'ler çeşitli yüzeyler aracılığıyla kullanıma sunulur:

  • Navigasyon XML'sinde <action> öğesi artık app:popUpToSaveState ve app:restoreState boolean özelliklerini kullanarak app:popUpTo üzerinden açılan tüm hedeflerin durumunu kaydedebilir ve app:destination olarak iletilen hedefle ilişkili durumu geri yükleyebilir:

    <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şturucusuna 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 NavOptions nesnesi oluştururken setRestoreState() ve yeni aşırı yüklemeyi kullanarak ek bir saveState parametresi alan setPopUpTo() oluşturabilirsiniz.

    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 yapılan programatik çağrılar artık ek bir saveState parametresi içerebilir.

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

Her durumda NavController, kapsamı belirlenmiş ViewModel örnekleri de dahil olmak üzere her NavBackStackEntry'nin durumunu kaydeder ve geri yükler. Navigator API'leri, her Navigator'nin kendi durumunu kaydetmesini ve geri yüklemesini destekleyecek şekilde güncellendi.

Davranış değişiklikleri

  • NavDeepLinkBuilder artık PendingIntent createPendingIntent() tarafından döndürülenlere PendingIntent.FLAG_IMMUTABLE ekliyor. Bu sayede, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışması sağlanıyor.
  • Gezinme artık Lifecycle 2.3.1'a bağlıdır. Ayrıca setGraph(), popBackStack(), navigateUp() ve navigate() yöntemleri artık NavBackStackEntry Lifecycle'ı güncelleyen yöntemler olarak @MainThread olarak işaretleniyor. Bu sayede Gezinme, Lifecycle 2.3.0'da tanıtılan ana iş parçacığı zorunluluğuyla uyumlu hale geliyor.
  • Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar) Uri içinde bulunduğunu doğruluyor.
  • NavDeepLink Ayrıştırılan bağımsız değişkenler artık diyez işaretlerini, yol segmentleri arasında ayırıcı olarak soru işaretleriyle aynı şekilde değerlendiriyor. Böylece, bir bağımsız değişkenin diyez işareti boyunca yayılması önleniyor.
  • Kotlin kodunun Safe Args'tan oluşturulduğu durumlarda, artık varsayılan değer içermeyen bağımsız değişkenler, varsayılan değer içeren bağımsız değişkenlerden önce parametre olarak yerleştiriliyor.
  • Safe Args, artık bağımsız değişken oluştururken varsayılan değerleri olmayan parametreleri varsayılan değerleri olan parametrelerden önce yerleştiriyor.
  • Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda, applicationIdTextResource kullanma uyarısını artık almazsınız.

Bilinen sorunlar

  • Navigation 2.5.0-alpha01'da düzeltildi: onCreate() Fragment'ından by navGraphViewModels() aracılığıyla oluşturulan ViewModel öğesine erişme işlemi IllegalStateException ile başarısız oluyordu. (b/213504272)
  • Navigation 2.5.0-alpha01'da düzeltildi: Safe Args 2.4.0, Android Gradle eklentisinin 7.1.0 ve sonraki sürümleriyle uyumlu değil. (b/213086135)
  • Birden fazla iç içe yerleştirilmiş gezinme grafiğiyle derin bağlantı oluşturma, tam geri yığı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 iptal edilir. 2.4.0-rc01 sürümü şu commit'leri içerir.

Davranış değişiklikleri

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

Hata Düzeltmeleri

  • Derin bağlantılar artık yer tutucunun adıyla aynı değerlere sahip bağımsız değişkenleri yoksaymayacak. (If8017, b/207389470)
  • NavController geri yüklendikten sonra geçişler kullanılarak iç içe yerleştirilmiş bir hedef açıldığında NavController artık kilitlenmeyecek. (I0f7c9, b/205021623)
  • Geçersiz bir startDestination kullanılırken hata mesajı, varsa başlangıç hedefinin rotasına yönlendirilir. (I86b9d, b/208041894)

Navigation Compose'daki 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ıldığında ortaya çıkabilecek kilitlenme sorunu düzeltildi. (Ic8976, b/208887901)
  • Yapılandırma değişikliklerinden veya işlemin sonlandırılmasından sonra iletişim kutusu hedefi artık ekranın üst kısmında düzgün şekilde geri yükleniyor. (I4c0dc, b/207386169)
  • İletişim kutusu kapatıldığında iletişim kutusunun NavBackStackEntry öğesinden ViewModel öğesini almaya çalışmanın başarısız olmasına neden olan sorun düzeltildi. (I6b96d, b/206465487)
  • Navigation Compose'un NavHost ile activity hedefleri kullanılırken sonsuz yeniden oluşturmaya neden olan sorun düzeltildi. (I8f64c)
  • Yapılandırma değişikliği veya işlem sonlandırma sonrasında eski etkinliğin referansını tutan Navigation Compose'daki sızıntı düzeltildi. (I4efcb, b/204905432)

Safe Args ile İlgili Hata Düzeltmeleri

  • SafeArgs artık işlem sonlandırıldıktan sonra özel paketlenebilir dizileri geri yüklemeye çalışırken kilitlenmiyor. (I618e8, b/207315994)
  • Güvenli bağımsız değişkenlerde, Boole dizilerinin null değerine sahip olmasına izin vermeyen hata düzeltildi. (I8c396, b/174787525)

Sürüm 2.4.0-beta02

3 Kasım 2021

androidx.navigation:navigation-*:2.4.0-beta02 iptal edilir. 2.4.0-beta02 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Davranış Değişiklikleri

  • Derin bağlantı kalıpları artık şişirme sırasında değil, NavDeepLink'te geç derleniyor. Bu, derin bağlantılar içeren gezinme grafiklerinin şişirilme süresini iyileştirmelidir. (b8d257, b/184149935)

Hata Düzeltmeleri

  • NavHost doğrudan etkinliğin setContent() öğesine eklendiğinde Lifecycle.State.STARTED öğesine geçiş yapıldıktan sonra NavBackStackEntries öğelerinin Lifecycle.State.CREATED öğesine gönderilmesiyle ilgili sorun düzeltildi. (Ia5ac1, b/203536683)
  • İletişim kutusu gerçekten gösterilmeden önce DialogFragment hedefinin eski yığından çıkarılmasının iletişim kutusunun kapatılmamasına neden olduğu ve kullanıcının hatalı iletişim kutusunu manuel olarak kapatmasıyla kilitlenmeye yol açtığı yarış durumu düzeltildi. (I687e5)
  • NavigationUI üzerindeki onNavDestinationSelected API'sinin, söz konusu gezinme grafiğine navigate() yapmamış olsanız bile true döndürmesine neden olan sorun düzeltildi. Artık yalnızca setupWithNavController tarafından dahili olarak kullanılan mantıkla aynı mantığı kullanıyor. Bu mantık, varış noktasının hierarchy'ını kullanarak yalnızca mevcut varış noktasıyla ilişkili MenuItem'ı seçiyor. (I2b053)

Sürüm 2.4.0-beta01

27 Ekim 2021

androidx.navigation:navigation-*:2.4.0-beta01 iptal edilir. 2.4.0-beta01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Artık by navGraphViewModel özelliğini, kimlik kullanmaya alternatif olarak bir rotayla birlikte kullanarak Navigation Kotlin DSL'nin Fragment'lerle kullanımını daha iyi destekleyebilirsiniz. (I901e3, b/201446416)

API Değişiklikleri

  • visibleEntries API artık deneyseldir. (I93f6f)

Hata Düzeltmeleri

  • Aynı ekranlar arasında ileri geri gezinme nedeniyle geçişler kesintiye uğradığında ViewModel'ler artık yok edilmeyecek (Id52d8, b/200817333).
  • NavDeepLink bağımsız değişkenleri, NavDestination'ye derin bağlantılar eklenirken artık varsayılan değer gerektirmiyor. (I5aad4, b/201320030)
  • Artık farklı yaşam döngülerine sahip NavBackStackEntries eşit kabul edilmiyor. Bu, NavHost'un singleTop ile gezinme yaparken ve alt menü öğelerini yeniden seçerken tüm hedefleri düzgün şekilde yeniden oluşturacağı anlamına gelir. (I1b351, b/196997433)
  • AbstractListDetailFragment ile ilgili bir sorun düzeltildi. Bu sorun, onCreateListPaneView() tarafından döndürülen liste bölmesindeki layout_width ve layout_weight özelliklerinin yanlış işlenmesine veya yoksayılmasına neden oluyordu. (f5fbf3)
  • İletişim kutusu hedeflerinin görsel durumu artık DialogFragmentNavigator'nın durumuyla doğru şekilde senkronize kalıyor. Bu, dismiss() API'sinin DialogFragment için eşzamansız olarak manuel şekilde çağrılmasının artık kapatılan iletişim kutusunun üzerindeki tüm iletişim kutusu hedeflerini düzgün şekilde temizlediği anlamına gelir. Bu durum, iletişim kutunuzu kapatmak için popUpTo veya popBackStack() kullandığınız durumları etkilemez. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener artık onDestinationChanged() için daha net hata mesajları gösteriyor. (Ie742d)

Sürüm 2.4.0-alpha10

29 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha10 iptal edilir. 2.4.0-alpha10 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavController artık visibleEntries StateFlow (Ia964e) aracılığıyla tüm görünür NavBackStackEntry örneklerinin listesini alma olanağı sunuyor.
  • rememberNavController() artık isteğe bağlı Navigator örnekleri alıyor. Bu örnekler, Accompanist Navigation Material'daki gibi isteğe bağlı gezinme öğelerini daha iyi desteklemek için döndürülen NavController öğesine ekleniyor. (I4619e)

Hata Düzeltmeleri

  • Etkinlik yeniden oluşturulduğunda Dinamik Gezinme artık kilitlenmeyecek. (Ifa6a3, b/197942869)
  • Yalnızca NavHost içeren bir composable hedefe geri döndükten sonra oluşan sistem geri düğmesiyle ilgili 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ıyla oluşturuyor. (I824a8, b/200059831)

Sürüm 2.4.0-alpha09

15 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha09 iptal edilir. 2.4.0-alpha09 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Artık clearBackStack() yöntemini kullanarak popBackStack() veya popUpToSaveState ile kaydedilen durumları temizleyebilirsiniz. (I80a0f)
  • Artık iç içe yerleştirilmiş gezinme grafiğinizin oluşturucusuna bir bağımsız değişken listesi ve/veya derin bağlantılar iletebilirsiniz. Bunlar, sonuçta elde edilen grafiğe otomatik olarak eklenir. (I8a470, b/182545357)

API Değişiklikleri

  • navArgument Kotlin DSL işlevi artık navigation-compose yerine navigation-common'nin bir parçası. 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ğerleri olmayan parametreleri varsayılan değerleri olan parametrelerden önce yerleştiriyor. (I89709, b/198493585)

Hata Düzeltmeleri

  • Navigation Compose kullanılırken NavGraph'lar yalnızca tüm alt öğeleri DESTROYED olduğunda DESTROYED olur. (I86552, b/198741720)
  • Boş değer atanabilir NavDeepLink bağımsız değişkenleri artık varsayılan değer gerektirmiyor. (Ia14ef, b/198689811)
  • Yeni bir grafikle setGraph() çağrıldığında, artık geri yığını açma davranışına ek olarak kaydedilmiş geri yığınlar da temizlenecek. (I97f96)
  • launchSingleTop kullanılırken OnDestinationChangedListener örneklerinin ve currentBackStackEntryFlow öğesinin bildirim almamasına neden olan sorun düzeltildi. (Iaaebc)

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

Sürüm 2.4.0-alpha08

1 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha08 iptal edilir. 2.4.0-alpha08 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Artık NavType sınıfını genişleterek özel NavType'lar oluşturabilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Navigation Graph Kotlin DSL aracılığıyla) desteklenir. (I78440, b/196871885)

Davranış Değişiklikleri

  • Kotlin kodu, Safe Args'tan oluşturulan işlemleri oluştururken artık varsayılan değer içermeyen bağımsız değişkenleri, parametre olarak varsayılan değer içerenlerin önüne yerleştiriyor. (Idb697, b/188855904)
  • Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar) Uri içinde bulunduğunu doğruluyor. (#204, b/185527157)

Hata Düzeltmeleri

  • getBackStackEntry ve previousBackStackEntry'nin remember() ile birlikte composable() içinde kullanılması artık eski yığında hedef olmaması nedeniyle istisna oluşturmayacak. (I75138, b/194313238)
  • Navigation Compose, geri yığın bağımsız değişkenleri değiştirildiğinde ve launchSingleTop=true kullanıldığında artık düzgün şekilde yeniden oluşturuluyor. (Iebd69, b/186392337)
  • 13 veya 29 hedef içeren bir grafikle setGraph aranırken artık ArrayIndexOutOfBoundsException olmayacak. (I1a9f1, b/195171984)
  • SafeArgs Java oluşturucu, Args sınıfları oluşturulurken artık lint uyarılarına neden olmamalıdır. (I1a666, b/185843837)

Harici Katkı (External Contribution)

  • ospixd, derin bağlantıların, gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar) Uri içinde bulunduğunu doğrulamasını sağladığı için teşekkür ederiz. (#204, b/185527157)

Sürüm 2.4.0-alpha07

18 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha07 iptal edilir. 2.4.0-alpha07 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Navigation Compose artık yapılandırma değişikliklerinden sonra ve birden fazla geri yığın özelliği kullanılırken grafikler değiştirildiğinde durumu düzgün şekilde kaydediyor. (If5a3d, b/195141957)
  • Gezinme Compose'u birden fazla geri yığınıyla kullanırken aynı sekmeyi yeniden seçtiğinizde artık boş ekranla karşılaşmayacaksınız. (I860dc, b/194925622)
  • NavHost artık NavBackStackEntry'lerin Lifecycle.State değişikliklerini gözlemliyor. Bu nedenle, bir parçada NavHost kullanıldığında artık yaşam döngüsü değiştikçe boş ekran yerine düzgün şekilde yeniden oluşturulacak. (I4eb85, b/195864489)
  • Bir DialogFragment öğesinin kapatılmasının, etkinliğiniz yeniden oluşturulduktan 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şleme özelliğini güncellememesine neden olan sorun düzeltildi. Bu durum, NavController'ın açılacak bir geri yığını olmamasına rağmen geri düğmesini engellemesine neden olabiliyordu. (If3b34)
  • Safe-args artık toSavedStateHandle yöntemini otomatik olarak oluşturuyor. Bu yöntem, ViewModel kodunuzu test etmek için kullanılabilir. (If1e2d, b/193353880)

Sürüm 2.4.0-alpha06

4 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha06 iptal edilir. 2.4.0-alpha06 sürümü şu commit'leri içerir.

API Değişiklikleri

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

Davranış Değişiklikleri

  • Animasyonlarla (ör. Crossfade) gezinirken yeni hedefin Lifecycle simgesi artık yalnızca animasyon tamamlandığında RESUMED simgesine ulaşacak. (If0543, b/172112072, b/194301889)
  • Navigation Compose'daki NavHost artık grafiği ilk kompozisyonun bir parçası olarak ayarlıyor. (Ieb7be)

Hata Düzeltmeleri

  • Navigasyon grafiğinin son hedefinin çıkarılması artık ClassCastException hatasına neden olmuyor. (If0543, b/172112072, b/194301889)
  • Uri olmadan derin bağlantı eklenip bir rota veya derin bağlantı üzerinden gezinildiğinde oluşan NullPointerException düzeltildi. (938a0c, b/193805425)
  • Navigation Compose'da derin bağlantılı bir NavBackStackEntry öğesinin RESUMED durumuna ulaşmamasına neden olan sorun düzeltildi. (I192c5)
  • Bir iletişim kutusu hedefinin açılmasının NavController'ın sistem geri düğmesi işleme özelliğini güncellememesine ve bu nedenle NavController'ın, açılacak bir geri yığını olmamasına rağmen geri düğmesini engellemesine neden olan sorun düzeltildi. (aosp/1782668)

Sürüm 2.4.0-alpha05

21 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha05 iptal edilir. 2.4.0-alpha05 sürümü şu commit'leri içerir.

Davranış Değişiklikleri

  • Navigation Compose'un NavHost özelliği artık hedefler arasında gezinirken her zaman çapraz geçişleri kullanıyor. (I07049, b/172112072)
  • Artık bir NavHost'un grafiğinde değişiklik yapabilirsiniz. Aynı startDestination ve grafikteki hedeflere sahip grafikler eşit kabul edilir ve NavController geri yığını temizlenmez. (I0b8db, b/175392262)

Hata Düzeltmeleri

  • NoSuchElementException düzeltildi. LifecycleObserver içinden popBackStack() çağrılırken NavBackStackEntry'e bağlı LifecycleObserver, NavController'ın durumunda yeniden girişli güncellemeler nedeniyle kilitleniyordu. (I64621)
  • AbstractListDetailFragment artık AbstractListDetailFragment kullanılmadığında SlidingPaneLayout öğesinin APK'nızdan tamamen kaldırılmasına olanak tanıyor. (I611ad)
  • NavGraph ve NavDestination artık equals yöntemini geçersiz kıldığından aynı değerlere sahip iki nesne eşit kabul edilir. (I166eb, b/175392262)

Sürüm 2.4.0-alpha04

1 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha04 iptal edilir. 2.4.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • navigation-fragment yapısı artık yeni AbstractListDetailFragment aracılığıyla iki panelli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, bir liste bölmesini (alt sınıfınız tarafından sağlanır) ve uygulaması olarak NavHostFragment kullanan bir ayrıntı bölmesini yönetmek için SlidingPaneLayout kullanır. (Iac4be, b/191276636)
  • navigation-compose yapay nesnesinin NavHost özelliği, artık composable hedeflerine ek olarak dialog hedeflerini de destekliyor. Bu iletişim kutusu hedeflerinin her biri, mevcut composable hedefinin üzerinde kayan bir Composable 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() ile ilgili tüm mevcut çağrıların push() olarak değiştirilmesi gerekir. (Ie89fc, b/172112072)
  • Özel Navigator örnekleri artık NavigatorState üzerinde pushWithTransaction ve popWithTransition API'lerini kullanarak hedefi eşzamansız olarak gönderebilir veya açabilir. Bu API'lerin henüz dahil edilen navigasyon uygulamalarının hiçbirinde kullanılmadığını unutmayın. (Ic4d7c, b/172112072)

Davranış Değişiklikleri

  • NavDeepLinkBuilder artık PendingIntent createPendingIntent() tarafından döndürülenlere PendingIntent.FLAG_IMMUTABLE ekliyor. Bu sayede, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışması sağlanıyor. (If8c52)

Hata Düzeltmeleri

  • <include-dynamic> ile ilgili bir sorun düzeltildi. Bu sorunda, grafiğe iletilen bağımsız değişkenler, dinamik olarak dahil edilen grafiğe doğru şekilde iletilmiyordu. (I3e115)
  • @null varsayılan değerine sahip bir string[] bağımsız değişkeniyle bir hedefe giderken oluşan NullPointerException sorunu düzeltildi. (I1fbe8)
  • @Navigator.Name için ProGuard kuralları ekleyerek R8 3.1 tam modu kullanılırken sorunları düzeltin. (I2add9, b/191654433)
  • SafeArgs, uygulamanızı Kotlin sürümünden önceki 1.5.0 sürümlerle oluştururken artık başarısız olmayacak. (Icd1ff, b/190739257)

Sürüm 2.4.0-alpha03

16 Haziran 2021

androidx.navigation:navigation-*:2.4.0-alpha03 iptal edilir. 2.4.0-alpha03 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Dahil edilen bir dinamik grafiğe gitmek için iki navigate() çağrısı yapılmasına neden olan sorun düzeltildi. (I7785c, b/188859835)
  • Gezinme 2.4.0-alpha01 bölümünde ortaya çıkan bir regresyon düzeltildi. Bu regresyon nedeniyle setupActionBarWithNavController(), üst düzey bir hedefteyken Yukarı simgesini düzgün şekilde kaldırmıyordu. (I5d443, b/189868637)
  • Daha önce NavController'ın kök grafiği çıkarıldıktan sonra popBackStack() çağrılırken oluşan IllegalStateException düzeltildi. (I2a330, b/190265699)
  • by navArgs() için ProGuard kuralları artık navigation-common veya ona bağlı tüm yapılar kullanılırken düzgün şekilde uygulanıyor. (I68800, b/190082521)
  • Geri arama aldığında ilk kez navigate()'i çağıran bir OnDestinationChangedListener, artık gittiği hedefle birlikte ikinci bir geri arama alır. (Ie5f9e, b/190228815)
  • Safe Args, dinamik özellik modülleri ve AGP 7.0+ ile kullanıldığında artık kilitlenmiyor. (I69518, b/189966576)

Bilinen Sorun

  • Safe Args, Kotlin'in eski bir sürümüne bağımlı olduğundan Gradle 6.7.0 kullanılırken 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üncelleme yapılarak çözülebilir. (b/190739257)

Sürüm 2.4.0-alpha02

2 Haziran 2021

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

Yeni Özellikler

  • Rotalar artık Etkinlik, Parça ve İletişim Kutusu hedefleri için ve DynamicNavigation Kotlin DSL'nin tamamında destekleniyor. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI, durumunuzun kaydedilmesini devre dışı bırakmanıza olanak tanıyan deneysel API'leri geçici olarak ekledi. Durumu her zaman kaydetmek doğru davranış olsa da durumu kaydederken desteklenemeyen, kullanımdan kaldırılmış kitaplıkların (ör.tutulan parçalar) kullanımları vardır. Bu nedenle, uygulamalara desteklenmeyen API'lerden yavaş yavaş geçme fırsatı verilir. (Idf93c)
  • Gezinme artık özel Gezinme Kullanıcı Arayüzü'nün uygulanmasına yardımcı olmak için kullanılabilecek findDestination() ve getHierarchy() API'leri sunuyor. findDestination(), NavGraph üzerinde grafikteki bir hedefi bulan bir uzantı işlevidir. getHierarchy(), belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen bir NavDestination işlevidir.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView alanını kullanan NavigationUI yöntemleri, bunun yerine Material 1.4.0, NavigationBarView'da kullanıma sunulan üst sınıfını kullanacak şekilde güncellendi. Bu sayede, söz konusu yöntemler NavigationRailView ile kullanılabilir. (Ib0b36, b/182938895)

  • Bir <action> öğesi XML üzerinden genişletilirken animasyon özellikleri, app:enterAnim="?attr/transitionEnter" söz dizimi kullanılarak temanızdan çekilen özellikleri kullanabilir. (I07bc1, b/178291654)

API Değişiklikleri

  • Kimlik kullanan Kotlin DSL oluşturucularının desteği sonlandırıldı ve rotaları kullanan oluşturucularla değiştirilmesi gerekiyor (I85b42, b/188816479) (I9f58f, b/188816479).

Hata Düzeltmeleri

  • DialogFragmentNavigator artık 'ın NavigatorState.pop() API'sini kullanarak NavController 'ı bilgilendiriyor. Bu sayede, sistemin geri düğmesine basılarak veya iletişim kutusunun dışına tıklanarak kapatıldığında NavController durumunun her zaman Navigator'ın durumuyla senkronize olması sağlanıyor. (I2ead9)
  • Gezinme, onDestinationChanged geri çağırma işleviyle OnDestinationChangedListeners listesi değiştirilirken artık ConcurrentModificationException vermiyor. (Ib1707, b/188860458)

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

  • NavDestination üzerindeki setId yöntemi artık @IdRes ile düzgün şekilde açıklama eklenmiş olduğundan yalnızca kaynak kimliklerini kabul ediyor. (I69b80)

  • findNode öğesinin 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 kullanma uyarısını artık almazsınız. (I6d67b, b/172824579)

Sürüm 2.4.0-alpha01

18 Mayıs 2021

androidx.navigation:navigation-*:2.4.0-alpha01 iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavController üzerindeki currentBackStackEntryAsFlow() yöntemi, geçerli NavBackStackEntry her değiştiğinde yayın yapan bir Flow sağlar. Bu akış, OnDestinationChangedListener öğesinin manuel olarak yönetilmesine alternatif olarak kullanılabilir. (I19c4a, #89, b/163947280)

Birden fazla geri yığın

NavController, hedeflerin eski yığınını yönetmekten, navigate() ile hedeflere gittiğinizde hedefleri eski yığına eklemekten ve popBackStack() işlevini çağırdığınızda veya sistemin geri düğmesini tetiklediğinizde hedefleri kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'sindeki <action> girişleriyle entegrasyon, geri yığını kaydetme ve geri yüklemeyi destekleyecek şekilde genişletildi. (b/80029773)

Bu değişiklik kapsamında, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController() NavigationUIyöntemleri artık açılan hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek herhangi bir kod değişikliği yapmadan birden fazla geri yığını desteği sunuyor. Parçalarla gezinmeyi kullanırken birden fazla geri yığınıyla entegrasyon için bu yöntem önerilir. (Ie07ca)

Durumu kaydetme ve geri yükleme için temel alınan API'ler çeşitli yüzeyler aracılığıyla kullanıma sunulur:

  • Navigasyon XML'sinde <action> öğesi artık app:popUpToSaveState ve app:restoreState boolean özelliklerini kullanarak app:popUpTo üzerinden açılan tüm hedeflerin durumunu kaydedebilir ve app:destination olarak iletilen hedefle ilişkili durumu geri yükleyebilir:

    <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şturucusuna 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 NavOptions nesnesi oluştururken setRestoreState() ve ek bir saveState parametresi alan yeni aşırı yüklemeyi setPopUpTo() için kullanabilirsiniz.

    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 yapılan programatik çağrılar artık ek bir saveState parametresi içerebilir.

Her durumda, NavController, kapsamı gezinme hedefi olan ViewModel örnekleri de dahil olmak üzere her NavBackStackEntry'nin durumunu kaydeder ve geri yükler. Navigator API'leri, her Navigator'nin kendi durumunu kaydetmesini ve geri yüklemesini destekleyecek şekilde güncellendi.

Navigation Compose'da composable hedefleri için kullanılan ComposeNavigator ile Navigation with Fragments'da <fragment> hedefleri için kullanılan FragmentNavigator ve DynamicFragmentNavigator, yeni Navigator API'lerini kullanacak ve durumu kaydetme ile geri yüklemeyi destekleyecek şekilde güncellendi.

Gezinme Rotaları

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

Daha önce yalnızca kimlik alan tüm API'ler artık rota alan bir aşırı yüklemeye sahip String. navigate(), popBackStack(), popUpTo() ve getBackStackEntry() bu kategoriye dahildir.

Bu durumun API ile ilgili bazı sonuçları oldu:

  • Kotlin DSL'deki popUpTo kotlin özelliğinin desteği sonlandırıldı. Bunun yerine popUpToId kullanılmalıdır. (I59c73, b/172823546)
  • getStartDestination() API'sinin desteği sonlandırıldı ve getStartDestinationId() API'si kullanıma sunuldu. (I0887f, b/172823546)

Navigation Compose'un önceki sürümlerinden Navigation Compose 2.4.0-alpha01'a yükselten geliştiriciler için bu, uzantı yöntemlerindeki aşağıdaki içe aktarmaların 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şkeninin yerini NavDestination üzerinde route özelliği aldı. Bu sayede navBackStackEntry.destination.route işlevini doğrudan çağırabilirsiniz.

API Değişiklikleri

  • Tüm Navigation yapıları Kotlin'de yeniden yazıldı. Bu, genel öğeler kullanan sınıfların (ör. NavType alt sınıfları) boş değer atanabilirliğini iyileştirdi. Eskiden -ktx yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı. -ktx yapay öğeleri yayınlanmaya devam edecek ancak tamamen boş olacak. (b/184292145)
  • NavDeepLinkBuilder artık oluşturulan geri yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)
  • DynamicNavHostFragment için fabrika işlevleri ekleyin (Icd515, b/175222619)
  • NavBackStackEntry benzersiz kimliği artık genel API'sinin bir parçası olarak kullanıma sunuluyor. (Ie033a)
  • name ve argument alanları ile NamedNavArgument'nin yapı bozma işlevleri artık herkese açık. (#174, b/181320559)
  • İlgili kompozisyon yerel ayarları için NavBackStackEntry sağlayan yeni bir NavBackStackEntry#provideToCompositionLocals uzantısı kullanıma sunuldu. (#175, b/187229439)

Safe Args

  • Safe Args artık her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturuyor. (#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'e bağlı olacak şekilde güncellendi 1.8.0. (#172, b/183990444)

Davranış Değişiklikleri

  • Gezinme artık Lifecycle 2.3.1'a bağlıdır. Ayrıca setGraph(), popBackStack(), navigateUp() ve navigate() yöntemleri artık NavBackStackEntry Lifecycle'ı güncelleyen yöntemler olarak @MainThread olarak işaretleniyor. Bu sayede Gezinme, Lifecycle 2.3.0'da tanıtılan ana iş parçacığı zorunluluğuyla uyumlu hale geliyor. (b/171125856)
  • Derin bağlantılardan Enum bağımsız değişkenlerinin ayrıştırılması artık büyük/küçük harfe duyarlı değildir. Bu sayede, enum'ın değeri RED 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 Compose 1.0.0-beta07 ve sonraki sürümlerle uyumludur.

Hata Düzeltmeleri

  • Sondaki bağımsız değişken yer tutucularının, eşleşen tam soneke sahip derin bağlantılara göre öncelikli olmasına neden olan sorun düzeltildi. (#153, b/184072811)
  • NavHostFragment artık varsayılan @Navigator.Name("dialog") ile aynı DialogFragmentNavigator öğesini kullanan özel Navigatörleri destekliyor. (Ib1c2c, b/175979140)
  • Aynı örnekle tekrar tekrar çağrılmasının sorunlara neden olmaması için NavigatorProvider#addNavigator işlevi iyileştirildi. (#176, b/187443146)

Harici Katkılar

  • Her NavArgs sınıfı için fromSavedStateHandle() yöntemi oluşturan Safe Args desteğini geliştirdiği için simonschiller'a teşekkür ederiz. (#122, b/136967621)
  • Derin bağlantılardan Enum bağımsız değişkenlerinin ayrıştırılmasını büyük/küçük harfe duyarsız hale getirdiği için Bradleycorn'a teşekkür ederiz. (#152, b/135857840)
  • osipxd kullanıcısına, sondaki bağımsız değişken yer tutucularının, tam eşleşen bir soneke sahip derin bağlantılara göre öncelikli olduğu sorunu düzelttiği için teşekkür ederiz. (#153, b/184072811)
  • Safe Args'ın KotlinPoet 1.8.0'e bağlı olacak şekilde güncellenmesi için tatocaster'a teşekkür ederiz. (#172, b/183990444)
  • name ve argument alanlarını ve NamedNavArgument'in yapı bozma işlevlerini herkese açık hale getirdiği için jossiwolf'a teşekkür ederiz. (#174, b/181320559)
  • NavBackStackEntry'ı ilgili kompozisyon yerellerine sağlayan yeni bir NavBackStackEntry#provideToCompositionLocals uzantısı sunduğu için jossiwolf'a teşekkür ederiz. (#175, b/187229439)
  • NavigatorProvider#addNavigator davranışını iyileştirerek aynı örnekle tekrar tekrar çağrılmasının sorunlara yol açmamasını sağlayan jossiwolf'a teşekkür ederiz. (#176, b/187443146)

Sürüm 1.0.0-alpha10

7 Nisan 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 iptal edilir. 1.0.0-alpha10 sürümü şu commit'leri içerir.

API Değişiklikleri

  • NavHost artık Modifier kabul ediyor. Bu değer, hedef composable'ları sarmalayan composable kapsayıcıya aktarılıyor. (I85aca, b/175125483)

Hata Düzeltmeleri

  • NavHost artık OnBackPressedDispatcherOwner bulunmadığında bile çalışıyor. Örneğin, NavHost önizlenirken bu durum geçerlidir. (I7d8b4)
  • Navigation Compose artık Navigation 2.3.5'a bağlıdır. Bu sayede, BackHandler öğesini NavHost hedefinde kullanırken yaşanan sorun düzeltilir. (I7e63b, b/182284739)

Sürüm 1.0.0-alpha09

10 Mart 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 iptal edilir. 1.0.0-alpha09 sürümü şu commit'leri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current artık ViewModelStoreOwner değerinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için ViewModelStoreOwner döndürüyor. ViewModelStoreOwner gerektiren API'ler (ör. viewModel() ve NavHost) ViewModelStoreOwner ayarlanmamışsa yine de istisna oluşturur. (Idf39a)

Hata Düzeltmeleri

  • Navigation Compose artık Navigation 2.3.4'e bağlıdır. Bu sürümde, grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlamaya çalışmayla ilgili düzeltme yer alır. (I65c24, b/177825470)

Sürüm 1.0.0-alpha08

24 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 iptal edilir. 1.0.0-alpha08 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavHost artık LocalSavedStateRegistryOwner CompositionLocal'ı bu hedefin NavBackStackEntry ile dolduruyor. Böylece, doğrudan SavedStateRegistry'e kaydedilen tüm durumlar hedefle birlikte kaydedilip geri yüklenebiliyor. (I435d7, b/179469431)

Sürüm 1.0.0-alpha07

10 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.

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

Sürüm 1.0.0-alpha06

28 Ocak 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri 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 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri 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 iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.

  • Compose 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 iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Yapılandırma değişikliği veya işlem sonlandırma ve yeniden oluşturma işleminden sonra popBackStack() ve navigateUp() işlevlerinin çalışmamasına neden olan sorun düzeltildi. (Icea47, b/173281473)
  • NavHost'unuzdaki iç içe yerleştirilmiş bir grafiğe gitme işlemi artık düzgün şekilde çalışıyor. (I0948d, b/173647694)

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Navigation Compose artık popUpTo ve launchSingleTop işlemlerini kullanmak için NavOptions'ı destekliyor (If96c3, b/171468994)
  • Navigation Compose DSL'de iç içe grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rota alan bir gezinme işlevi eklendi. (I1661d)
  • startDestination artık bir NavHost'un parametreleri listesinde rotadan önce geliyor (Ie620e).
  • Artık rotayı NavHost composable'ın dışında bir başlangıç hedefi olarak kullanarak grafik oluşturabilirsiniz. (Iceb75)

Sürüm 1.0.0-alpha01

28 Ekim 2020

android.navigation:navigation-compose:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

navigation-compose yapısı, Navigation Component ile Jetpack Compose arasında entegrasyon sağlar. Başvurunuzdaki hedefler olarak @Composable işlevlerini kullanır.

Bu ilk sürümde sunulanlar:

  • Gezinme grafiğinizi Kotlin DSL aracılığıyla oluşturmanıza olanak tanıyan bir NavHost composable.
  • Yaşam döngüsü, ViewModel ve hedef düzeyinde hatırlanan durumun kapsamı.
  • Sistemin geri düğmesiyle otomatik entegrasyon.
  • Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere sonuç döndürme desteği.
  • rememberNavController() ve currentBackStackEntryAsState() içinde, durum yükseltmeye izin vermek ve NavController öğesini NavHost dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamak için belirli yardımcılar oluşturun.

Daha fazla bilgi için Compose Navigation 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 iptal edilir. 2.3.5 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavDeepLinkRequest veya Uri kullanarak gezinirken artık KEY_DEEP_LINK_INTENT aracılığıyla bağımsız değişkenlerden amaç alarak sonuçlanan hedefteki Uri, işlem ve MIME türüne erişebilirsiniz. Bu, harici derin bağlantı için zaten kullanılabilen işlevselliğin yansıtılmasıdır. (I975c3, b/181521877)

Hata Düzeltmeleri

  • OnBackPressedCallbacks, LifecycleOwner olarak NavBackStackEntry ile bir dağıtıcıya eklendiğinde artık Etkinlik Yaşam Döngüsü STOPPED olduktan sonra STARTED olduğunda geri tuşuna düzgün şekilde müdahale ediyor (Iff94f, b/182284739).
  • Derin bağlantı alan ayrıştırma 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 hedefte birden fazla boş değer atanamayan varsayılan bağımsız değişken olduğunda ve bu hedefe yalnızca bu bağımsız değişkenlerin bir alt kümesini geçersiz kılarken gidildiğinde oluşabilecek NullPointerException düzeltildi. (aosp/1644827)

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

Harici Katkı (External Contribution)

  • Derin bağlantı alan adı ayrıştırmasını büyük/küçük harfe duyarsız hale getiren pull isteği için bentrengrove teşekkür ederiz. (#144, b/153829033)

Sürüm 2.3.4

Sürüm 2.3.4

10 Mart 2021

androidx.navigation:navigation-*:2.3.4 iptal edilir. 2.3.4 sürümü şu commit'leri içerir.

Yeni Özellikler

  • ReferenceType bağımsız değişkenleri artık bir derin bağlantı URI'sinin parçası olarak gönderildiğinde doğru şekilde ayrıştırılabilir. Bu, hem ham tamsayı değerini hem de 0x ile öneklenmiş 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 destekliyor. Bu sayede 0.0 kullanmak yerine android:defaultValue="0" kullanabilirsiniz. (#117, b/173766247)

Hata Düzeltmeleri

  • Navigasyon'un dinamik özellik desteğini kullanırken takılan yükleme ilerleme durumunu düzeltme (Ib27a7, b/169636207)
  • Aynı nesneyle setViewModelStore veya setLifecycleOwner'ı çağırma işlemi artık yapılmayacak (Idf491, b/177825470)
  • Safe-Args artık Java kullanılırken uygun yöntemlere bastırma ek açıklamaları ekliyor. (I8fbc5, b/179463137)

Harici Katkılar

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

Sürüm 2.3.3

Sürüm 2.3.3

27 Ocak 2021

androidx.navigation:navigation-*:2.3.3 iptal edilir. 2.3.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavBackStackEntry, Lifecycle'si CREATED'ye taşınmadan önce açıldığında artık kilitlenme yaşanmıyor. (Ie3ba3)
  • b/171364502 nedeniyle oluşan ve 0 animasyon kaynağı değerine sahip bir etkinliğe gidildiğinde ResourceNotFoundException hatasına yol açan 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 iptal edilir. 2.3.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • NavigationUI içinde, onNavDestinationSelected ile <activity> hedefinin kullanılması durumunda Etkinliğe gidilememesine neden olan gerileme düzeltildi. (I22e34, b/171364502)
  • navigation-dynamic-features-fragment simgesinin, yeni yüklenen hedefe birden fazla 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 gitmenin, geri yığında yeni bir grafik örneği oluşturmamasına neden olan sorun düzeltildi. (Ifc831)
  • Bir gezinme grafiğindeki son hedefi kaldıran bir popUpTo ile navigate() kullanıldığında gezinme grafiğinin hemen yok edilip arka yığından kaldırılmamasına neden olan sorun düzeltildi. (I910a3)
  • Navigation SafeArgs artık Kotlin'in açık API modunu destekleyen KotlinPoet 1.7.2 sürümünü kullanıyor. (I918b5)
  • NavHostFragment.findNavController(Fragment) artık Fragment hiyerarşisi ve Fragment'ın görünüm hiyerarşisinin mevcut kontrollerine ek olarak bir DialogFragment'ın kök dekor görünümünü de kontrol ediyor. Bu sayede, FragmentScenario ve Navigation.setViewNavController() ile gezinmeyi 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 iptal edilir. 2.3.1 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Varsayılan Animator kaynakları, Navigation UI'ya 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ılıyor (b/161586466)
  • Gezinme artık "No destination with ID" IllegalArgumentException'da mevcut hedefi içeriyor. Bu, geliştiricilerin hata ayıklama deneyimini iyileştirmelidir. (b/168311416)

Hata Düzeltmeleri

  • Oluşturulan bağımsız değişken sınıfı adı 100 karakterden uzun olsa bile Safe Args artık dönüş satırını sarmayacak. (b/168584987)

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

  • navigation-ui artık DrawerLayout 1.1.1'e bağlıdır. Bu sayede NavigationUI, LOCK_MODE_LOCKED_CLOSED veya LOCK_MODE_LOCKED_OPEN kullanılırken bile çekmeceyi açabilir. (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 iptal edilir. 2.3.0 sürümü şu commit'leri 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üklenmesini otomatik olarak gerçekleştirir. Daha fazla bilgi için Özellik modülleriyle gezinme başlıklı makaleyi inceleyin.
  • Gezinme Testi: navigation-testing yapısı, mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra eski yığını doğrulamanıza olanak tanıyan bir TestNavHostController sağlar. Daha fazla bilgi için Test Navigation (Test Gezinme) başlıklı makaleyi inceleyin.
  • Sonuç döndürme: Geri gezinme yığınındaki her hedefle ilişkili NavBackStackEntry, artık belirli bir geri gezinme yığını girişiyle ilişkilendirilmesi gereken küçük miktarlarda kaydedilmiş durumu depolamaya uygun bir SavedStateHandle'ye erişmenize olanak tanır. Daha fazla bilgi için Sonucu önceki hedefe döndürme başlıklı makaleyi inceleyin.
  • Openable için NavigationUI desteği: NavigationUI içindeki tüm DrawerLayout kullanımları, CustomView 1.1.0 içinde eklenen ve DrawerLayout 1.1.0 içinde 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 kullanılabilen app:uri'ye ek olarak app:action ve app:mimeType'ü destekleyecek şekilde genişletildi. NavController artık yeni NavDeepLinkRequest sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuyla gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest kullanarak gezinme başlıklı makaleyi inceleyin.

Bilinen Sorunlar

  • Derin bağlantı işlemleri ve MIME türleri için destek henüz Manifest Merger'da kullanılamamaktadı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> öğesini manuel olarak eklemeniz gerekir.

Sürüm 2.3.0-rc01

10 Haziran 2020

androidx.navigation:navigation-*:2.3.0-rc01 iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Bağımsız değişken içermeyen bir hedef örneği, singleTop ile bağımsız değişken içeren başka bir örnekle değiştirilirken oluşan NullPointerException sorunu düzeltildi. (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ü şu commit'leri içerir.

Hata Düzeltmeleri

  • İşlem sonlandırıldıktan sonra NavBackStackEntry öğesinin Lifecycle değerinin düzgün şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371)
  • OnDestinationChangedListener numarası aranmadan önce kaydedilen setGraph() örnekleri, işlem sonlandırıldıktan sonra artık doğru şekilde geri yüklenen hedefe gönderiliyor. (b/155218371)
  • singleTop kullanılırken NavBackStackEntry artık bağımsız değişkenlerini doğru şekilde güncelliyor ve güncellenen bağımsız değişkenler tüm OnDestinationChangeListener örneklerine gönderiliyor. (b/156545508)

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

Sürüm 2.3.0-alpha06

29 Nisan 2020

androidx.navigation:navigation-*:2.3.0-alpha06 iptal edilir. (2.3.0-alpha06 sürümü bu commit'leri içerir.)

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • İç içe yerleştirilmiş bir başlangıç hedefi kullanılırken derin bağlantı amaçlarının 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 iptal edilir. 2.3.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • <include-dynamic> kullanılarak yapılan dinamik grafik eklemeleri için artık app:graphPackage belirtmeniz gerekmez. Noktadan sonra applicationId öğesine moduleName soneki eklenerek varsayılan bir değer kullanılır. graphPackage simgenizi özelleştirmeniz gerekiyorsa artık ${applicationId} yer tutucusu destekleniyor. (b/152696768)
  • Navigation Graph Kotlin DSL artık işlemler için defaultArguments Map sunuyor. Bu, Navigation XML dosyalarındaki <action> öğelerinde varsayılan değerleri ayarlama özelliğini yansıtıyor. (b/150345605)

Hata Düzeltmeleri

  • Navigation 2.2.2: Etkinliğinizde birden fazla NavHostFragment örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken oluşan IllegalStateException sorunu 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 iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Navigation Kotlin DSL'de özellik modülü etkinliği ve fragment hedefleri için destek eklendi. (b/148969800)

API Değişiklikleri

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

Hata Düzeltmeleri

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

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

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

Sürüm 2.3.0-alpha03

4 Mart 2020

androidx.navigation:navigation-*:2.3.0-alpha03 iptal edilir. 2.3.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • DrawerLayout sınıfına güvenmek yerine, AppBarConfiguration artık CustomView 1.1.0-alpha02'da (DrawerLayout 1.1.0-alpha04 itibarıyla uygulanan DrawerLayout) kullanıma sunulan Openable arayüzünü kullanıyor. Bu sayede, Openable'nin özel uygulamalarını NavigationUI ile 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 saklıyor. (b/150213558)

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

  • Navigasyon, Core 1.2.0 bağımlılığını geri aldı ve artık Core 1.1.0 bağımlı. Bunun nedeni, Navigasyon'un Core 1.2.0'daki yeni API'lere bağımlı olmadığı durumlarda geliştiricileri daha yeni bir bağımlılığa geçmeye zorlamayı önlemektir.

Sürüm 2.3.0-alpha02

19 Şubat 2020

androidx.navigation:navigation-*:2.3.0-alpha02 iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • NavBackStackEntry artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durumu depolamaya uygun bir SavedStateHandle'ye erişmenize olanak tanır. Kullanım örneği için Sonuç döndürme başlıklı makaleyi inceleyin. (b/79672220)

API Değişiklikleri

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

Hata Düzeltmeleri

  • navigateUp(), uygulamanızı kendi görev yığınınıza başlatırken artık mevcut hedefin bağımsız değişkenlerini ve KEY_DEEP_LINK_INTENT öğesini önceki hedefe iletiyor. (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 iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.

Yeni özellikler

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

Hata düzeltmeleri

  • Gezinme 2.2.1: Sorgu parametreleri olmayan derin bağlantılar artık sorgu parametrelerini sondaki {argument} öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksayıyor. (b/147447512)
  • Gezinme 2.2.1: navigation-ui DrawerArrowDrawable için ProGuard kuralları, android.enableJetifier=true'ın gerekli olmaması için güncellendi. (b/147610424)
  • Gezinme 2.2.1: 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ü şu commit'leri içerir.

Hata Düzeltmeleri

  • Etkinliğinizde birden fazla NavHostFragment örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken IllegalStateException sorunu düzeltildi. (b/147378752)
  • NavigationUI artık boş etiketleri (ör. android:label=”” içeren bir hedef) yoksaymıyor ve başlığı doğru şekilde boş bir dize olarak ayarlıyor. Bu özellik daha önce Navigation 2.3.0-alpha04 sürümünde kullanıma sunulmuştu. (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 saklıyor. Bu özellik daha önce Navigation 2.3.0-alpha03'te 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 iptal edilir. 2.2.1 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Sorgu parametresi içermeyen derin bağlantılar artık sorgu parametrelerini sondaki {argument} öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksayıyor. (b/147447512)
  • android.enableJetifier=true'nin gerekli olmaması için DrawerArrowDrawable ile ilgili navigation-ui ProGuard kuralları 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 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.

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

  • NavBackStackEntry: Artık arka yığında bir hedef veya gezinme grafiğinin kimliğini ileterek NavController.getBackStackEntry() işlevini çağırabilirsiniz. Döndürülen NavBackStackEntry, hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıra gezinme odaklı bir LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() tarafından döndürülenle aynı) ve SavedStateRegistryOwner sağlar.
  • Lifecycle ViewModel SavedState Integration: SavedStateViewModelFactory, artık by navGraphViewModels() veya ViewModelProvider oluşturucusu NavController.getBackStackEntry() ya da NavController.getViewModelStoreOwner() tarafından döndürülen bir ViewModelStoreOwner ile birlikte kullanıldığında varsayılan fabrika olarak kullanılır.
  • Derin bağlantılar için sorgu parametresi desteği: Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekliyor. Varsayılan değeri olan veya boş değer atanabilen bağımsız değişkenler, derin bağlantılar eşleştirilirken artık isteğe bağlıdır.
  • Geliştirilmiş Animasyon Desteği: NavHostFragment artık Fragment 1.2.0'daki FragmentContainerView'ı kullanıyor. Bu sayede animasyonun z sırasıyla ilgili sorunlar ve pencere yerleştirmelerinin parçalara gönderilmesi düzeltiliyor.

Sürüm 2.2.0-rc04

18 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc04 iptal edilir. 2.2.0-rc04 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • navigation-ui tarafından kullanılan varsayılan şeffaflaştırma animasyonları, Fragment 1.2.0-rc04'daki ayarlanmış şeffaflaştırma animasyonlarıyla eşleşecek şekilde ayarlandı. (b/145769814)

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc03 iptal edilir. 2.2.0-rc03 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Sorgu parametreleri ve bir bağımsız değişken yolun son kısmı olarak 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ırmayla ilgili sorun düzeltildi. (b/144554689)
  • Derin bağlantı ayrıştırmayla ilgili, isteğe bağlı parametrelerin null yerine "@null" almasına neden olan sorun düzeltildi. (b/141613546)
  • NavHostFragment, FragmentContainerView ile kullanıldığında yapılandırma değişikliğinden sonra grafiği artık doğru şekilde geri yüklüyor. (b/143752103)

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

  • Gezinme artık uygun durumlarda Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03 ve Fragment 1.2.0-rc03'e bağlıdır.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.navigation:navigation-*:2.2.0-rc02 iptal edilir. 2.2.0-rc02 sürümü şu commit'leri içerir.

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

  • Navigasyon artık androidx.lifecycle 2.2.0-rc02 öğesine 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 beri herhangi bir değişiklik yapılmadan yayınlanıyor. 2.2.0-rc01 sürümü şu commit'leri içerir.

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.navigation:navigation-*:2.2.0-beta01 iptal edilir. 2.2.0-beta01 sürümü şu commit'leri 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() öğesini geçersiz kılıyor. (b/141264986)

Davranış değişiklikleri

  • Artık derin bağlantılar eşleştirilirken eşleşmenin başarısız olmasına neden olmak yerine fazladan sorgu parametreleri yoksayılıyor. (b/141482822)

Hata düzeltmeleri

  • Sorgu parametreleri de belirtilmişse derin bağlantının yolundaki bağımsız değişkenlerin yoksayılmasına neden olan sorun düzeltildi. (b/141505755)
  • navArgs() Kotlin uzantısı Activity artık ekstralar olmadığında daha iyi bir hata mesajı gösteriyor. (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ılırken NavigationUI, iki üst düzey hedef arasında geçiş yapılırken metin değişikliğini artık animasyonla göstermiyor. (b/140848160)

Sürüm 2.2.0-alpha03

18 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha03 iptal edilir. 2.2.0-alpha03 sürümü şu commit'leri içerir.

Davranış değişiklikleri

  • Artık setGraph numarası arandıktan sonra setViewModelStore() numarası arandığında IllegalStateException hatasıyla karşılaşılıyor. Tüm NavBackStackEntry örneklerinin ViewModel örnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla ilk kurulumun bir parçası olarak her zaman NavHost tarafından ayarlanmalıdır. (aosp/1111821)

Hata düzeltmeleri

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

Sürüm 2.2.0-alpha02

5 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

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

Hata düzeltmeleri

  • NavHostFragment öğesinin ViewPager2 öğesine eklenmesinin IllegalArgumentException ile başarısız olmasına neden olan sorun düzeltildi. (b/133640271)
  • NavInflater artık gereksiz yere getResourceName() çağırmıyor ve bu sayede şişirme süresi %40'a kadar kısalıyor. (b/139213740)

Sürüm 2.2.0-alpha01

7 Ağustos 2019

androidx.navigation:navigation-*:2.2.0-alpha01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

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

API değişiklikleri

  • Gezinme 2.1.0-rc01: 2.1.0-alpha02 sürümünde kullanıma sunulan ve desteği sonlandırılan NavController üzerindeki getViewModelStore() API'si kaldırıldı. (aosp/1091021)

Hata düzeltmeleri

  • NavHostFragment artık FragmentContainerView kullanıyor. Bu sayede animasyonun z sırasıyla ilgili sorunlar ve pencere yerleştirmelerinin Fragment'lere gönderilmesi düzeltiliyor. (b/137310379)

Sürüm 2.1.0

Sürüm 2.1.0

5 Eylül 2019

androidx.navigation:navigation-*:2.1.0 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

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

  • ViewModel'leri gezinme grafiğiyle sınırlama: Artık by navGraphViewModels() özellik temsilcisini kullanarak -ktx kitaplıklarını kullanan Kotlin kullanıcıları için veya NavController'a eklenen getViewModelStoreOwner() API'yi kullanarak gezinme grafiği düzeyinde kapsamı belirlenmiş 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 kutusu hedefleri: Artık <dialog> hedefleri oluşturabilirsiniz. Bu hedefler, navigate yaptığınızda DialogFragment gösterir. 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 ile gezinme: Artık navigateUri. Bu özellik, bir hedefe eklediğiniz <deepLink>'i kullanarak hedefe gitmenizi sağlar. Daha fazla bilgi için Uri kullanarak gezinme başlıklı makaleyi inceleyin.
  • NavHostController: Özel bir NavHost oluşturmak için özel olarak kullanılan API'ler NavHostController'e taşındı. Böylece uygulamalar NavController'lerini barındırma LifecycleOwner, OnBackPressedDispatcher ve ViewModelStore'ye bağlayabilir.

Sürüm 2.1.0-rc01

7 Ağustos 2019

androidx.navigation:navigation-*:2.1.0-rc01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

  • 2.1.0-alpha02 sürümünde kullanıma sunulan ve NavController üzerindeki desteği sonlandırılan getViewModelStore() API'si kaldırıldı. (aosp/1091021)

Sürüm 2.1.0-beta02

19 Temmuz 2019

androidx.navigation:*:2.1.0-beta02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • 2.1.0-beta01 sürümünde eklenen, istenmeden oluşturulan 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 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • NavigationUI artık setupWithNavController(), Toolbar veya CollapsingToolbarLayout ile kullanılırken Yukarı düğmesinin kaldırılmasını animasyonla gösteriyor. (b/131403621)

Hata düzeltmeleri

  • findNavController() ile aynı kapsayıcıda birden fazla NavHostFragment kullanılırken yaşanan zamanlama sorunu düzeltildi. (b/136021571)

Sürüm 2.1.0-alpha06

2 Temmuz 2019

androidx.navigation:*:2.1.0-alpha06 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

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

API değişiklikleri

  • NavController üzerindeki getViewModelStore() API'sinin desteği sonlandırıldı. Bunun yerine ViewModelStoreOwner döndüren yeni getViewModelStoreOwner() yöntemi kullanıma sunuldu. (aosp/987010)
  • <dialog> hedefleri gibi kayan pencere hedeflerinin uygulanması, artık tüm <dialog> hedeflerinin uyguladığı bir işaretleyici arayüzü olan FloatingWindow olarak genelleştirildi. Üst uygulama çubuğuyla etkileşim için kullanılan NavigationUI yöntemleri artık FloatingWindow hedeflerini yoksayıyor. (b/133600763)

Davranış değişiklikleri

  • Gezinme özelliği artık <dialog> hedefi kullanılırken durumunu ekranda görünenlerle doğru şekilde senkronize ediyor. Bu nedenle, artık bir <fragment> hedefi gibi iletişim kutusu olmayan ve etkinlik olmayan bir hedefe gittiğinizde Navigasyon, <dialog> hedeflerini otomatik olarak gösterir. (b/134089818)

Hata düzeltmeleri

  • Derin bağlantı işlenirken etkinliğin yeniden oluşturulması sırasında oluşan animasyon artık gezinme tarafından bastırılıyor ve görsel yanıp sönme düzeltiliyor. (b/130362979)
  • İlk parça eklenirken bir parçanın çıkarılması durumunda gezinme arka 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 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

  • NavController ile ilgili ana makine API'leri yeniden adlandırıldı ve NavController'nın yeni bir alt sınıfı olan NavHostController'ye 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()'i aramanı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 ile gezinme işleminden sonra geri yığınının doğru olmamasına neden olan sorun 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 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • NavHostFragment, sistemin geri düğmesi etkinliklerini yakalarken app:defaultNavHost öğesine doğru şekilde uyar ve Navigation 2.1.0-alpha03'daki gerilemeyi düzeltir. b/132077777
  • DialogFragmentNavigator artık popBackStack() ve navigateUp() işlemlerini doğru şekilde gerçekleştiriyor. b/132576764
  • İç içe yerleştirilmiş grafikler arasında tekrar tekrar gezinirken yaşanan 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 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Bilinen Sorunlar

  • NavHostFragment, app:defaultNavHost="false" b/132077777 kullanmasına rağmen sistemin geri düğmesini engellemeye devam ediyor.

Yeni özellikler

  • Artık <dialog> oluşturabilirsiniz. Bu yerlere navigate yaptığınızda DialogFragment gösterilir. NavHostFragment varsayılan olarak iletişim hedefi destekler. b/80267254
  • navigate ile kaynak kimliği veya NavDirections örneği çağırmanın yanı sıra artık doğru hedefe gitmek için bir hedefe eklediğiniz <deepLink> öğesini kullanan bir Uri üzerinden de 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şmesi için 400 ms'den 220 ms'ye çıkarıldı. b/130055522

API değişiklikleri

  • createFragmentNavigator() NavHostFragment yöntemi kullanımdan kaldırıldı ve işlevi, NavHostFragment alt sınıflandırılırken özel gezinme öğeleri eklemenin doğru giriş noktası olduğunu daha net hale getirmek için yeni onCreateNavController() yöntemine taşındı. b/122802849
  • Belirli bir Uri öğesinin söz konusu hedef tarafından veya bir NavGraph durumunda gezinme grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenize olanak tanımak için NavDestination öğesine bir hasDeepLink() yöntemi 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 yakalıyor ve bir parçaya döndükten sonra parça yaşam döngüsü yöntemlerinde koşullu gezinme yaparken yaşanan bir sorun düzeltiliyor. b/111598096
  • Safe Args için, belirtilmemiş app:argType içeren bir android:defaultValue=”@null” artık düzgün bir şekilde string bağımsız değişkeni olarak çıkarılıyor. b/129629192

Sürüm 2.1.0-alpha02

3 Nisan 2019

androidx.navigation:*:2.1.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • Kotlin kullanıcıları için by navGraphViewModels() özellik temsilcisini kullanarak veya NavController'ye eklenen getViewModelStore() API'yi kullanarak artık gezinme grafiği düzeyinde kapsamı belirlenmiş ViewModel'ler oluşturabilirsiniz. b/111614463

API değişiklikleri

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

Hata düzeltmeleri

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

Sürüm 2.1.0-alpha01

19 Mart 2019

Bu, Navigasyon 2.1.0'un 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'ye bağlıdır. Bu sürüm, androidx.legacy:legacy-support-core-utils:1.0.0 bağımlılığını da kaldırır. b/128632612

API Değişiklikleri

  • Kaynak kimliği ve paketle tıklama işleyici oluşturmaya alternatif olarak yeni bir Navigation.createNavigateOnClickListener(NavDirections) yöntemi eklendi. b/127631752
  • FragmentNavigator.instantiateFragment desteği sonlandırıldı. Varsayılan uygulama artık Fragment'leri oluşturmak için FragmentFactory kullanıyor. b/119054429

Hata Düzeltmeleri

  • Hedefe bağımsız değişkenler eklendiğinde gezinme artık boş Bundle göndermiyor. Bu sayede, android:defaultValue="@null" kullanılırken yaşanan sorun düzeltildi. b/128531879
  • Safe Args artık KotlinPoet 1.1.0'a bağlıdır ve bu sayede çok uzun paket adlarıyla ilgili sorun düzeltilmiştir. 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 sürümünde herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.0.0-rc02

6 Mart 2019

Navigation 2.0.0-rc02, androidx.navigation grup kimliğine sahip yeni yapılar sunar ve bağımlılıklarını AndroidX karşılıklarıyla değiştirir.

2.0.0-rc02'nin davranışı, Navigation 1.0.0-rc02'nin davranışı ile aynıdır. 1.0.0-rc02'den güncellemek için kodunuzda herhangi bir değişiklik yapmanız gerekmez. Yalnızca bağımlılıklarınızı yeni bağımlılıklarla eşleşecek şekilde güncellemeniz gerekir.

Navigation'ın 2.X sürümlerini kullanmak için projenizin AndroidX'e taşınmış olması gerekir. Kararlı Navigation 1.0, Support Library bağımlılıklarını kullanan son sürüm olacaktır. 1.0'ın ötesindeki tüm gelecekteki geliştirmeler AndroidX'e dayanacak ve kararlı 2.0 sürümü üzerine kurulacaktır.

AndroidX Öncesi Bağımlılıklar

Navigation'ın AndroidX öncesi sürümleri için şu 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
}

Safe args için üst düzey build.gradle dosyanıza aşağıdaki classpath'i 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 sürümünde herhangi bir değişiklik yapılmadan yayınlandı.

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 yapıldı.

Hata Düzeltmeleri

  • Kök grafikte kimlik yoksa popBackStack() öğesinin yoksayılmasına neden olan sorun düzeltildi. b/126251695
  • navigateUp() artık FLAG_ACTIVITY_NEW_TASK olmadan derin bağlantı işlendikten sonra çağrıldığında uygulamanızın görevine geri dönme işlemini doğru şekilde gerçekleştiriyor. b/126082008
  • ActivityNavigator.applyPopAnimationsToPendingTransition öğesinin doğru pop çıkış animasyonunu uygulamamasıyla ilgili sorun düzeltildi. b/126237567
  • Safe Args tarafından oluşturulan Kotlin kodu artık R sınıfıyla ilişkili paket adında in ve fun gibi Kotlin anahtar kelimelerini düzgün şekilde kod dışına alıyor. b/126020455

Sürüm 1.0.0-rc01

21 Şubat 2019

Bu, Navigation'ın 1.0.0 kararlı sürümü için yayınlanmış bir sürüm adayıdır. Bu sürümde bir hata düzeltmesi yapıldı.

Hata Düzeltmeleri

  • Parçalar ve singleTop gezinme işlemleri kullanılırken yaşanan sorun düzeltildi. b/124294805

Sürüm 1.0.0-beta02

12 Şubat 2019

Bu sürümde, bir dizi küçük iyileştirme ve önemli hata düzeltmeleri yer alıyor.

Yeni Özellikler

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

Davranış değişiklikleri

  • Tam derin bağlantı eşleşmeleri artık .* veya bağımsız değişken eşleşmeleri içeren derin bağlantılardan daha öncelikli. b/123969518

Hata Düzeltmeleri

  • popBackStack() ve navigateUp, artık geri yığındaki son hedefi açarken false değerini doğru şekilde döndürüyor. Bu sayede, 1.0.0-beta01 sürümünde kullanıma sunulan bir gerileme düzeltiliyor. b/123933201
  • Gezinme artık kaydedilmiş örnek durumun geri yüklenmesi sırasında ClassLoader değerini doğru şekilde ayarlıyor. Böylece, kaydedilmiş durumda Navigator özel sınıflar kullanılırken veya bir NavDestination öğesine gönderilen bağımsız değişkenlerde sorunlar önleniyor. b/123893858
  • Safe Args tarafından oluşturulan NavArgs sınıfları, kaydedilmiş örnek durumundan bir Parcelable[] bağımsız değişkeni geri yüklenirken artık kilitlenmiyor. b/123963545
  • Safe Args artık gereksiz oluşturulan Kotlin sınıflarını düzgün şekilde temizliyor. b/124120883

Sürüm 1.0.0-beta01

4 Şubat 2019

Bu, Navigation'ın ilk beta sürümüdür. Navigation API'nin, kritik bir sorun olmadığı sürece bir sonraki sürüme kadar kararlı kalması beklenmektedir. Bu sürümde bazı hata düzeltmeleri ve davranış değişiklikleri yapıldı.

Davranış değişiklikleri

  • Geçiş artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Safe Args aracılığıyla aynı şekilde işlenmesini sağlıyor. Sonuç olarak, yalnızca app:argType="reference" içeren bağımsız değişkenler başka bir kaynağa (örneğin, @color/colorPrimary) işaret eden bir varsayılan değere sahip olabilir. Farklı bir app:argType ile referans varsayılan değerini kullanmaya çalışmak, gezinme XML'si ayrıştırılırken bir istisnaya neden olur. 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'ye bağlıdır. aosp/888414

Hata Düzeltmeleri

  • Safe Args 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, her seferinde yalnızca tek bir hedef yerine, bir hedefin tüm kopyalarını geri yığının en üstünden kaldırmasına neden olan bir regresyon düzeltildi. b/123552990
  • FragmentNavigator durumunun NavController durumuyla senkronizasyonunun bozulmasına ve eski yığını geri yüklemeye çalışırken IllegalStateException'ye neden olan sorun düzeltildi. b/123803044
  • ProGuard, karartma ile kullanılırken NavigationUI işlenmiş geri okunun görünmemesi sorunu düzeltildi. b/123449431
  • Safe Args tarafından oluşturulan kod artık app:argType biçimindeki statik bir iç sınıfa işaret eden .OuterClass$InnerClass kullanımını düzgün şekilde işliyor. b/123736741
  • Safe Args tarafından oluşturulan Java kodu artık genel işlemleri ve derin iç içe yerleştirilmiş hedefleri düzgün şekilde işliyor. b/123347762

Sürüm 1.0.0-alpha11

23 Ocak 2019

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

Hata Düzeltmeleri

  • Safe Args'ın, genel işlemlerle ilişkili Directions sınıfını içe aktaramamasına neden olan sorun düzeltildi. 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 aktaramıyor. b/123307342

Bu sürüm, zarar veren API değişiklikleri içerir. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.

Yeni Özellikler

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

Davranış Değişiklikleri

  • Eşleşen derin bağlantılar artık en çok eşleşen bağımsız değişkene sahip derin bağlantıya yönlendiriliyor. b/118393029
  • NavController cihazında setGraph() adlı kişiyi aradığınızda artık geri yığın sıfırlanacak. b/111450672
  • Bilinmeyen derin bağlantılar artık IllegalStateException hata vermiyor ancak yoksayılıyor. Bu sayede, iç içe yerleştirilmiş veya birden fazla NavHostFragment ile ilgili sorunlar düzeltiliyor. b/121340440

Zarar Veren Değişiklikler (Breaking Changes)

  • Bir etkinliğe pop animasyonları uygulama için kullanılan NavOptions.applyPopAnimationsToPendingTransition() yöntemi ActivityNavigator'ye taşındı. b/122413117
  • Safe Args artık bağımsız değişken içermeyen işlemler için aynı sınıfların kopyalanmasını önlüyor. Oluşturulan NavDirections sınıflarındaki bağımsız değişken içermeyen yöntemlerin dönüş türü artık NavDirections. b/123233147
  • Safe Args tarafından oluşturulan Directions sınıflarında artık herkese açık oluşturucu yok. Yalnızca oluşturulan statik yöntemlerle etkileşim kurmanız gerekir. b/123031660
  • Safe Args tarafından oluşturulan NavDirections sınıfları artık herkese açık bir oluşturucuya sahip değil. 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 adlı satıcının getArguments() ürünü iade edildiğinde artık @Nullable yerine @NonNull olarak işaretleniyor.Bundle b/123243957

Hata Düzeltmeleri

  • NavDeepLinkBuilder artık benzersizliği belirlemek için ilettiğiniz bağımsız değişkenleri kullanarak aynı hedefe yapılan birden fazla eşzamanlı PendingIntent isteğini doğru şekilde işliyor. b/120042732
  • NavController artık iç içe yerleştirilmiş NavHostFragment veya geri yığını olan diğer alt parçalar kullanılırken popBackStack() işlemlerini doğru şekilde gerçekleştiriyor. 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 Directions sınıfları artık hedefteki bir işlemle aynı kimliğe sahip genel işlemleri doğru şekilde işliyor. b/122962504
  • Safe Args tarafından oluşturulan NavDirections sınıfları, equals() doğru değerini döndürdüğünde artık eşit hashCode() değerlere sahip.b/123043662
  • FragmentNavigator artık NavHostFragment'nin FragmentManager üzerinde özel FragmentTransactions yapmaya çalıştığınızda daha iyi bir hata mesajı veriyor. Her zaman getChildFragmentManager() kullanmalısınız. b/112927148

Sürüm 1.0.0-alpha09

18 Aralık 2018

Bu sürüm, zarar veren API değişiklikleri içerir. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.

android.arch.navigation:navigation-testing yapay nesnesinin geliştirilmesine devam etmemeyi tercih ettik. NavController'nın dahili olarak test edilmesi için 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 etmek gibi alternatif test stratejilerini kullanmanızı önemle tavsiye ederiz. Bu yaklaşım, AndroidDevSummit 2018'deki Single Activity konuşmasında ayrıntılı olarak ele alınmıştır. Ayrıca, Navigation ile test etme konusunda ek dokümanlar hazırlayacağız.

Yeni Özellikler

  • menuCategory="secondary" ile MenuItem, NavigationUI yöntemleriyle kullanıldığında artık geri yığını açmayacak. b/120104424
  • AppBarConfiguration artık navController.navigateUp() false döndürdüğünde çağrılacak bir yedek OnNavigateUpListener örneği ayarlamanıza olanak tanıyor. b/79993862 b/120690961

Zarar Veren Değişiklikler (Breaking Changes)

  • <argument> ile argType="reference" kullanıldığında gezinme artık referansı ayrıştırmıyor, bunun yerine ham kaynak kimliğini sağlıyor. b/111736515
  • onNavDestinationSelected() artık varsayılan olarak gezinme grafiğinizin başlangıç hedefine geri dönüyor ve bu sayede setup yöntemleriyle tutarlı hale geliyor. Geri yığınına ekleme yapmamak için menuCategory="secondary" öğesini MenuItem öğenize ekleyin. aosp/852869
  • Oluşturulan fromBundle() sınıflarının Args yöntemleri artık null değer atanabilir Bundle yerine null değer atanabilir olmayan Bundle değerini alıyor. aosp/845616

Hata Düzeltmeleri

  • Artık bağımsız değişkenler, her zaman dize olarak değil, doğru argType olarak derin bağlantılardan düzgün şekilde ayrıştırılıyor. b/110273284
  • 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 uyumlu b/119662045

Sürüm 1.0.0-alpha08

6 Aralık 2018

Bu sürüm, API'de zarar veren değişiklikler içeriyor. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.

Yeni Özellikler

  • NavigationUI yöntemleriyle kullanılan hedef etiketleri artık android:label içindeki {argName} örneklerini doğru bağımsız değişkenle otomatik olarak değiştirecek.b/80267266
  • Gezinme artık Destek Kitaplığı 28.0.0'a bağlıdır. b/120293333

Zarar Veren Değişiklikler (Breaking Changes)

  • OnNavigatedListener, OnDestinationChangedListener olarak yeniden adlandırıldı b/118670572
  • OnDestinationChangedListener artık bağımsız değişkenlerin Bundle değerini de iletiyor. aosp/837142
  • app:clearTask ve app:launchDocument özellikleri ile ilişkili yöntemleri kaldırıldı. Grafiğinizin köküyle birlikte app:popUpTo kullanarak tüm hedefleri geri yığınınızdan kaldırın. b/119628354
  • ActivityNavigator.Extras artık Builder kalıbını kullanıyor ve Intent.FLAG_ACTIVITY_ işaretlerini ayarlama özelliğini ekliyor. aosp/828140
  • NavController.onHandleDeepLink, handleDeepLink olarak yeniden adlandırıldı aosp/836063
  • NavOptions, NavInflater, NavDeepLinkBuilder ve AppBarConfiguration gibi alt sınıflara ayrılmak için tasarlanmamış birçok sınıf ve yöntem 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'ya taşındı. Böylece parça oluşturma işlemini FragmentFactory'ye devretmek kolaylaştı. b/119054429
  • NavGraphNavigator için oluşturucu artık Context almıyor. aosp/835340
  • NavigatorProvider artık arayüz değil, sınıftır. getNavigatorProvider() tarafından döndürülen NavigatorProvider işlevinde herhangi bir değişiklik yapılmadı. aosp/830660
  • NavDestination.navigate() kaldırıldı. Bunun yerine Navigator numaralı telefondan navigate() kullanıcısını arayın. aosp/830663
  • Navigator'da önemli yeniden düzenleme yapıldı. OnNavigatorNavigatedListener'a gerek kalmadı. Bunun yerine navigate, gidilen NavDestination'ı döndürüyor.
  • Navigator örnekleri artık NavController'e pop etkinlikleri gönderemez. Geri düğmesine basma işlemlerini durdurmak ve navController.popBackStack() işlevini çağırmak için OnBackPressedCallback kullanmayı deneyin. 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 oluşmasına neden olan çeşitli hatalar düzeltildi. b/118713731 b/113611083 b/113346925 b/113305559
  • <activity> hedeflerinin dataPattern özelliği artık toString() çağrılarak dize olmayan bağımsız değişkenlerden bağımsız değişkenlerle doldurulacak. b/120161365

Safe Args

  • Safe Args, Enum değerleri de dahil olmak üzere Serializable nesneleri destekler. Enum türleri, sınıf adı olmadan enum değişmezi kullanılarak varsayılan bir değer ayarlayabilir (ör.app:defaultValue="READ"). b/111316353
  • Safe Args, desteklenen tüm türlerin dizilerini destekler. b/111487504
  • Safe Args artık kaynak dizinlerinin alt klasörlerini yoksayıyor. b/117893516
  • Safe Args, uygun yerlere @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 hedef olarak kabul edileceğini özelleştirmenize olanak tanır. Ayrıntılı bilgi için güncellenmiş dokümanlara göz atın. 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, tire ve artı işareti içeren özel şemaları destekliyor. b/112806402

Zarar Veren Değişiklikler (Breaking Changes)

  • navigation-testing-ktx modülü navigation-testing artifact modülüne dahil edildi ve artık yayınlanmayacak.
  • navigation-testing yapısı artık Kotlin standart kitaplığına bağımlı. API, Kotlin kurallarıyla daha tutarlı olacak şekilde değiştirildi ancak Java ile yazılmış testler için kullanmaya devam edebilirsiniz.
  • Meta veri manifestinde kayıtlı gezinme grafikleri artık desteklenmiyor. b/118355937
  • Artık işlemler <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ını doğru şekilde uyguluyor. b/117145284
  • Özel Navigator'lar kullanılırken yapılandırma değişikliklerinden sonra meydana gelen kilitlenme sorunu düzeltildi. b/110763345

Safe Args

  • Safe args artık Android Gradle Eklentisi 3.2.1'e sabit bir bağımlılığa sahip. b/113167627
  • Artık iç sınıflar için yol tarifi oluşturulabiliyor. b/117407555
  • <include> grafiğine yol tarifi oluşturmayla ilgili sorun düzeltildi. b/116542123

Sürüm 1.0.0-alpha06

20 Eylül 2018

Yeni Özellikler

API Değişiklikleri

  • Önemli Değişiklik: Navigator navigate() yöntemi artık Navigator.Extras parametresini alıyor.
  • NavController'ın getGraph() yöntemi artık NonNull b/112243286

Hata Düzeltmeleri

  • NavigationUI.setupWithNavController(), tek tek hedeflerdeki görünümlerle birlikte kullanıldığında artık görüntüleme sızıntısına neden olmuyor b/111961977
  • Navigator onSaveState() artık yalnızca bir kez çağrılıyor b/112627079

Safe Args

  • Navigasyon hedefi Yol Tarifi sınıfları, üst Yol Tarifi sınıfı varsa bu sınıfı genişletir b/79871405
  • Directions ve Args sınıfları artık faydalı 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 hata düzeltildi. b/111907708
  • Oluşturulan Args sınıflarının equals() bölümündeki bir hata düzeltildi. b/111450897
  • Safe Args'daki derleme hatasını düzeltme. b/109409713
  • Kaynak tanımlayıcılardan Java adlarına dönüşümü düzeltme b/111602491
  • Safe Args eklentisindeki nullability ile ilgili hata mesajları düzeltildi.
  • Eksik nullability ek açıklamalarını ekleyin.

Sürüm 1.0.0-alpha04

19 Temmuz 2018

Navigation 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 geçerli Fragment'ı birincil gezinme parçası olarak ayarlar. Böylece, dış NavController'ın pop'u kaldırılmadan önce alt fragment yöneticilerinin pop'u kaldırılır. b/111345778

Safe Args

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

Hata Düzeltmeleri

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

Sürüm 1.0.0-alpha03

12 Temmuz 2018

Navigation 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 belirtilen hedef kimliği geri yığında olmadığında artık false değerini döndürüyor b/110893637
  • FragmentNavigator artık FragmentManager durumu kaydettikten sonraki gezinme işlemlerini yoksayarak "Can not perform this action after onSaveInstanceState" (onSaveInstanceState'den sonra bu işlem yapılamaz) istisnalarını önlüyor b/110987825.

Safe Args

  • Önemli Değişiklik: İşlem ve bağımsız değişken adlarındaki alfanümerik olmayan karakterler, ilgili NavDirections yöntemi adlarında camel case ile değiştirilecek.
    • Örneğin, DemoController.index, setDemoControllerIndex b/79995048 olur.
    • Örneğin, action_show_settings, actionShowSettings b/79642240 olur.
  • Önemli Değişiklik: Bağımsız değişkenler artık varsayılan olarak null olmayan değerler olarak kabul ediliyor. Dize ve paketlenebilir bağımsız değişkenlerde boş değerlere izin vermek için app:nullable="true" b/79642307 ekleyin.
  • Artık app:type="long" özelliğini "123L" biçiminde defaultValues ile kullanabilirsiniz. b/79563966
  • Parcelable bağımsız değişkenleri artık app:type için tam nitelikli bir sınıf adı kullanılarak destekleniyor. Yalnızca "@null" b/79563966 varsayılan değeri desteklenir.
  • Args sınıfları artık equals() ve hashCode()'yi 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

  • Parça 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 oluşan sorunlar düzeltildi. b/110178671
  • Grafikteki ilk hedefle (b/109909461) setPopUpTo kullanılırken karşılaşılan sorunlar düzeltildi.
  • Tüm app:defaultValue değerlerinin dize olarak iletilmesiyle ilgili sorun düzeltildi. b/110710788
  • Android Gradle Eklentisi 3.2 Beta 01 ile birlikte gelen aapt2, artık Navigation XML dosyalarındaki her android:name özelliği için keep kuralları ekliyor b/79874119
  • Varsayılan FragmentNavigator değiştirilirken oluşan 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şkenlerin URL kodunu çözüyor. b/79982454

Hata Düzeltmeleri

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

  • Gezinme, animasyonlar kullanılırken titremeyi düzeltmek için artık Destek Kitaplığı 27.1.1'e bağlıdır. b/80160903

  • Alt fragment olarak defaultNavHost="true" kullanılırken IllegalArgumentException sorunu düzeltildi. b/79656847

  • NavDeepLinkBuilder kullanılırken StackOverflowError düzeltildi. b/109653065

  • İç içe yerleştirilmiş bir grafiğe geri dönüldüğünde oluşan IllegalArgumentException düzeltildi. b/80453447

  • launchSingleTop kullanılırken Fragment'lerin çakışmasıyla ilgili sorun düzeltildi. b/79407969

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

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

API Değişiklikleri

  • İşlemler için clearTask özelliği ve NavOptions'deki ilişkili API kullanımdan kaldırıldı. b/80338878

  • İşlemler için launchDocument özelliği ve NavOptions'deki ilişkili API kullanımdan kaldı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.