Gezinme
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 9 Eylül 2026 | 2.10.1 | - | - | - |
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 okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Groovy
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.9.8" // 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.9.8" // 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.9.8" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.8" 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.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Navigasyon Sürümü 2.10
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
NavHostanimasyonları atladığında, beklenmedik kırpmaları önlemek için artıksizeTransformöğesini de atlanan animasyonun bir parçası olarak değerlendirecek. (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:
NavHostartık, tahmin edilen geri gitme hareketi sırasında özel geçişe izin vermek içinpredictivePopEnterTransitionvepredictivePopExitTransitionparametrelerini 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 paketesetPackageyöntemini kullanmanız gerekebilir.- Gezinme etkinlikleri sırasında geri yığın anlık görüntülerini göstermek için
NavBackStackEntryInfoeklendi. Bu sayede daha zengin özel tahmin edilen geri gitme animasyonları etkinleştirilir.
Ek Platform Desteği
navigation-common,navigation-runtimevenavigation-testingmodüllerinedesktop,linux,macOS,iOS,javascript,WASM,watchosvetvosdesteğ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ü şu 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 yığın anlık görüntülerini 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
handleDeepLinkdeğ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
ComposableFragmentdeğiştirildi. (I65ded, b/509640586) FragmentNavigator'da, işlemler optimize edildiğinde meşru Fragment'larınIllegalArgumentExceptionhatası 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
- Öngörülü geri gitme ile yarış koşulunun neden olabileceği olası
NavHost'lara karşı korumak içinNullPointerExceptioniyileş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ü şu 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)
watchosvetvoshedeflerinavigation-common,navigation-runtimevenavigation-testingmodüllerine eklendi (I60e46)DefaultNavTransitionsöğesini 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
NavHostartık tahmin edilen geri gitme hareketi sırasında özel geçişe izin vermek içinpredictivePopEnterTransitionvepredictivePopExitTransitionparametrelerini kabul eden bir aşırı yükleme sağlar. (Iac9b0, b/478294569)
Minimum SDK güncellemesi
- Varsayılan minSdk, AndroidX kitaplıklarının geri kalanıyla birlikte API 21'den API 23'e yükseltildi. (Ibdfca, b/380448311, b/435705964, b/435705223)
Harici Katkı (External Contribution)
navigation:navigation-common,navigation:navigation-runtimevenavigation:navigation-testingartı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
- Öngörülü geri gitme ile yarış koşulunun neden olabileceği olası
NavHost'lara karşı korumak içinNullPointerExceptioniyileş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
- Navigasyon
SafeArgs, Google hizmetleriyle birlikte kullanılırken artık yapılandırma önbelleğe alma sorunları yaşamıyor. (I57cda, b/458071608) - Gezinme testinde
SavedStateHandleoluşturucusununList<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
SafeArgseklentisi, modern Android Gradle eklentisi API'lerine taşındı. Bu sayede eklentinin tüm AGP 8.4.2 ve sonraki sürümlerle uyumlu olması sağlanacak. 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
SafeArgseklentisi, AGP 9.0.0-alpha04+ ile kullanıldığında artıkuseAndroidXö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 (Dependency Update)
- Navigation Safe Args Eklentisi artık Android Gradle eklentisi 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
NavHostgeçişinde işleyici 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,OnDestinationChangedListenerskullanılırkenConcurrentModificationException'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 etmemesi sorunu düzeltildi (Idb20e, b/418746335).
- Özel
NavTypeskullanılırken tür güvenli rotalarlaSavedStateHandletest edilirken oluşanMissingFieldExceptionhatası 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 üst kullanılarak oluşturulan
NavEntriesöğelerininLifecycle.Stateiç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
- Kullanılmalarını sağlamak için artık Navigation Safe Args işlemleri
@CheckResultek açıklamasıyla oluşturuluyor.
SupportingPane Arayüzü
- Özel Gezginler artık hedeflerini,
SupportingPanearayü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ı andaRESUMEDyapabilirsiniz.
Compose Kotlin Multiplatform
- Gezinme artık
IntentyerineNavDeepLinkRequestalan yeni bir ortakNavController.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
NavUrisunuyor. Bu sayede platformdan bağımsız bir şekilde URI oluşturmak mümkün olur. Teşekkürler Konstantin Tskhovrebov!
Tür güvenli işlevler
- Daha önce yalnızca
reifiedyöntemleriyle erişilebilen tür güvenli API'ler (ör.composable<YourScreen>artık doğrudan birKClassörneği alan, yeniden oluşturulmamış sürümlere sahip. - Gezinme tip güvenliği artık değer sınıflarını rota olarak veya rotanın bağımsız değişken türü olarak 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ğlanıyor.(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öğesinin ortak API'si, bir dize alanNavUrifabrika işlevi olarak değiştirildi. (I4db6e, b/403616316)
Bağımlılık Güncellemeleri
- Bu kitaplık artık Kotlin 2.0 dil seviyesini 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-testingmodülü artık Android'in yanı sıra masaüstü, Linux, macOS ve iOS'te de destekleniyor. (I2b770, b/398265336)NavTypeartı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ş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)
Harici Katkı (External Contribution)
NavUrioluş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
saveStatedenendiğinde, 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 sürümünden itibaren: Bir derin bağlantı ve derin bağlantı isteğinin uri, işlem ve mime üzerinde tam olarak eşleşmesi gerektiği
NavDeepLinkeş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: 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 ile ilgili sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya
Intentile aynı alanlara sahip olması yanlış bir şekilde 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
- Kullanılmalarını sağlamak için artık Navigation Safe Args işlemleri
@CheckResultek açıklamasıyla oluşturuluyor. (I14d4c, b/356323084)
Hata Düzeltmeleri
NavController'da, backStack durumları bir listeye kaydedildiğinde bir diziye yanlışlıkla geri yüklenmeye çalışılmasına neden olan hata düzeltildi. (Idfb9b)- Gezinme
2.8.7: Navigation Safe Args artık composable hedefleri 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ğlananNavDestinationetiketleri, özelNavTypemantığına uyulmasını sağlamak içinNavType.getüzerinden ayrıştırılır. (I7ec2f, b/388100796) - Gezinme
2.8.6:dataPatternile etkinliğe giderkenActivityNavigatorartık arg değerini bağımsız değişkeninNavTypeile kodlamaya çalışacak. (I16376, b/383616432) - Navigation
2.8.5: Navigation Compose kullanılırken ve gezinme işlemi, mevcut animasyonun sona erdiği karede ç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
- Daha önce yalnızca
reifiedyöntemleriyle erişilebilen tür güvenli API'ler (ör.composable<YourScreen>artık doğrudanKClassörneği alan, yeniden oluşturulmamış sürümlere sahip.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
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.setStartDestinationaşı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ğindeNavHostöğesininPredictiveBackHandleriçinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407) - Navigasyon
2.8.5: Bir grafiğinstartDestinationgüncellenirkenNavDestinationNullPointerExceptionsorunu düzeltildi. (I99421, b/361560785)
Harici Katkı (External Contribution)
- Gezinme
2.8.5: Gezinme türü güvenliği artık özelNavTypegerektirmeden bir rotanın bağımsız değişken türü olarakList<Enum>'ı 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 değer sınıflarını rota olarak veya rotanın bağımsız değişken türü olarak destekliyor. (I9344a, b/374347483)
Hata Düzeltmeleri
- Bir
NavBackStackEntryöğesine eklenenLifecycleObserver, ana makineLifecycleOwner(ör. kapsayan Etkinlik veya Parça) yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilecekConcurrentModificationExceptiondü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,
SupportingPanearayü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ı andaRESUMEDyapabilirsiniz. (Id5559) - Gezinme
2.8.3:navigation-common,navigation-runtimevenavigation-composemodülleri için,@Serializableile doğru şekilde açıklama eklenmemiş tür güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilderveNavDeepLinkBuilderuzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Navigation
2.8.3:@Keepile doğru şekilde açıklama eklenmemiş Enum bağımsız değişkenlerine sahip tür güvenli rotaları belirlemeye yardımcı olmak içinnavigation-common,navigation-runtimevenavigation-composemodüllerine yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilderveNavDeepLinkBuilderuzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Davranış Değişiklikleri
- Daha önce
DESTROYEDolan birNavControllerkullanmaya çalışmak artıkIllegalStateExceptionhatasına neden olacak. (I520da, b/369616172)
Hata Düzeltmeleri
- Enum sınıfı küçültülmüş derlemelerde silinirse
@Keepek 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ümlerle lint çalıştırmaya çalışırkenObsolete custom lint checkhatası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
- Navigation 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ş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)
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 bir 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
NavDeepLinkeş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 ile ilgili sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya
Intentile aynı alanlara sahip olması yanlış bir şekilde zorunlu tutuluyor. Derin bağlantılar yalnızca sahip oldukları alanlarla eşleşmelidir 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 hedeflerini 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
- Özel
NavTypemantığına uyulması için XML üzerinden sağlananNavDestinationetiketleriNavType.getaracılığıyla ayrıştırılır. (Id366d, b/388100796) dataPatternile etkinliğe giderkenActivityNavigatorartık arg değerini bağımsız değişkeninNavTypeile 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öğesininPredictiveBackHandleriçinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407) - Grafiğin
startDestinationgüncellenirkenNavDestinationNullPointerExceptionsorunu düzeltildi. (I99421, b/361560785) - Navigation Compose kullanılırken ve mevcut animasyonun sona erdiği karede navigate çağrıldığında beklenmedik bir ölçek animasyonuna neden olan sorun düzeltildi. (I26cb1, b/353294030)
- Bir
NavBackStackEntryöğesine eklenenLifecycleObserver, ana makineLifecycleOwner(ör. kapsayan Etkinlik veya Parça) yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilecekConcurrentModificationExceptiondüzeltildi. (Ia9494)
Harici Katkı (External Contribution)
- Gezinme tip güvenliği artık özel
NavTypegerektirmeden bir rotanın bağımsız değişken türü olarakList<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
- Gezinme
2.9.0-alpha03: 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ıfını destekliyor (I9344a, b/374347483)
Hata Düzeltmeleri
- Gezinme
2.9.0-alpha01bölümünden: Daha önceDESTROYEDolan birNavControllerkullanmaya çalışıldığında artıkIllegalStateExceptionhatası oluşacak. (I520da, b/369616172)
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-runtimevenavigation-composemodülleri için,@Serializableile doğru şekilde açıklama eklenmemiş tür güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilderveNavDeepLinkBuilderuzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)navigation-common,navigation-runtimevenavigation-composemodülleri için,@Keepile doğru şekilde açıklama eklenmemiş Enum bağımsız değişkenlerine sahip tür güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilderveNavDeepLinkBuilderuzantı 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ümleriyle lint çalıştırmaya çalışırkenObsolete custom lint checkhatası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 Türü Güvenliği artık özel
NavTypegerektirmedenDouble,Double?,DoubleArray,DoubleArray?,List<Double>veList<Double>?içeren Serializable sınıflarını destekliyor. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Hata Düzeltmeleri
- Navigasyon, bir rotanın bağımsız değişkenini
NavTypeile 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
popBackStackişlemi denenirken somutlaştırılmış sınıf türü alanpopBackStackişlevinin kullanılmasını sağlamak için yeni bir lint kuralı eklendi. (Ief161, b/358095343)
Hata Düzeltmeleri
- Navigasyon artık
NavGraphöğesininstartDestinationöğ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 olduğu gibi ayrıştırılıp pakette depolanacak. Bu, "null" değerlerinin boş bir nesneye 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
NavDestinationiç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 (Dependency Update)
- Navigation Safe Args artık Kotlin 2.X yerine Kotlin 1.9.24'e bağlı olduğundan geliştiricilerin güncelleme yapması gerekmez. (a4129a)
- Gezinme ile E-posta Yazma özelliği artık E-posta Yazma
1.7.2özelliğine 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
SeekableTransitionStateAPI'leri aracılığıyla uygulama içi tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanmış hareketle onaylamaya veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri hareketini kullanabilirsiniz.
Navigation Fragment Composable
NavHostFragmentyerineComposableNavHostFragmentalternatifini içeren yeni birnavigation-fragment-composeyapısı eklendi. Bu yapı, Navigation XML dosyalarınıza composable hedefler eklemenize olanak tanır. Hercomposablehedef, tam nitelikli adı her hedefteandroid:nameözelliği olarak kullanılan, üst düzey ve bağımsız değişken içermeyen bir@Composableyöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği göstermek 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 birCollectionNavType<T>sınıfı sunuyor. Tüm varsayılanNavTypedizileri (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeveStringArrayType) artık bu yeni sınıftan devralınıyor. NavTypeartı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 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. En üst düzey Enums, 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.EnumTypeeklendi. Bu,Enumtürlerinin artık özelNavTypegerektirmediği anlamına gelir.Enum'nınSerialName, varsayılan tam nitelikli ad olmalıdır. (I66d22, b/346475493) - Safe Args'da gezinme,
Int?,Long?,Float?,Boolean?veEnum<*>?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öğesininstartDestination,NavGraphöğesine iletilenstartDestinationrotasıstartDestination.routeile tam olarak 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
WrongStartDestinationTypelint kontrollerinin, iletilen sınıf türünde Companion nesnelerini kontrol etmemesi ve bu nedenle lint'in hatayı algılayamamasına neden olan sorun düzeltildi. (I92b09)
Sürüm 2.8.0-beta05
10 Temmuz 2024
androidx.navigation:navigation-*:2.8.0-beta05 iptal edilir. 2.8.0-beta05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- İç içe yerleştirilmiş
singleTopöğeler aynıNavGraphsrotayı paylaştığındastartDestinationnavigasyonunun 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)SavedStateHandleFactorytest API'si artık Android olmayan testlerde kullanılabilir ancak paketlerle bağımsız değişken ayrıştırmayı desteklemek için Robolectric'in kullanılması gerekir. (I76cdc, b/340966212)- Compose'da Type-Safe Navigation kullanılırken işlem sonlandırıldıktan sonra uygulama devam ettirildiğinde 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 zamanRESUMEDyaşam döngüsü durumuna geri dönmemesine neden olan sorun düzeltildi. Bu, geri dönen hedefin, hızlı kaydırmadan sonra yerine oturmak yerine doğru şekilde geri animasyon yapmasını da sağlar. (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 biremptyCollection()yöntemi kullanıyor. 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.serializeAsValueveserializeAsValuesile ilgili dokümanlar eklendi. (Ida6bd, b/344943214) - Boş
CollectionNavTypebağımsız değişkeniyletoRoute<T>çağrıldığında kilitlenme sorunu düzeltildi. Boş birCollectionNavTypeile gezinirken çıkış bağımsız değişkeni, Serializable sınıfınızda belirtilen varsayılan değer veya varsayılan değer yoksaemptyCollection()'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
NavTypeileNavBackStackEntry.toRoutekullanılırkenClassCastExceptionkilitlenmesi sorunu düzeltildi. (I1c29b, b/342239473) - Mevcut hedefteki kimlik aracılığıyla ulaşılamayan bir geri yığın girişini geri yüklemeye çalışırken oluşan, Gezinme 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çintypeMapparametresini alıyor. (Ie39fb, b/339026523)- Kotlin Serializable nesnesinden
SavedStateHandleoluşturmak içinnavigation-testing'ya 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
- Kotlin Serialization'a dayalı Navigation Compose ve Navigation Kotlin DSL kullanıcıları için derleme zamanı tür güvenliğini destekleme çalışmaları tamamlandı ve daha önce deneysel olan API'ler artık kararlı. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
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-composeyapısı artıkComposableFragmentiçinde oluşturulabilir yöntemlere yerel birLocalFragmentkompozisyonu sağlıyor. (If35e5)NavTypeartı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
NavHostFragmentyerineComposableNavHostFragmentalternatifini içeren yeni birnavigation-fragment-composeyapısı ekler. Bu yapı, gezinme XML dosyalarınızacomposablehedefleri eklemenize olanak tanır. Hercomposablehedef, tam nitelikli adı her hedefteandroid:nameözelliği olarak kullanılan, üst düzey ve bağımsız değişken içermeyen bir@Composableyö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. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
API Değişiklikleri
- Kotlin Serileştirme'ye dayalı bir yaklaşım kullanılarak Navigation Compose'da Safe Args desteği devam etti. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApiaçıklamasıyla işaretlenmiştir. Bu açıklama, gelecekteki bir sürümde tüm API yüzeyi tamamlandığında kaldırılacaktır. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Sürüm 2.8.0-alpha06
3 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha06 iptal edilir. 2.8.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
- Kotlin Serileştirme'ye dayalı bir yaklaşımla Navigation Compose'da Safe Args desteği başladı. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApiaçıklamasıyla işaretlenmiştir. Bu açıklama, gelecekteki bir sürümde tüm API yüzeyi tamamlandığında kaldırılacaktır. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Hata Düzeltmeleri
- Varsayılan contentAlignment bağımsız değişkeni olarak
NavHostkullanılır.Alignment.TopStartBu değişiklik,AnimatedContentiçin varsayılan değerle uyumlu hale getirir ve merkezden ölçeklendirme geçişinde beklenmeyen ölçeklendirme sorunlarını düzeltir. (I09e72, b/330111602) - Navigation Compose kullanılırken tahmin edilen geri gitme hareketi yapıldığında
NavHostartı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ınstartDestinationişlevinedefaultValue'a güvenmeden doğrudanstartDestinationrotasında bağımsız değişkenler iletebilirsiniz. Bu durum, iç içe yerleştirilmişNavGraphstartDestinationsiç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 soyutCollectionNavType<T>sınıfı eklendi. (Ic6d63, b/188693139) - Tüm varsayılan
NavTypedizileri (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeveStringArrayType) artıkCollectionNavTypetüründedir (Idcf79, b/188693139). NavTypeartık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açıkvalueEqualsAPI'si sunuyor. (I6cb97, b/327229511)
Hata Düzeltmeleri
- Derin bağlantılardaki sorgu parametreleri artık dize tabanlı
NavTypesiç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) NavControllergibi işlevler artıknavigateveyapopBackStackgibi rotaları destekliyor veNavTypesdizisi bağımsız değişkenleriyle doldurulmuş rotaları doğru şekilde eşleştirebiliyor. (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
composableve/veyanavigationişlevlerinin başlatılması kapsamında tanımlayarak Navigation Compose'daki geçişleriniz içinSizeTranformdeğerini belirtebilirsiniz. (I91062, b/296912651)
Hata Düzeltmeleri
- Compose Gezinme'de
NavHostöğesinin, Sistem Geri'yi hareket olmadan kullanırken geçişi düzgün şekilde göstermemesine neden olan 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@MainThreadolarak işaretleniyor. (Ibb988, b/299523245)
Hata Düzeltmeleri
- Gezinme'de, ilişkili girişin
ViewModelkaydedilmiş durumda olmadığı içinNavGraphViewModel'lerinDESTROYEDçok erken oluşturulmasına neden olan sorun düzeltildi. (Ib6bb7, b/317581849)
Bağımlılık Güncellemesi (Dependency Update)
- Navigation Compose artık Compose 1.7.0-alpha03'e bağlıdır.
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
SeekableTransitionStateAPI'leri aracılığıyla uygulama içi tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanmış hareketle onaylamaya veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri hareketini kullanabilirsiniz. (I8b8e9)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.navigation:navigation-*:2.8.0-alpha01 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 olanBackStackStatesızıntısı düzeltildi. (I598b0, b/309559751) - Uygulama çubuklarının başlığını doldurmak için
NavigationUIyardımcıları kullanılırken String olmayan bağımsız değişkenlerin düzgün şekilde gösterilmemesi sorunu düzeltildi. (#636, b/316676794)
Bağımlılık Güncellemesi (Dependency Update)
- Navigation Compose artık Compose
1.7.0-alpha01'un beklenmedik bir ölçek animasyonuna neden olabilecek bir sorunu düzeltmesine bağlıdır. (b/297258205)
Harici Katkı (External Contribution)
NavigationUIyardımcıları kullanılarak uygulama çubuklarının başlığı doldurulurken 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 birNavBackStackEntryüzerinde birden fazlasaveState()çağrısı yapıldığında birden fazla durumun kaydedilmesine ancak yalnızca ilk kaydedilen durumun geri yüklenebilmesine neden olanBackStackStatesızıntısı düzeltildi. (I598b0, b/309559751) - Navigation
2.8.0-alpha01sürümünden geri aktarıldı:NavigationUIyardımcıları, uygulama çubuklarının başlığını doldurmak için kullanıldığında String 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)
NavigationUIyardımcıları kullanılarak uygulama çubuklarının başlığı doldurulurken 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.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
NavGraphequals()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) önemli ölçüde iyileştirildi. Bu, yeni grafiği mevcut olanla dahili olarak karşılaştıran
setGraphgibi ç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) NavHostartık güncellenmiş durumu okumak için ikinci geçişin beklenmesine gerek kalmadan başlangıç hedefini ilk kompozisyon 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
setGraphiş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.visibleEntrieslistesine sızmayacak. (I67586, b/287969970) - Bir giriş, yapılandırma değişikliğiyle birlikte açıldığında
saveStateyanlışsa girişinViewModeldeğeri artık düzgün şekilde temizlenecek. (Idf242, b/298164648) - Geriye dönme yığını, yapılandırma değişikliğinden veya yalnızca
setGraphçağrısından önce tamamen boşsaNavControlleröğesinin aynı derin bağlantıyı birden fazla kez işleyebildiği bir sorun düzeltildi. Bu sorun yalnızca gelen Intent'teFLAG_ACTIVITY_NEW_TASKişareti ayarlandığında meydana geliyordu. (I73c7f)
Bağımlılık Güncellemeleri
- 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ınViewModelö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
popUpToiçin destek eklendi. Bu sayede,popBackStack'deki destekle eşleşen şekilde, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe geri dönülmesine olanak tanımak için bağımsız değişkenli rotalar kullanılabilecek. (I731f4, b/299255572)
Hata Düzeltmeleri
- ile yapılan bir navigasyonun
popUpToile yapılan başka bir navigasyonla kesintiye uğratılması durumundaFragmentNavigator'ın kilitlenmesine neden olan sorun düzeltildi. (I3c848, b/301887045) - Sistemin 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) DialogFragmentyaşam döngüsü, artık üstündeki iletişim kutusu kapatıldığında uygun şekildeRESUMEDdurumuna geçecek. (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,
visibleEntrieslistesinin yanlış girişler içermesine neden olan sorun düzeltildi. (I5caa9, b/288520638) - Kayan pencere hedefinin (ör.
Dialogs,Bottomsheetsvb.) hiçbir zamanRESUMEDyaş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, hedeflerinrememberSaveabledurumu ile Navigation Compose'unNavHost'i arasındaki etkileşim düzeltilerek işlem sonlandırılıp yeniden oluşturulduktan sonrarememberSaveabledurumu veViewModelsahibiSavedStateHandleörneklerinin düzgün şekilde geri yüklenmesi sağlanıyor. (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)
STARTEDdurumu yerineCREATEDyaşam döngüsü durumunda olması sorunu 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
RESUMEDyaşam döngüsü durumuna geçmek yerineSTARTEDyaş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 (Dependency Update)
- 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 Gezinme'de,
ScaffoldkullanıldığındaLifecycle.State.DESTROYEDViewModelöğ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 eşlikçi gezinme animasyonu kodunu Navigation Compose'a geri taşıyabildik.
Bu, AnimatedNavHost'da bulunan özel geçişleri ayarlama desteğinin tamamı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 bu, taşıma kılavuzunun tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka API değişikliği yapmanız gerekmeyecek. (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
- Gezinme artık
1.5.0yerine1.1.0iletisi oluşturma işlemine 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
NavHostkapsamında oluşturulanEnterTransitionveExitTransitionlambda'larının,NavHostkompozisyondan kaldırıldıktan sonra bile bellekte kalabilmesine neden olan sorun düzeltildi. (I893d0)
Bilinen Sorunlar
- Navigation 2.6.x sürümünde, popUpTo ile gezinirken
IllegalArgumentException'ya neden olabilecek bir sorun var. Bu istisna, grafiğinizi burada önerilen tavsiyeye benzer şekilde yeniden yapılandırarak önlenebilir. (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
popUpToseç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
NavHostartıkActivitySTOPPEDveRESUMEDişlemlerinden sonra bile sistemin geri çağırma işlemlerini Navigation Compose'da 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ı sürümüne ulaştığı için Accompanist Navigation Animation'daki kodu Navigation Compose'a geri taşıyabildik.
Bu, AnimatedNavHost'da bulunan özel geçişleri ayarlama desteğinin tamamı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 bu, taşıma kılavuzunun tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka API değişikliği yapmanız gerekmeyecek. (b/197140101)
Hata Düzeltmeleri
- Navigation
2.6.0-rc02: Fragment'lerdeki Navigation ile ilgili bir sorun düzeltildi. Bu sorunda,popUpToile gezinme ve görünümü yeniden oluşturmadan bir fragment'ı geri yığından çıkarma işlemi, sistemin geri düğmesinin çalışmamasına neden oluyordu. (Ieb8d4, b/281726455)
Bağımlılık Güncellemeleri
- Gezinme artık Compose'a
1.5.0-beta01bağ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 özelliğinde yapılan önemli değişiklikler
NavBackStackEntryvearguments, artık yalnızca hedefe gittiğinizde oluşturulan değişmez bağımsız değişkenlerin bir kopyasıdır.argumentsOnDestinationChangedListenerBu nedenle, bu paketlerde yapılan değişiklikler,argumentsveya diğerOnDestinationChangedListenerörneklerine sonraki erişimlerde yansıtılmaz.NavDeepLinkartı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.NavTypeartık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen varsayılan bir yöntemi de içeriyor.NavTypeöğesinin özel alt sınıfları artık bir değeri dizeye dönüştürmek içinserializeAsValueöğesini geçersiz kılabilir. Bu sayede hem serileştirme hem de seri durumdan çıkarma (parseValuearacılığıyla) tamamenNavTypesınıfında kapsanabilir.StringTypeartık bu yöntemi geçersiz kılarak belirtilenStringüzerindeUri.encode'u çağırır.
2.5.0 sürümünden beri Navigation Compose'da yapılan önemli değişiklikler
NavHostile bir composable'ı önizlerken artık varsayılan olarak NavGraph'ınstartDestinationgösterilecek.NavController.popBackStack(route),NavController.getBackStackEntry(route)veNavController.clearBackStack(route)artık kısmen veya tamamen doldurulmuş bağımsız değişkenlere sahip 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.navDeepLinkKotlin DSL'si kullanılarak boş birNavDeepLinkoluşturulmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyaç duyduğunu belirten bir lint uyarısı gösterilecek.
2.5.0 sürümünden beri Fragment'lerle gezinmede yapılan önemli değişiklikler
NavHostFragmentartık sistemin geri düğmesini engellemiyor. Bu, temel alınanFragmentManager'nın sistem geri işlemini gerçekleştirmesine olanak tanır. Bu sayede Fragment1.7.0-alpha01ve sonraki sürümlerde, Android U cihazlarda uygulama içi tahmini geri animasyonu sağlanabilir.- Parçalarla gezinme kullanılırken artık
FragmentTransactionişlemi manuel olarak yapılmaya çalışıldığındaFragmentManager'nin geri yığınına bir parça eklenir veIllegalArgumentExceptionhatası verilir. Parçaları her zamannavigate()API'si üzerinden eklemelisiniz. - Bir gezinme XML dosyasının etkinlik öğesindeki
app:dataveapp:dataPatternözelliklerinde yer tutucu olarak tam${applicationId}dizesi kullanıldığında, yer tutucu genişletme sırasında bağlamınpackageNameile otomatik olarak doldurulur. FragmentNavigatorartık gezinme ve açma işlemlerinde geçiş API'lerini kullanıyorNavBackStackEntries. Bu,NavBackStackEntryLifecycleöğesinin artık sonLifecycle.Stateöğesini hareket ettirmeden önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.DialogFragmentNavigatorartık gezinme ve açma işlemlerinde geçiş API'lerini kullanıyorNavBackStackEntries. Bu,NavBackStackEntryLifecycleöğesinin artıkDESTROYEDöğesine geçmeden önceDialogFragmentLifecycleöğesininDESTROYEDöğesine geçmesini bekleyeceği anlamına gelir.NavHostFragmentartıkNavControlleröğesini yalnızcaonCreate()işleminden sonra değil,NavHostFragmentöğesiFragmentManageröğesine eklendiği anda almanıza olanak tanır.- Gezinme özelliğinin dinamik özellik modülleri desteği artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlı.
- 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.
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.Menuaracılığıyla)NavigationUIartık bu gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak kabul ediyor ve grafikteki her hedefi yanlışlıkla üst düzey hedef olarak işaretlemiyor. Tek bir hedefin kimliğini iletme davranışı değişmedi. Aynı işlev,AppBarConfigurationüzerindeki yeniisTopLevelDestinationişlevi aracılığıyla kendi kodunuzda da kullanılabilir. - Üst uygulama çubuğuyla çalışmak için
NavigationUI'dakisetupWithNavControllerentegrasyonları artıkandroid:label'nızda bulunanReferenceTypebağımsız değişkenleri içinR.stringdeğerlerini, otomatik olarak oluşturulan kaynak tamsayısını çıkış olarak vermek yerine String değerlerine ayrıştıracak. NavigationUIartık seçilen birMenuItemüzerinden gezinemediğinde 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çalarda gezinmeyle ilgili bir sorun düzeltildi.
popUpToile gezinme ve görünümünü yeniden oluşturmadan bir parçayı geri yığından çıkarma, sistemin geri düğmesinin çalışmayı durdurması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
- Gezinme'de, bir parçayı
popUpToileonResume()yaşam döngüsü geri çağırma yönteminde gezinerek kaldırmanınIllegalStateException'ye neden olduğu parçalarla ilgili 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
NavBackStackEntryartık özel birtoStringuygulaması sunuyor. (Iff00b)
Hata Düzeltmeleri
- Parçalarla gezinme kullanılırken artık
FragmentTransactionişlemi manuel olarak yapılmaya çalışıldığındaFragmentManager'nin geri yığınına bir parça eklenir veIllegalArgumentExceptionhatası verilir. Parçaları her zamannavigate()API'si üzerinden eklemelisiniz. (I6d38e) - Aynı karede bir giriş ekleyen
navigateve bu girişi kaldıranpopBackStackolduğunda, eski yığındaki sonuç giriş artık tutarlı bir şekildeRESUMEDLifecycle.State'ye 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 atanamayanNavArgumentiçeriyorsa bu hedefin rotası, boş değer atanamayanNavArgumentile aynı ada sahip argümanlar için yer tutucular içermelidir. (Ic62bf, b/274697949) Action/MimeTypetemel alınarak yapılan derin bağlantı gezinme işlemleri, gezinme işlemindeAction/MimeTypeile eşleşenNavDestinationtarafından gerekli kılınan, boş değer atanamayan birNavArgumenteksikse 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 şekilde değiştiriyor. Bu düzeltme, Navigation Compose'da durumu kaydetmedenonLaunchSingleTopkullanılırken yaşanan kilitlenmeyi giderir. Bu düzeltme, kök grafik derlemeleriyle ilişkili hedeflere gitmenin yanlış geri yığın oluşturması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
NavHostFragmentartıkNavControlleröğesini yalnızcaonCreate()işleminden sonra değil,NavHostFragmentöğesiFragmentManageröğesine eklendiği anda almanıza olanak tanır. (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
NullPointerExceptiondüzeltildi. (6b3581, b/249988437) popUpToile gezinme işleminden sonra sistem geri işlevi kullanıldığındaNavControllerdurumu doğru girişe atlar. (I3a8ec, b/270447657)FragmentNavigatorartık sistem geri veyapopBackStack()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 özelliğini kullanmadan
FragmentNavigator'yaFragmentManagerparça eklemek artık kilitlenmeye neden olmayacak. (b17204, b/274167493)
Bağımlılık Güncellemeleri
- Gezinme artık Yaşam Döngüsü
2.6.1'ne bağlıdır. (586fe7) - Gezinme artık SavedState
1.2.1'e bağlıdır. (078e4e) - Gezinme artık ProfileInstaller
1.3.0'a bağlıdır. (512f0c)
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
- Artık rotaları alan
getBackStackEntry,popBackStack,clearBackStackAPI varyantları, boş değer atanabilir bağımsız değişkenlere ve boş değer atanabilir sorgu parametrelerine sahip rota kalıplarını kullanıyor (I22294, b/269302500). NavControlleröğesindenclearBackStack()çağrıldığında, temizlenen geri yığınla ilişkili parça yöneticisindeki kayıtlı 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
BottomNavigationViewiçindeki yanlışMenuItemöğesinin vurgulanmasına neden olan gerileme düzeltildi. (I634f6, b/270447657) - 2.6.0-alpha06 sürümünde,
AnimationkullanılırkenNavBackStackEntryöğ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
NavHostile bir composable'ı önizlerken artık varsayılan olarak NavGraph'ınstartDestinationgösterilecek. (I2b89f)
API Değişiklikleri
- Tüm
NavControllernavigateaşırı yüklemeleri artık ana iş parçacığında çağrıldıklarından emin olmak için@MainThreadile açıklama eklenmiş durumda. (I2c0b0, b/263427111)
Hata Düzeltmeleri
- Dinamik Fragment 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üncellenmemesi hatası düzeltildi (If559f, b/269044426).
Bilinen Sorunlar
- Parçalarla gezinme kullanılırken
AnimationAPI'leri kullanıldığındaNavBackStackEntry'nın yaşam döngüsüRESUMED'ye ulaşamıyor. (b/269646882) - Parçalarla gezinme kullanılırken ve
BottomNavigationile gezinilirken birden fazla giriş içeren bir geri yığını geri yüklemeye çalışırsanızBottomMenuItemdoğru şekilde güncellenmez. (b/270447657) - Parçalarla gezinme kullanılırken durum geri yüklendikten sonra parçası
DESTROYEDolduğundaNavBackStackEntryLifecycleDESTROYEDolmaz . (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)veNavController.clearBackStack(route)artık kısmen veya tamamen doldurulmuş bağımsız değişkenlere sahip 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)FragmentNavigatorartık gezinme ve açma işlemlerinde geçiş API'lerini kullanıyorNavBackStackEntries. Bu,NavBackStackEntryLifecycleöğesinin artık sonLifecycle.Stateöğesini hareket ettirmeden önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir. (I3cb19, b/238686802)DialogFragmentNavigatorartık gezinme ve açma işlemlerinde geçiş API'lerini kullanıyorNavBackStackEntries. Bu,NavBackStackEntryLifecycleöğesinin artıkDESTROYEDöğesine geçmeden önceDialogFragmentLifecycleöğesininDESTROYEDöğesine geçmesini bekleyeceği anlamına gelir. (I53ee5, b/261213893)
API Değişiklikleri
NavigatorState, artıkNavigator'lerinNavBackStackEntries'leri araLifecycle.State'lere taşımasına olanak tanıyanprepareForTransitionAPI'sini sunuyor. (I42c21, b/238686802)- Artık
NavGraphNavigatorveyaComposeNavigatorile ilişkili geri yığınabackstackmülkü üzerinden erişebilirsiniz.ComposeNavigatorartıkonTransitionComplete()geri çağırma işlevini de kullanıma sunarak bir gezinme veyapopBackStackişlemi gerçekleştirmiş olan birNavBackStackEntryöğesini tamamlandı olarak işaretlemenize olanak tanıyor. (I02062, I718db, b/257519195)
Hata Düzeltmeleri
push/popWithTransitionAPI'leri kullanılırken ve giriş zaten işlenirken gezinme durumu artık işlem yapmayacak. (Iadbfa, b/261213893)- İç içe yerleştirilmiş bir
NavGraphilelaunchSingleTopkullanılırken orijinal hedeftenstartDestination'sine kadar olan tüm hedefler yalnızca geri yığınının en üstüne doğru şekilde eklenir. (Id4bea, b/253256629) - Aynı hedefe
launchSingleTopişareti doğru olarak ayarlanmış şekilde gidildiğinde gezinme özelliği artıkDialogFragmentörneğini düzgün şekilde değiştirecek. (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çinserializeAsValueöğesini geçersiz kılabilir. Bu sayede hem serileştirme hem de seri durumdan çıkarma (parseValuearacılığıyla) tamamenNavTypesınıfında kapsanabilir.StringTypeartık bu yöntemi geçersiz kılarak belirtilenStringüzerindeUri.encode'u çağırır. (Ie5213, b/247637434)NavigationUIartık seçilen birMenuItemüzerinden gezinemediğinde 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 oluşan kilitlenme sorunu düzeltildi. (I51c24, b/243183636)
Bağımlılık Güncellemesi (Dependency Update)
- Gezinme özelliğinin dinamik özellik modülleri desteği artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlı. (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.3bölümünden:NavHost,Crossfadeiçin oluşturulacak bir hedef olmadığında artıkNoSuchElementException'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 kaydedilen Compose durumunun (ör.rememberSaveablekullanımları) unutulup kaldırılmamasına neden olan sorun düzeltildi. (I64949)
Bağımlılık Güncellemeleri
- Gezinme artık Fragment
1.5.4'a bağlıdır. (Icd424)
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.Menuaracılığıyla)NavigationUIartık bu gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak kabul ediyor ve grafikteki her hedefi yanlışlıkla üst düzey hedef olarak işaretlemiyor. Tek bir hedefin kimliğini iletme davranışı değişmedi. Aynı işlev,AppBarConfigurationüzerindeki yeniisTopLevelDestinationişlevi aracılığıyla kendi kodunuzda da kullanılabilir. (Ie936e, b/238496771)
Hata Düzeltmeleri
navigation:navigation-fragmentbileşeni artık Parça sürümü1.5.2'ne bağlıdır. (I00ba4)- Bir iletişim kutusu gibi
FloatingWindowhedefe gidildiğinde seçili menü öğesi 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'dakisetupWithNavControllerentegrasyonları artıkandroid:label'nızda bulunanReferenceTypebağımsız değişkenleri içinR.stringdeğerlerini, otomatik olarak oluşturulan kaynak tamsayısını çıkış olarak vermek yerine String değerlerine ayrıştıracak. (I5f803, b/167959935) NavDeepLinkartı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.NavTypeartık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen varsayılan bir yöntemi de içeriyor. (Id68c3, b/209977108)- Bir gezinme XML dosyasının etkinlik öğesindeki
app:dataveapp:dataPatternözelliklerinde yer tutucu olarak tam${applicationId}dizesi kullanıldığında, yer tutucu genişletme sırasında bağlamınpackageNameile otomatik olarak doldurulur. (Iaabde, b/234223561) navDeepLinkKotlin DSL'si kullanılarak boş birNavDeepLinkoluşturulmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyaç duyduğ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 dizeye ayrıştırmak için yeniNavDestinationuzantı işlevi eklendi.ReferenceTypedeğerlerini Dize değerlerine ayrıştırarakR.stringbağımsız değişkenlerini destekler. (I07d89, b/236269380)
Davranış Değişiklikleri
- NavBackStackEntry'nin
argumentsveOnDestinationChangedListener'ye iletilenargumentsartı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,argumentsveya diğerOnDestinationChangedListenerörneklerine sonraki erişimlerde yansıtılmaz. (I676f5)
Hata Düzeltmeleri
- Gezinme
2.5.2bölümünde: Dinamik Gezinme artık diğer modüllerden Activity hedeflerini yüklemeye çalıştıktan sonra bu hedeflere doğru şekilde gidiyor. (Ia2c16, b/240292838) - Gezinme
2.5.2: Gezinme, aynı hedefe gidiplaunchSingleTopişaretini doğru olarak ayarlarken 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 öğe paylaşan, iç içe geçmiş bir grafiğe gitmekten kaynaklananIllegalStateExceptiondü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,Crossfadeiçin oluşturulacak hedef olmadığında artıkNoSuchElementExceptionhatasına neden olmayacak. Artık yalnızca kompozisyon atlanır. (Ieb46e, b/253299416)- Bir hedef eski yığından çıkarıldığında, kaydedilen Compose durumunun (ör.
rememberSaveablekullanı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üllerdeki etkinlik hedeflerini, bu hedeflere gitmeden önce düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838)
- Gezinme, aynı hedefe gidip
launchSingleTopişaretini doğru olarak ayarlarken artık Fragment örneğini düzgün şekilde değiştiriyor. (I5a2f1, b/237374580) - Yeni açılan başlangıç hedefiyle üst öğeyi paylaşan, iç içe geçmiş bir grafiğe gidildiğinde oluşan
IllegalStateExceptionsorunu düzeltildi. (I9f7cb, b/243778589)
Bağımlılık Güncellemesi (Dependency Update)
- Gezinme
2.5.2artık Fragment1.5.2'a bağlıdır. (aosp/2178734)
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,Bundleiç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
- Navigation kitaplığı artık Lifecycle
2.5.1'a bağlıdır. (Ib4451) - Navigation kitaplığı artık Activity
1.5.1'ye bağlı. (I3efe8) - Navigation kitaplığı artık Fragment
1.5.1'a bağlıdır. (I56177)
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:
Navigationartık Lifecycle2.5.0'ınCreationExtrasaracılığıyla durum bilgisi içermeyenViewModelProvider.Factorysağlayabilir.
Navigation SafeArgs
Navigation Safe Args,Android Gradle Pluginbağımlılığını7.0.4'ye dayanacak şekilde yükseltti ve7.0'ten ö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
visibleEntriesAPI artık deneysel değildir veNavController'e 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
NavHostkullanılırken alt hedefler arasında hızlı geçiş yapıldığında kilitlenmeye neden olan sorun düzeltildi. (I3979a, b/234054916) Navigation SafeArgs,applicationIdSuffixve ad alanı kullanılırken artık kilitlenmeyecek. Bu durum,applicationIdbulunmadığında veyaapplicationIdile ad alanı farklı olduğunda geçerlidir. (I754b1, b/233119646)NavArgumentartık bağımsız değişkenin iç değerlerini göstermek için özel birtoString()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
navigation.xmldosyanızda<deeplink>öğelerini<activity>öğelerinin içine yerleştirme konusunda uyarı veren yeni bir lint kuralı eklendi.(Ic15a5, b/178403185)
Hata Düzeltmeleri
NavHostveDialogHostiçindeki birleştirilebilir kapsamlar artık beklenen sırada (yani içteki birleştirilebilirler dıştakilerden önce) kaldırılıyor. (I157e6)- Navigation SafeArgs artık önbelleğin taşınabilirliğini sağlamak için
ArgumentsGenerationTaskiçindePathSensitivity.RELATIVEkullanıyor. Bu, önbellek girişinin artık bir CI derlemesinden yerel bir derlemeye yeniden kullanılabileceği anlamına gelir. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetectorlint kuralı,getBackStackEntry()çağrısını çevreleyenrememberçağrısının da anahtar olarakNavBackStackEntrynesnesi geçirmesini sağlamak için güncellendi.(Ib7081, b/227382831)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.navigation:navigation-*:2.5.0-beta01 iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
DialogNavigatorartıkdismiss()araması yaparkenpopWithTransitionkullanıyor. Bu,dialoghedefindeViewModelkullanırken, iletişim kutusunu sistem geri düğmesini kullanarak veya iletişim kutusunun dışına dokunarak kapatırkenIllegalStateExceptionhatasına neden olan yarış durumunu düzeltir. (Id7376, b/226552301)
Bağımlılık Güncellemeleri
- Gezinme artık yaşam döngüsüne
2.5.0-beta01bağlıdır. Birden fazla geri yığın kullanılırken birNavHostöğesi birincil olmayan bir alt gezinme sekmesinde başka birNavHostöğesinin içine yerleştirildiğindeIllegalStateExceptiondüzeltilir.
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
visibleEntriesartık deneysel bir özellik değildir. (I4829f, b/225394514)
Hata Düzeltmeleri
- NavHost artık hangi girişlerin oluşturulacağını belirlemek için
NavController'dekivisibleEntries'ya bağlı. Bu, iç içe yerleştirilmiş NavHost kullanılırken artık içtekiNavHostöğesinin düzgün şekilde animasyonla çıkacağı anlamına gelir. (I4ba2b, b/225394514) NavControllertarafından sağlananvisibleEntriesStateFlowartı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)SavedStateViewFactoryartıkSavedStateRegistryOwnerile başlatılmış olsa bileCreationExtraskullanımını destekliyor. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)NavDeepLinkartı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.xmlbulunmadığındaNavigation Safe Argsartı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
ViewModeloluşturmak içinCreationExtrasdeğeriniby navGraphViewModelsparametresine iletebilirsiniz. (I29217, b/217618359)
Hata Düzeltmeleri
NavDeepLinksartık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060)CreationExtras, artık ViewModel'ler oluşturmak içinNavBackStackEntriesile birlikte kullanıldığında doğru şekilde çalışacak. (I69161, b/217617710)- Navigation Safe Args artık AndroidManifest'teki paketin yerine
build.gradleiç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.1bölümünden:NavHostFragment, iç içe yerleştirilmiş grafiklerle viewbinding kullanılırken artıkOnBackPressedDispatcheröğesini düzgün şekilde ayarlayacak. (Ifbb51, b/214577959) - Gezinme
2.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
NavBackStackEntryartık Lifecycle2.5.0-alpha01kapsamında kullanıma sunulan ViewModel CreationExtras ile entegre ediliyor. (Ib9fe2, b/207012490)
Hata Düzeltmeleri
- Bir Fragment'ın
onCreate()öğesindenby navGraphViewModels()aracılığıyla oluşturulanViewModelöğesine erişmeninIllegalStateExceptionile başarısız olmasına neden olan sorun düzeltildi. (I8a14d) NavDeepLinkartık gereksiz yere iki kez kod çözülmeyecek. Bu sayede, nihai hedefinize doğru bağımsız değişkenler iletilecek. (I31b0a, b/210711399)
Safe Args
- Safe Args artık Android Gradle eklentisi 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
- Navigation
2.5.0-alpha03sürümünden geri taşındı:NavDeepLinksartık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060) - Navigation
2.5.0-alpha03'dan geri taşındı: Navigation SafeArgs artık AndroidManifest'teki paketin yerinebuild.gradleiçinde tanımlanan ad alanının kullanılmasını destekliyor. (I659ef, b/217414933) - Navigation
2.5.0-alpha04'dan geri taşındı: Ad alanları kullanılırken veAndroidManifest.xmlbulunmadığındaNavigation Safe Argsartık kilitlenmeyecek. (I17ccf, b/227229815) - Navigation
2.5.0-alpha04'dan geri taşındı: Boş dizeler artık derin bağlantılarda geçerli bağımsız değişkenler olarak kabul ediliyor. (I70a0d, b/217399862)
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 viewbinding kullanılırken artıkOnBackPressedDispatcheröğ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'ınonCreate()bölümünden erişildiğindeIllegalStateExceptionile başarısız olmasına neden olan sorun düzeltildi. (I8a14d) - Navigation
2.5.0-alpha01'dan geri aktarıldı:NavDeepLinkArtık bağımsız değişkenler gereksiz yere iki kez kod çözülmüyor. Bu sayede, doğru şekilde kod çözülmüş bağımsız değişkenler 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ı. 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.
NavTypealt sınıfları) boş değer atanabilirliğini iyileştirdi. Daha önce-ktxyapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı.-ktxyapıları yayınlanmaya devam eder ancak tamamen boştur. navigation-fragmentyapısı artık yeniAbstractListDetailFragmentaracı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) veSlidingPaneLayoutkullanarak birNavHostFragmentile uygulanan ayrıntı bölmesini yönetir.NavControllerüzerindekicurrentBackStackEntryAsFlow()yöntemi, mevcutNavBackStackEntryher değiştiğinde yayın yapan birFlowsağlar. Bu akış,OnDestinationChangedListeneröğesinin manuel olarak yönetilmesine alternatif olarak kullanılabilir.- NavController artık deneysel
visibleEntriesözelliği aracılığıyla tüm görünürNavBackStackEntryörneklerinin listesiniStateFlowolarak alma olanağı sunuyor. - Artık
NavTypesı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. Navigation artık özel NavigationUI'nin uygulanmasına yardımcı olmak için kullanılabilecek
findStartDestination()vegetHierarchy()API'leri sunuyor.findStartDestination(),NavGraphüzerinde bir uzantı işlevidir.startDestinationkendi başına iç içe yerleştirilmiş birNavGrapholsa bile grafiğe gittiğinizde gösterilecek gerçek başlangıç hedefini bulur.getHierarchy(), belirli bir hedefin başka bir hedefin hiyerarşisi içinde olup olmadığını doğrulamak içinNavDestinationüzerinde kullanılabilen bir işlevdir.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }NavigationUIyöntemleri,BottomNavigationViewyerine Material1.4.0,NavigationBarView'de kullanıma sunulan üst sınıfını alacak şekilde güncellendi. Bu sayede, bu yöntemlerNavigationRailViewile kullanılabilir.Bir
<action>öğesi XML üzerinden genişletilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"söz dizimi kullanılarak temanızdan çekilen özellikleri kullanabilir.Safe Args artık her
NavArgssınıfı için birfromSavedStateHandle()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 o 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, bir hedefi navigasyon grafiğinde 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'dır. 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 değerlendirilmelidir. Örneğin, home, profile/{userId}, profile/{userId}/friends vb. Bir hedefin kimliği belirli bir içerikle ilişkilendirildiğinde bu dinamik bağımsız değişkenler, örtülü derin bağlantı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. Bu kategoriye navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.
Bu durumun API ile ilgili bazı sonuçları oldu:
- Kotlin DSL'deki
popUpToKotlin özelliğinin desteği,popUpToIdlehine sonlandırıldı. getStartDestination()API'si,getStartDestinationId()lehine kullanımdan kaldırıldı.
Kimliğe göre gezinmenin aksine, rotaya göre gezinme örtülü derin bağlantılarla aynı kurallara uyar. Bu sayede, her bir hedefe harici olarak görünür bir derin bağlantı eklemeden çok modüllü projelerde kullanılabilir olmalarını sağlayarak doğrudan herhangi bir iç içe yerleştirilmiş grafikteki herhangi bir hedefe gidebilirsiniz.
Navigation Compose
navigation-compose yapısı, Navigation Component ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.
Bu sürümde sunulanlar:
composablevedialoghedeflerini kullanarak Kotlin DSL aracılığıyla gezinme grafiğinizi oluşturmanıza olanak tanıyan birNavHostcomposable'ı. Ayrıca, Accompanist Navigation Material'daki gibi isteğe bağlı Navigator'lar da desteklenir.- Hedefler arasında geçiş efektinin zorunlu olarak desteklenmesi. Eşlikçi gezinme animasyonu, deneysel Compose API'leri kullanılarak giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
- Her birleştirilebilir hedef için
Lifecyclekapsamı. Her hedef yalnızca giriş geçişleri tamamlandığındaRESUMEDdurumuna ulaşır ve çıkış geçişleri başladığında hemenSTARTEDdurumuna düşer. Böylece,LifecycleRESUMEDolduğunda yalnızca birnavigateçağrısı tetikleyerek tümIllegalStateExceptionve çoklu dokunma sorunlarını önleyebilirsiniz. ViewModelkapsamı (hedef düzeyinde Lifecycle ViewModel Compose2.4.0'unviewModel()API'si veya Hilt Navigation Compose1.0.0'unhiltViewModel()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'inonCleared()bölümünde,NavBackStackEntryile ilişkili durumun kalıcı olarak kaldırıldığını ve temizlendiğini belirten bir sinyal sağlar.rememberSaveabledurumunun hedef düzeyinde kapsamı belirlenir. Böylece, hedefe döndüğünüzde tüm birleştirilebilir durum otomatik olarak kaydedilir ve geri yüklenir.NavControllerve hedefinin durumunu, işlem sonlandırılıp yeniden oluşturulduktan sonra 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()vecurrentBackStackEntryAsState()içinde, durum yükseltmeye izin vermek veNavControlleröğesiniNavHostdışı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üklemeyi destekleyecek şekilde genişletildi.
Bu değişikliğin bir parçası olarak, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController() NavigationUI yö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ı için destek sağlar. 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:
Gezinme XML'sinde,
<action>öğesi artıkapp:popUpToSaveStateveapp:restoreStateBoole özelliklerini kullanarakapp:popUpToaracılığıyla açılan tüm hedeflerin durumunu kaydedebilir veapp:destinationolarak 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” />navOptionsKotlin DSL'de,popUpTooluşturucusunarestoreStateboole özelliğini vesaveStateboole ö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.BuilderaracılığıylaNavOptionsnesnesini manuel olarak oluştururkensetRestoreState()ve ek birsaveStateparametresi alansetPopUpTo()için yeni aşırı yüklemeyi kullanabilirsiniz.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 birsaveStateparametresi içerebilir.popBackStack()veyapopUpToSaveStateile kaydedilen durumları temizlemek içinclearBackStack()yöntemini kullanabilirsiniz.
Her durumda, NavController, kapsamı belirlenmiş ViewModel örnekleri de dahil olmak üzere her NavBackStackEntry'nin durumunu kaydedip geri yükler. Navigator API'leri, her Navigator'nin kendi durumunu kaydetmesini ve geri yüklemesini destekleyecek şekilde güncellendi.
Davranış değişiklikleri
NavDeepLinkBuilderartıkPendingIntentPendingIntent.FLAG_IMMUTABLEekliyor. Bu sayede,createPendingIntent()tarafından döndürülenPendingIntent, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışmasını sağlıyor.- Gezinme artık Lifecycle
2.3.1'a bağlıdır. AyrıcasetGraph(),popBackStack(),navigateUp()venavigate()yöntemleri artıkNavBackStackEntryLifecycle'ı güncelleyen yöntemler olarak@MainThreadşeklinde işaretlenir. Bu sayede Gezinme, Lifecycle2.3.0'da kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale gelir. - Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar)
Uriiçinde bulunduğunu doğruluyor. NavDeepLinkAyrış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.- İşlemler oluşturulurken Safe Args'tan oluşturulan Kotlin kodu artık varsayılan değerleri olmayan bağımsız değişkenleri, parametre olarak varsayılan değerleri olan bağımsız değişkenlerin önüne yerleştiriyor.
- 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,
applicationIdTextResourceuyarısını artık almamalısınız.
Bilinen sorunlar
- Gezinme
2.5.0-alpha01'da düzeltildi:by navGraphViewModels()aracılığıyla oluşturulanViewModel'a bir Fragment'ınonCreate()'ından erişildiğindeIllegalStateExceptionhatası oluşuyordu. (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şturmuyor. (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
NavDeepLinkayrıştırılmış bağımsız değişkenler artık bağımsız değişkenler arasında ayırıcı olarak soru işaretleriyle aynı şekilde diyez işaretlerini de dikkate alıyor. (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)
NavControllergeri yüklendikten sonra geçişler kullanılarak iç içe yerleştirilmiş bir hedef açıldığındaNavControllerartık kilitlenmeyecek. (I0f7c9, b/205021623)- Geçersiz bir
startDestinationkullanılırken hata mesajı, varsa başlangıç hedefinin rotasını varsayılan olarak kullanır. (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 kilitlenmeye neden olabilecek sorun düzeltildi. (Ic8976, b/208887901)
- Yapılandırma değişikliklerinden veya işlemin sonlandırılmasından sonra iletişim kutusu hedefleri 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öğesindenViewModelalmaya çalışmanın başarısız olmasına neden olan sorun düzeltildi. (I6b96d, b/206465487) - Navigation Compose'un
NavHostileactivityhedefleri 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İşlem sonlandırıldıktan sonra özel Parcelable dizileri geri yüklenmeye çalışıldığında artık kilitlenmiyor. (I618e8, b/207315994)- Güvenli bağımsız değişkenlerde, boole dizilerinin
nulldeğ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
saveStateişaretini otomatik olarak ekleyerekNavigationUI.setupWithNavControllergibi 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
NavHostdoğrudan etkinliğinsetContent()öğesine eklendiğindeLifecycle.State.STARTEDöğesine geçiş yapıldıktan sonra NavBackStackEntries öğelerininLifecycle.State.CREATEDöğesine gönderilmesiyle ilgili sorun düzeltildi. (Ia5ac1, b/203536683)- İletişim kutusu gerçekten gösterilmeden önce
DialogFragmenthedefinin eski yığından çıkarılmasının iletişim kutusunu kapatmaması ve kullanıcının hatalı iletişim kutusunu manuel olarak kapatması durumunda kilitlenmeye neden olmasıyla ilgili yarış durumu düzeltildi. (I687e5) NavigationUIüzerindekionNavDestinationSelectedAPI'sinin, söz konusu gezinme grafiğinenavigate()yapmamış olsanız biletruedöndürmesine neden olan sorun düzeltildi. Artık yalnızcasetupWithNavControllertarafından dahili olarak kullanılan mantıkla aynı mantığı kullanarak, varış noktasınınhierarchy'sini kullanarak yalnızca mevcut varış noktasıyla ilişkiliMenuItem'yi 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öğesini, 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
visibleEntriesAPI 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).
- Derin bağlantılar
NavDestination'ye eklenirken artık boş değer atanabilirNavDeepLinkbağımsız değişkenleri için varsayılan değer gerekmiyor. (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)
AbstractListDetailFragmentile ilgili bir sorun düzeltildi. Bu sorun,onCreateListPaneView()tarafından döndürülen liste bölmesindekilayout_widthvelayout_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 ediliyor. Bu,dismiss()API'ninDialogFragmentiçin eşzamansız olarak manuel ç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çinpopUpToveyapopBackStack()kullandığınız durumları etkilemez. (I77ba2) AbstractAppBarOnDestinationChangedListenerartıkonDestinationChanged()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
visibleEntriesStateFlow (Ia964e) aracılığıyla tüm görünürNavBackStackEntryörneklerinin listesini alma olanağı sunuyor. rememberNavController()artık isteğe bağlıNavigatorörnekleri alıyor. Bu örnekler,NavControlleröğesine eklenerek döndürülüyor. Böylece, Accompanist Navigation Material'daki gibi isteğe bağlı Navigator'lar daha iyi destekleniyor. (I4619e)
Hata Düzeltmeleri
- Etkinlik yeniden oluşturulduğunda dinamik gezinme artık kilitlenmeyecek. (Ifa6a3, b/197942869)
- Yalnızca
NavHostiç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()vefromSavedStateHandle()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 kullanarakpopBackStack()veyapopUpToSaveStateile kaydedilen tüm 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
navArgumentKotlin DSL işlevi artıknavigation-composeyerinenavigation-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şken 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
DESTROYEDolduğundaDESTROYEDolur. (I86552, b/198741720) - Boş değer atanabilir
NavDeepLinkbağımsız değişkenleri artık varsayılan değer gerektirmiyor. (Ia14ef, b/198689811) - Yeni bir grafikle
setGraph()işlevini çağırmak, artık geri yığını açma davranışına ek olarak kaydedilmiş geri yığınları da temizleyecek. (I97f96) launchSingleTopkullanılırkenOnDestinationChangedListenerörneklerinin vecurrentBackStackEntryFlowöğesinin bildirim almama sorunu düzeltildi. (Iaaebc)
Bağımlılık Güncellemeleri
- Navigation Compose artık Activity Compose 1.3.1'e bağlıdır. (I05829)
- Navigation Compose artık Lifecycle ViewModel Compose
2.4.0-beta01'a bağlıdır. (Ib86a3)
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
NavTypesı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
- İşlemler oluşturulurken Safe Args'tan oluşturulan Kotlin kodu artık varsayılan değerleri olmayan bağımsız değişkenleri, parametre olarak varsayılan değerleri olan bağımsız değişkenlerin ö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)
Uriiçinde bulunduğunu doğruluyor. (#204, b/185527157)
Hata Düzeltmeleri
getBackStackEntryvepreviousBackStackEntry'ninremember()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ştirilirken ve
launchSingleTop=truekullanılırken artık düzgün şekilde yeniden oluşturuluyor. (Iebd69, b/186392337) - 13 veya 29 hedefli bir grafikle
setGrapharanırken artıkArrayIndexOutOfBoundsExceptionolmayacak. (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)
Uriiç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çmek artık boş bir ekranla sonuçlanmayacak. (I860dc, b/194925622)
NavHostartıkNavBackStackEntry'lerinLifecycle.Statedeğişikliklerini gözlemliyor. Bu nedenle, bir parçadaNavHostkullanı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
DialogFragmentkapatıldığında, etkinliğiniz yeniden oluşturulduktan sonra (ör. yapılandırma değişikliğinden sonra)NavControllerdurumunun doğru şekilde güncellenmemesine 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 ve bu nedenle, açılacak bir geri yığını olmamasına rağmen NavController'ın geri düğmesini engellemesine neden olabilen sorun düzeltildi. (If3b34)
- Safe-args artık
toSavedStateHandleyöntemini otomatik olarak oluşturuyor. Bu yöntem,ViewModelkodunuzu test etmek için kullanılabiliyor. (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üzerindekirequireSlidingPaneLayout()verequireDetailPaneNavHostFragment()yöntemleri sırasıylagetSlidingPaneLayout()vegetDetailPaneNavHostFragment()olarak yeniden adlandırıldı. (I34a08)
Davranış Değişiklikleri
- Animasyonlarla (ör.
Crossfade) gezinirken yeni hedefinLifecycleöğesi artık yalnızca animasyon tamamlandığındaRESUMEDöğesine ulaşacak. (If0543, b/172112072, b/194301889) - Navigation Compose'daki
NavHostartık grafiği ilk kompozisyonun bir parçası olarak ayarlıyor. (Ieb7be)
Hata Düzeltmeleri
- Gezinme grafiğinin son hedefinin çıkarılması artık
ClassCastExceptionoluşturmuyor. (If0543, b/172112072, b/194301889) Uriolmadan derin bağlantı eklenip bir rota veya derin bağlantı üzerinden gezinildiğinde oluşanNullPointerExceptiondüzeltildi. (938a0c, b/193805425)- Navigation Compose'da, derin bağlantılı
NavBackStackEntryöğesininRESUMEDdurumuna 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 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. (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'a sahip ve grafikteki hedefleri aynı olan grafikler eşit kabul edilir ve
NavControllergeri yığını temizlenmez. (I0b8db, b/175392262)
Hata Düzeltmeleri
NoSuchElementExceptiondüzeltildi.popBackStack(),NavBackStackEntrycihazına bağlı birLifecycleObserveriçinden çağrıldığında NavController'ın durumunda yeniden girişli güncellemeler nedeniyleNoSuchElementExceptionoluşuyordu. (I64621)AbstractListDetailFragmentartıkSlidingPaneLayoutAbstractListDetailFragmentkullanılmadığında APK'nızdan tamamen kaldırılmasına olanak tanıyor. (I611ad)NavGraphveNavDestinationartık equals yöntemini geçersiz kılıyor. Bu nedenle, aynı değerlere sahip iki nesne eşit kabul ediliyor. (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-fragmentyapısı artık yeniAbstractListDetailFragmentaracı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) veSlidingPaneLayoutkullanarak birNavHostFragmentile uygulanan ayrıntı bölmesini yönetir. (Iac4be, b/191276636)navigation-composeyapay nesnesininNavHostözelliği, artıkcomposablehedeflerine ek olarakdialoghedefi de destekliyor. Bu iletişim hedefi, mevcutcomposablehedefinin üzerinde kayan bir ComposableDialogiç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'dekiaddişlevi,pusholarak yeniden adlandırıldı.add()için yapılan tüm mevcut çağrıların push() olarak değiştirilmesi gerekir. (Ie89fc, b/172112072)- Özel
Navigatorörnekleri artıkNavigatorStateüzerindepushWithTransactionvepopWithTransitionAPI'lerini kullanarak bir hedefi eşzamansız olarak gönderebilir veya açabilir. Bu API'lerin henüz dahil edilen gezinme araçlarından herhangi biri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)
Davranış Değişiklikleri
NavDeepLinkBuilderartıkPendingIntent.FLAG_IMMUTABLEekliyor. Bu sayede,createPendingIntent()tarafından döndürülenPendingIntent, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışmasını sağlı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)@nullvarsayılan değerine sahip birstring[]bağımsız değişkeniyle bir hedefe giderkenNullPointerExceptionsorunu düzeltildi. (I1fbe8)@Navigator.Nameiçin ProGuard kuralları ekleyerek R8 3.1 tam modu kullanılırken sorunları düzeltin. (I2add9, b/191654433)- SafeArgs, uygulamanızı
Kotlinsürümünden önceki1.5.0sü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ı gereken sorun düzeltildi. (I7785c, b/188859835) - Gezinme
2.4.0-alpha01bölümünde ortaya çıkan bir regresyon düzeltildi. Bu regresyon nedeniylesetupActionBarWithNavController(), ü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 açıldıktan sonra
IllegalStateExceptionpopBackStack()çağrılırken oluşan sorun düzeltildi. (I2a330, b/190265699) by navArgs()için ProGuard kuralları artıknavigation-commonveya buna bağlı tüm yapılar kullanılırken düzgün şekilde uygulanıyor. (I68800, b/190082521)- Bir geri çağırma aldığında ilk kez
navigate()işlevini çağıranOnDestinationChangedListenerartık gittiği hedefle birlikte ikinci bir geri çağırma alıyor. (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.0kullanılırkenUnable 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'a güncellenerek çö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ü şu commit'leri içerir.
Yeni Özellikler
- Artık Activity, Fragment ve Dialog hedefleri ile DynamicNavigation Kotlin DSL'de rotalar 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)Navigation artık özel NavigationUI'nin uygulanmasına yardımcı olmak için kullanılabilecek
findDestination()vegetHierarchy()API'leri sunuyor.findDestination(),NavGraphüzerinde grafikte 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 birNavDestinationişlevidir.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }BottomNavigationViewalanını kullanan NavigationUI yöntemleri, bunun yerine Material1.4.0,NavigationBarView'de kullanıma sunulan üst sınıfı kullanacak şekilde güncellendi. Bu sayede, bu yöntemlerNavigationRailViewile 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
DialogFragmentNavigatorartıkNavController'ı bilgilendirmek içinNavigatorState.pop()API'sini kullanıyor. Bu sayede, sistemin geri düğmesine basılarak veya iletişim kutusunun dışına tıklanarak kapatıldığındaNavControllerdurumu her zaman Navigator'ın durumuyla senkronize ediliyor. (I2ead9)Gezinme,
onDestinationChangedgeri çağırma işleviyleOnDestinationChangedListenerslistesi değiştirilirken artıkConcurrentModificationExceptionvermiyor. (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
@IdResile düzgün şekilde açıklama eklenmiş olduğundan yalnızca kaynak kimliklerini kabul ediyor. (I69b80)findNodeparametresinin int parametresi artıkresidyerineresId. (I7711d)
Bağımlılık Güncellemesi (Dependency Update)
- Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda,
applicationIdTextResourceuyarısını artık almamalısı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üzerindekicurrentBackStackEntryAsFlow()yöntemi, mevcutNavBackStackEntryher değiştiğinde yayın yapan birFlowsağ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şlerine entegrasyon, geri yığını kaydetme ve geri yüklemeyi destekleyecek şekilde genişletildi. (b/80029773)
Bu değişikliğin bir parçası olarak, 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ı için destek sağlar. 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:
Gezinme XML'sinde,
<action>öğesi artıkapp:popUpToSaveStateveapp:restoreStateBoole özelliklerini kullanarakapp:popUpToaracılığıyla açılan tüm hedeflerin durumunu kaydedebilir veapp:destinationolarak 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” />navOptionsKotlin DSL'de,popUpTooluşturucusunarestoreStateboole özelliğini vesaveStateboole ö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.BuilderaracılığıylaNavOptionsnesnesini manuel olarak oluştururkensetRestoreState()ve ek birsaveStateparametresi alansetPopUpTo()için yeni aşırı yüklemeyi 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 birsaveStateparametresi içerebilir.
Her durumda, NavController, kapsamı belirlenmiş ViewModel örnekleri de dahil olmak üzere her NavBackStackEntry'nin durumunu kaydedip 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, 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, bir 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. Bu kategoriye navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.
Bu durumun API ile ilgili bazı sonuçları oldu:
- Kotlin DSL'deki
popUpToKotlin özelliğinin desteği sonlandırıldı. Bunun yerinepopUpToIdkullanılacak. (I59c73, b/172823546) getStartDestination()API'si,getStartDestinationId()lehine kullanımdan kaldırıldı. (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.
NavTypealt sınıfları) boş değer atanabilirliğini iyileştirdi. Daha önce-ktxyapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı.-ktxyapıları yayınlanmaya devam eder ancak tamamen boştur. (b/184292145) NavDeepLinkBuilderartık oluşturulan geri yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)DynamicNavHostFragmentiçin fabrika işlevleri ekleme (Icd515, b/175222619)- Bir
NavBackStackEntrybenzersiz kimliği artık genel API'sinin bir parçası olarak kullanıma sunuluyor. (Ie033a) nameveargumentalanları ileNamedNavArgument'nin yapı bozma işlevleri artık herkese açık. (#174, b/181320559)- İlgili beste yerellerine
NavBackStackEntrysağlayan yeni birNavBackStackEntry#provideToCompositionLocalsuzantısı kullanıma sunuldu. (#175, b/187229439)
Safe Args
Safe Args artık her
NavArgssınıfı için birfromSavedStateHandle()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
1.8.0bağlı olacak şekilde güncellendi. (#172, b/183990444)
Davranış Değişiklikleri
- Gezinme artık Lifecycle
2.3.1'a bağlıdır. AyrıcasetGraph(),popBackStack(),navigateUp()venavigate()yöntemleri artıkNavBackStackEntryLifecycle'ı güncelleyen yöntemler olarak@MainThreadşeklinde işaretlenir. Bu sayede Gezinme, Lifecycle2.3.0'da kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale gelir. (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
REDdeğerine sahip olsa bilehttp://www.example.com/redgibi bir derin bağlantı,www.example.com/{color}derin bağlantısıyla eşleşebilir. (#152, b/135857840)
Compose Uyumluluğu
androidx.navigation:navigation-compose:2.4.0-alpha01yalnızca Compose'un1.0.0-beta07ve sonraki sürümleriyle uyumludur.
Hata Düzeltmeleri
- Sondaki bağımsız değişken yer tutucularının, tam olarak eşleşen bir soneke sahip derin bağlantılara göre öncelikli olmasına neden olan sorun düzeltildi. (#153, b/184072811)
NavHostFragmentartık varsayılanDialogFragmentNavigatorile aynı@Navigator.Name("dialog")öğesini kullanan özel Navigatörleri destekliyor. (Ib1c2c, b/175979140)- Aynı örnekle tekrar tekrar çağrılmasının sorunlara neden olmaması için
NavigatorProvider#addNavigatordavranışını iyileştirdik. (#176, b/187443146)
Harici Katkılar
- Her
NavArgssınıfı içinfromSavedStateHandle()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)
- Sondaki bağımsız değişken yer tutucularının, tam eşleşen bir soneke içeren derin bağlantılardan öncelikli olmasına neden olan sorunu düzelttiği için osipxd'ye 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) nameveargumentalanlarını veNamedNavArgument'in yapı bozma işlevlerini herkese açık hale getirdiği için jossiwolf'a teşekkür ederiz. (#174, b/181320559)NavBackStackEntry'ı ilgili beste yerellerine sağlayan yeni birNavBackStackEntry#provideToCompositionLocalsuzantısını tanıttığı için jossiwolf'a teşekkür ederiz. (#175, b/187229439)NavigatorProvider#addNavigatorişlevinin davranışını iyileştirerek aynı örnekle tekrar tekrar çağrılmasının sorunlara neden olmamasını sağlayan jossiwolf'a teşekkür ederiz. (#176, b/187443146)
Navigation Compose 1.0.0 sürümü
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
NavHostartık hedef composable'ları sarmalayan composable kapsayıcıya aktarılan birModifierkabul ediyor. (I85aca, b/175125483)
Hata Düzeltmeleri
NavHostartıkOnBackPressedDispatcherOwnerbulunmadığında bile çalışıyor. Bu durum,NavHostönizlenirken geçerlidir. (I7d8b4)- Navigation Compose artık Navigation
2.3.5'a bağlıdır. Bu sayede,NavHosthedefindeBackHandlerkullanılı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.currentartık,ViewModelStoreOwneröğesinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer atanabilir birViewModelStoreOwnerdöndürüyor.ViewModelStoreOwnergerektiren API'ler (ör.viewModel()veNavHost)ViewModelStoreOwnerayarlanmamış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
NavHostartıkLocalSavedStateRegistryOwnerCompositionLocal'ı bu hedefinNavBackStackEntryile dolduruyor. Böylece, doğrudanSavedStateRegistryiçine 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
- Navigation Compose artık
composablehedeflerineviewModel()desteği sağlamak için Lifecycle ViewModel Compose 1.0.0-alpha01'e bağlıdır. (I7a374) NavHostartıkOnBackPressedDispatcheralmak için Activity-Compose 1.3.0-alpha01'deki yeniLocalOnBackPressedDispatcherOwnerkullanıyor.NavControllerüzerinde ayarlananLocalOnBackPressedDispatcherOwner(I65b12)
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şkiliNavBackStackEntrydeğerini döndüren birgetBackStackEntry(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-alpha09ile 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()venavigateUp()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 yerleştirilmiş 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. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.
Bu ilk sürümde şunlar sunulmaktadır:
- Gezinme grafiğinizi Kotlin DSL aracılığıyla oluşturmanıza olanak tanıyan bir
NavHostcomposable. - Yaşam döngüsü,
ViewModelve 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()vecurrentBackStackEntryAsState()içinde, durum yükseltmeye izin vermek veNavControlleröğesiniNavHostdışı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
NavDeepLinkRequestveyaUrikullanarak gezinirken artıkKEY_DEEP_LINK_INTENTaracılığıyla bağımsız değişkenlerden amaç alarak sonuçlanan hedeftekiUri, 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
- LifecycleOwner olarak
OnBackPressedCallbacksile bir dağıtıcıya eklenenNavBackStackEntry, Etkinlik Yaşam DöngüsüSTOPPED, ardındanSTARTEDolduktan sonra geri tuşuna basma işlemini artık düzgün şekilde engelliyor (Iff94f, b/182284739). - Derin bağlantı alan adı ayrıştırma artık büyük/küçük harfe duyarlı değildir. Bu sayede
www.example.comhemwww.example.comhem dewww.Example.comile eşleşir. Sorgu parametresi adlarının büyük/küçük harfe duyarlı olduğunu unutmayın. (#144, b/153829033) - Bir hedefte birden çok 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 gittiğinizde oluşabilecek
NullPointerExceptiondüzeltildi. (aosp/1644827)
Bağımlılık Güncellemeleri
- Navigation Safe Args Gradle eklentisi artık Kotlin Gradle eklentisi 1.4.31'e bağlıdır. (aosp/1661058, b/181156413)
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
bentrengroveteş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
ReferenceTypebağımsız değişkenleri, artık bir derin bağlantı URI'sinin parçası olarak gönderildiğinde düzgün şekilde ayrıştırılabiliyor. Bu özellik, hem ham tam sayı değerini hem de0xile başlayan onaltılık değerleri destekler. (#127, b/179166693)app:argType="float"içeren bir bağımsız değişken içinandroid:defaultValueartık tamsayı varsayılan değerlerini destekliyor. Bu sayede0.0kullanmak yerineandroid:defaultValue="0"kullanabilirsiniz. (#117, b/173766247)
Hata Düzeltmeleri
- Navigasyon'un dinamik özellikler desteği kullanılırken takılan yükleme ilerleme durumunu düzeltme. (Ib27a7, b/169636207)
- Aynı nesneyle
setViewModelStoreveyasetLifecycleOwner'yi çağırma işlemi artık hiçbir işlem yapmayacak (Idf491, b/177825470) - Safe-Args artık Java kullanırken uygun yöntemlere bastırma ek açıklamaları ekliyor. (I8fbc5, b/179463137)
Harici Katkılar
ReferenceTypebağı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 ederizJvmName. (#127, b/179166693)app:argType=”float”ile bağımsız değişken içindefaultValue'e izin veren çekme isteği için teşekkürlertatocaster. 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'siCREATED'ye taşınmadan önce açıldığında artık kilitlenme yaşanmıyor. (Ie3ba3)- b/171364502 nedeniyle oluşan regresyon düzeltildi. Bu regresyon,
0animasyon kaynağı değerine sahip bir etkinliğe gidildiğindeResourceNotFoundExceptionhatasına neden oluyordu. (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
NavigationUIiçinde,onNavDestinationSelectedile<activity>hedefinin kullanılması durumunda Etkinliğe gidilememesine neden olan gerileme düzeltildi. (I22e34, b/171364502)navigation-dynamic-features-fragmentsimgesinin, yeni yüklenen hedefe birden çok kez gidilmesine neden olan sorun düzeltildi. (aosp/1486056, b/169636207)launchSingleTopkullanılırken varsayılan bağımsız değişkenlerinOnDestinationChangedListenerörneklerine gönderilmemesine neden olan sorun düzeltildi. (I2c5cb)- İç içe yerleştirilmiş bir gezinme grafiğine gidildiğinde arka yığında yeni bir grafik örneği oluşturulmamasına neden olan sorun düzeltildi. (Ifc831)
- Bir gezinme grafiğindeki son hedefi kaldıran bir
popUpToilenavigate()kullanıldığında gezinme grafiğinin kendisinin 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,FragmentScenarioveNavigation.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 hashcode ve equals 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ı sarmalamayacak. (b/168584987)
Bağımlılık Değişiklikleri
navigation-uiartık DrawerLayout 1.1.1'e bağlıdır. Bu sayede,NavigationUI,LOCK_MODE_LOCKED_CLOSEDveyaLOCK_MODE_LOCKED_OPENkullanı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-runtimevenavigation-dynamic-features-fragmentyapı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-testingyapısı, mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra eski yığını doğrulamanıza olanak tanıyan birTestNavHostControllersağ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 birSavedStateHandle'ye erişmenize olanak tanır. Daha fazla bilgi için Sonucu önceki hedefe döndürme başlıklı makaleyi inceleyin. NavigationUIiçinOpenabledesteği:NavigationUIiçindeki tümDrawerLayoutkullanımları, CustomView1.1.0içinde eklenen ve DrawerLayout1.1.0içindeDrawerLayouttarafından uygulanan daha genelOpenablearayü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 olarakapp:actionveapp:mimeType'ü destekleyecek şekilde genişletildi.NavControllerartık yeniNavDeepLinkRequestsı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. Manifest dosyanıza 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
- Hedefin bağımsız değişken içermeyen bir örneği, bağımsız değişken içeren başka bir örnekle
singleTopkullanılarak değiştirildiğinde ortaya çıkanNullPointerExceptionsorunu düzeltildi. (b/158006669) NavControllertarafından oluşturulan tümdestination is unknownistisnaları artıkNavController'nin durumunu belirlemeye yardımcı olacak ek hata ayıklama bilgileri içeriyor. (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öğesininLifecycledeğerinin düzgün şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371) OnDestinationChangedListener,setGraph()çağrılmadan önce kaydedilen örnekler artık bir işlem sonlandırma sonrasında geri yüklenen hedefi doğru şekilde gönderiyor. (b/155218371)singleTopkullanılırkenNavBackStackEntryartık bağımsız değişkenlerini doğru şekilde güncelliyor ve güncellenen bağımsız değişkenler tümOnDestinationChangeListenerörneklerine gönderiliyor. (b/156545508)
Bağımlılık Güncellemeleri
NavigationUIyapısı artık CustomView1.1.0-rc01ve DrawerLayout1.1.0-rc01'a bağlıdır. (aosp/1309696)
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'ın yanı sıraapp:actionveapp:mimeType'ı da destekleyecek şekilde genişletildi. NavController artık yeniNavDeepLinkRequestsı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ıkapp:graphPackagebelirtmeniz gerekmez. Noktadan sonraapplicationIdöğesinemoduleNamesoneki eklenerek varsayılan bir değer kullanılır.graphPackagesimgenizi özelleştirmeniz gerekiyorsa artık${applicationId}yer tutucusu desteklenmektedir. (b/152696768)- Navigation Graph Kotlin DSL artık işlemler için
defaultArgumentsMapözelliğini kullanıma sunuyor. Bu özellik, 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'den itibaren: Etkinliğinizde birden fazla
NavHostFragmentörneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken oluşanIllegalStateExceptiondüzeltildi. (b/147378752)
Bağımlılık güncellemeleri
- Gezinme artık Fragment
1.2.4'a bağlıdır. (aosp/1277325) - Dinamik gezinme artık Play Core
1.7.2'a bağlıdır. (aosp/1282257)
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 parça hedefleri için destek eklendi. (b/148969800)
API Değişiklikleri
DynamicExtrassınıfı artık oluşturucu kalıbını kullanmıyor ve doğrudan oluşturulabiliyor. (aosp/1253671)DynamicActivityNavigatorartık oluşturucusundaActivityyerineContextalıyor. (aosp/1250252)
Hata Düzeltmeleri
NavigationUIartı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
- Gezinme Dinamik Özellikler yapıları artık Play Core'a
1.6.5bağ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
DrawerLayoutsınıfına güvenmek yerine,AppBarConfigurationartık CustomView1.1.0-alpha02'da (DrawerLayout1.1.0-alpha04itibarıylaDrawerLayoutolarak uygulanır) kullanıma sunulanOpenablearayüzünü kullanır. Bu sayede,Openable'nin özel uygulamalarınıNavigationUIile kullanabilirsiniz. (b/129030452)
Hata Düzeltmeleri
navigation-common-ktxProGuard kuralları artık tümNavArgsörnekleri yerine yalnızca kullanılanNavArgssınıflarını doğru şekilde tutuyor. (b/150213558)
Bağımlılık değişiklikleri
- Navigasyon, Core
1.2.0bağımlılığını geri aldı ve artık Core1.1.0bağımlı. Bunun nedeni, Navigasyon'un Core1.2.0'daki yeni API'leri kullanmadığı 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
NavBackStackEntryartık belirli bir eski yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durumu depolamaya uygun birSavedStateHandle'ye erişmenize olanak tanır. Kullanım örneği için Sonuç döndürme bölümüne bakın. (b/79672220)
API Değişiklikleri
- Mevcut ve önceki hedefler için
NavBackStackEntryalma işlemini kolaylaştırmak amacıylagetCurrentBackStackEntry()vegetPreviousBackStackEntry()kolaylık yöntemleri eklendi. (b/79672220)
Hata Düzeltmeleri
navigateUp(), artık uygulamanızı kendi görev yığınınıza başlatırken mevcut hedefin bağımsız değişkenlerini veKEY_DEEP_LINK_INTENTöğesini önceki hedefe iletiyor. (b/147456890)
Bağımlılık değişiklikleri
- Gezinme artık Core
1.2.0'a bağlıdır.
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-testingyapısı,TestNavHostControllersınıfı sağlar. Bu sınıf, gezinmeyi test ederken mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra geri yığını doğrulamanıza olanak tanıyan sahteNavControllerkullanmaya alternatif bir yöntem sunar. (b/140884273) - Yeni
navigation-dynamic-features-fragment(ve geçişli bağımlılığı olannavigation-dynamic-features-runtime), özellik modüllerinden hedefler veya gezinme grafiklerinin tamamını (<include-dynamic>aracılığıyla) dahil etmenize olanak tanır. Bu sayede, bu hedeflere gidilirken isteğe bağlı özellik modüllerinin sorunsuz bir şekilde yüklenmesini sağlar. 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 sona eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksayıyor.{argument}(b/147447512) - Gezinme
2.2.1:navigation-uiDrawerArrowDrawableiçin ProGuard kuralları,android.enableJetifier=truegerektirmemesi için güncellendi. (b/147610424) - Gezinme
2.2.1:navigation-common-ktxmodülü artıknavigation-runtime-ktxile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1: Gezinme2.2.1artık Lifecycle ViewModel SavedState2.2.0ve Fragment1.2.1'a bağlıdır.
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ştururkenIllegalStateExceptionsorunu düzeltildi. (b/147378752) NavigationUIartı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 işlev daha önce Navigation 2.3.0-alpha04 sürümünde kullanıma sunulmuştu. (b/148679860)navigation-common-ktxProGuard kuralları artık yalnızca kullanılanNavArgssınıflarını (tümNavArgsörneklerini değil) 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
- Gezinme artık Fragment
1.2.4'a bağlıdır. (aosp/1277325)
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) navigation-uiDrawerArrowDrawableiçin ProGuard kuralları,android.enableJetifier=true'nin gerekli olmaması için güncellendi. (b/147610424)navigation-common-ktxmodülü artıknavigation-runtime-ktxile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1artık Lifecycle ViewModel SavedState2.2.0ve Fragment1.2.1'a bağlıdır.
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
NavController.getBackStackEntry()işlevini çağırabilir ve geri yığında bir hedef veya gezinme grafiğinin kimliğini iletebilirsiniz. DöndürülenNavBackStackEntry, hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıraViewModelStoreOwner(NavController.getViewModelStoreOwner()tarafından döndürülenle aynı) veSavedStateRegistryOwnergibi navigasyon odaklı birLifecycleOwnersağlar. - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactory, artıkby navGraphViewModels()veyaViewModelProvideroluşturucusuNavController.getBackStackEntry()ya daNavController.getViewModelStoreOwner()tarafından döndürülen birViewModelStoreOwnerile birlikte kullanılırken varsayılan fabrika olarak kullanılıyor. - 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:
NavHostFragmentartık Fragment 1.2.0'dakiFragmentContainerView'ı kullanıyor. Bu sayede animasyon z-sıralama sorunları ve pencere yerleştirmelerinin Fragment'lere 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-uitarafından kullanılan varsayılan silme animasyonları, Fragment1.2.0-rc04'daki ayarlanmış silme animasyonlarıyla eşleşecek şekilde düzenlendi. (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 bir sorun düzeltildi. Bu sorunda, isteğe bağlı parametreler
nullyerine"@null"alıyordu. (b/141613546) NavHostFragment,FragmentContainerViewile 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
- Navigasyon artık uygun durumlarda Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, Activity1.1.0-rc03ve Fragment1.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ınlandı. 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
NavDestinationve alt sınıfları artık hata ayıklama sırasında daha faydalı bilgiler sağlamak içintoString()öğesini geçersiz kılıyor. (b/141264986)
Davranış değişiklikleri
- Ek sorgu parametreleri artık derin bağlantılar eşleştirilirken eşleşmenin başarısız olmasına neden olmak yerine 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ıActivityartık ekstralar olmadığında daha iyi bir hata mesajı gösteriyor. (b/141408999)- Safe Args tarafından oluşturulan
DirectionsJava sınıfları artık varsayılan değerler içeriyor. (b/141099045) - Safe Args tarafından oluşturulan
ArgsJava sınıfları artık varsayılan değerler içeriyor. (b/140123727) Toolbarkullanıldığında, iki üst düzey hedef arasında geçiş yapılırkenNavigationUIartık metin değişikliğini canlandırmıyor. (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
- Önce
setGraph'i, ardındansetViewModelStore()'yı aradığınızda artıkIllegalStateExceptionhatasıyla karşılaşıyorsunuz. Bu, tümNavBackStackEntryörneklerininViewModelörnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla ilk kurulumun bir parçası olarak her zamanNavHosttarafı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ırkenConcurrentModificationExceptiondü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ülenNavBackStackEntry, hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıra navigasyon odaklı birLifecycleOwner,ViewModelStoreOwner(NavController.getViewModelStoreOwner()tarafından döndürülenle aynı) veSavedStateRegistryOwnersağlar. (aosp/1101691, aosp/1101710)
Hata düzeltmeleri
NavHostFragmentöğesineViewPager2eklenirkenIllegalArgumentExceptionhatasıyla başarısız olmasına neden olan sorun düzeltildi. (b/133640271)NavInflaterartık gereksiz yeregetResourceName()ç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ıkby navGraphViewModels()veyaViewModelProvideroluşturucuNavController.getViewModelStoreOwner()tarafından döndürülen birViewModelStoreOwnerile kullanıldığında varsayılan fabrika olarak kullanılıyor. (b/135716331)
API değişiklikleri
- Gezinme
2.1.0-rc01:2.1.0-alpha02sürümünde kullanıma sunulan ve desteği sonlandırılanNavControllerüzerindekigetViewModelStore()API'si kaldırıldı. (aosp/1091021)
Hata düzeltmeleri
NavHostFragmentartıkFragmentContainerViewkullanı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 (-ktxkitaplıklarını kullanan Kotlin kullanıcıları için) veyaNavController'a eklenengetViewModelStoreOwner()API'yi kullanarak gezinme grafiği düzeyinde kapsamlandırılmış ViewModel'ler oluşturabilirsiniz. Daha fazla bilgi için Kullanıcı arayüzüyle ilgili verileri hedefler arasında paylaşma başlıklı makaleyi inceleyin. - İletişim kutusu hedefleri: Artık
<dialog>hedefleri oluşturabilirsiniz. Bu hedefler,navigateyaptığınızdaDialogFragmentgö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
navigateiçinUrikullanabilirsiniz. Bu özellik, bir hedefe eklediğiniz<deepLink>kullanarak hedefe gitmenizi sağlar. Daha fazla bilgi için Uri kullanarak gezinme başlıklı makaleye bakın. - NavHostController: Özellikle özel bir
NavHostoluşturmak için kullanılan API'lerNavHostController'e taşındı. Böylece uygulamalarNavController'lerini barındırmaLifecycleOwner,OnBackPressedDispatcherveViewModelStore'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-alpha02sürümünde kullanıma sunulan veNavControllerüzerindeki kullanımdan kaldırılmış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-beta01sürümünde eklenen, istenmeyen 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
NavigationUIartıksetupWithNavController(),ToolbarveyaCollapsingToolbarLayoutile 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ıknavigation-runtimeyapay ü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üzerindekigetViewModelStore()API'sinin desteği sonlandırıldı. Bunun yerineViewModelStoreOwnerdöndüren yenigetViewModelStoreOwner()yöntemi kullanıma sunuldu. (aosp/987010)<dialog>hedefleri gibi kayan pencere hedeflerinin uygulanması, tüm<dialog>hedeflerinin artık uyguladığı bir işaretleyici arayüzü olanFloatingWindowolarak genelleştirildi. Üst uygulama çubuğuyla etkileşim için kullanılan NavigationUI yöntemleri artıkFloatingWindowhedeflerini 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 iletişim kutusu olmayan ve etkinlik içermeyen bir hedefe (ör.<fragment>hedefi) 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 geri yığını senkronize olmuyordu. Bu 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üzerindeki ana makineyle ilgili API'ler yeniden adlandırıldı veNavController'nın yeni bir alt sınıfı olanNavHostController'ye taşındı. (aosp/966091)NavControllersetHostOnBackPressedDispatcherOwner()yöntemi,NavHostController'ninsetOnBackPressedDispatcher()yöntemiyle değiştirildi ve artık bu yöntemi çağırmadan öncesetLifecycleOwner()'i çağırmanız gerekiyor. (aosp/965409)NavHostControllerartıksetHostOnBackPressedDispatcherOwner()tarafından daha önce döndürülenNavHostOnBackPressedManagersınıfının yerini alan birenableOnBackPressed(boolean)yöntemi içeriyor. (aosp/966091)
Hata düzeltmeleri
- URI ile gezinildikten 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 engellerkenapp:defaultNavHost'ye doğru şekilde uyar ve2.1.0-alpha03Gezinmesindeki bir regresyonu düzeltir. b/132077777DialogFragmentNavigatorartıkpopBackStack()venavigateUp()işlemlerini doğru şekilde gerçekleştiriyor. b/132576764- İç içe yerleştirilmiş grafikler arasında tekrar tekrar gezinirken oluşan
IllegalStateException: unknown destination during restoresorunu 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 kullanılmasına rağmen sistemin geri düğmesini engellemeye devam ediyor.
Yeni özellikler
- Artık
<dialog>oluşturabilirsiniz. Bu yerlerenavigateyaptığınızdaDialogFragmentgösterilir.NavHostFragment, varsayılan olarak iletişim hedefi türlerini destekler. b/80267254 - Bir kaynak kimliği veya
NavDirectionsörneğiylenavigateişlevini çağırmanın yanı sıra artıkUriüzerinden de gezinebilirsiniz. Bu işlev, doğru hedefe gitmek için bir hedefe eklediğiniz<deepLink>işlevini kullanır. 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()NavHostFragmentyöntemi kullanımdan kaldırıldı ve işlevi,NavHostFragmentalt sınıflandırılırken özel Navigator'lar eklemenin doğru giriş noktası olduğunu daha net hale getirmek için yenionCreateNavController()yöntemine taşındı. b/122802849- Belirli bir
Uriöğesinin söz konusu hedef tarafından veyaNavGraphdurumunda gezinme grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenize olanak tanımak içinNavDestinationöğesine birhasDeepLink()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 NavHostFragmentartıkOnBackPressedDispatcherkullanarak sistem Geri etkinliklerini yakalıyor ve bir Fragment'e döndükten sonra Fragment yaşam döngüsü yöntemlerinde koşullu gezinme yapılırken yaşanan bir sorunu düzeltiyor. b/111598096- Güvenli Args için, belirtilmemiş
app:argTypeileandroid:defaultValue=”@null”artık düzgün bir şekildestringbağı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 temsilcisi aracılığıyla veyaNavController'ye eklenengetViewModelStore()API'sini kullanarak artık bir 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
<activity>hedefineapp:targetPackageekleyebilirsiniz. Paketi kendi uygulama kimliğinizle kısıtlamak içinapp:targetPackage="${applicationId}"özelliğini destekler. b/110975456
Hata düzeltmeleri
<activity>hedefleri içinandroid:nameartı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, Navigation 2.1.0'ın ilk alfa sürümüdür.
Bağımlılık değişiklikleri
- Gezinme artık
androidx.core:core:1.0.1veandroidx.fragment:fragment:1.1.0-alpha05öğelerine bağlıdır. Bu sürüm,androidx.legacy:legacy-support-core-utils:1.0.0bağı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.instantiateFragmentartık kullanımdan kaldırıldı. Varsayılan uygulama artık Fragment'leri oluşturmak içinFragmentFactorykullanıyor. b/119054429
Hata Düzeltmeleri
- Hedefe bağımsız değişkenler eklendiğinde navigasyon artık boş
Bundlegö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 bir sorun düzeltilmiştir. b/123654948
Sürüm 2.0.0
Sürüm 2.0.0
14 Mart 2019
2.0.0 navigasyonu, 2.0.0-rc02 sürümüne kıyasla 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 eşdeğerleriyle 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. Navigation 1.0 kararlı sürümü, 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 2.0 kararlı 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 build.gradle dosyanızın en üst düzeyine 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
1.0.0 navigasyonu, 1.0.0-rc02 sürümüne kıyasla 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ılmıştır.
Hata Düzeltmeleri
- Kök grafikte kimlik yoksa
popBackStack()öğesinin yoksayılmasına neden olan sorun düzeltildi. b/126251695 navigateUp()artıkFLAG_ACTIVITY_NEW_TASKolmadan 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/126082008ActivityNavigator.applyPopAnimationsToPendingTransition'nın doğru pop çıkış animasyonunu uygulamamasıyla ilgili sorun düzeltildi. b/126237567- Safe Args tarafından oluşturulan Kotlin kodu artık
Rsınıfıyla ilişkili paket adındainvefungibi 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 yer almaktadır.
Hata Düzeltmeleri
- Parçalar ve
singleTopgezinme 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 çeşitli küçük iyileştirmeler ve önemli hata düzeltmeleri yer almaktadır.
Yeni Özellikler
- Artık
0uygulamasınıreferencebağımsız değişkenleri içinandroid:defaultValueolarak kullanabilirsiniz. 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 olacak. b/123969518
Hata Düzeltmeleri
popBackStack()venavigateUp, artık arka yığındaki son hedefi açarkenfalsedeğerini doğru şekilde döndürüyor. Bu sayede,1.0.0-beta01sürümünde ortaya çıkan gerileme düzeltildi. b/123933201- Gezinme artık kaydedilmiş örnek durumu geri yüklenirken
ClassLoaderdeğerini doğru şekilde ayarlıyor. Böylece,Navigatorkaydedilmiş durumunda veyaNavDestinationöğesine gönderilen bağımsız değişkenlerde özel sınıflar kullanılırken sorunlar önleniyor. b/123893858 - Kaydedilmiş örnek durumundan bir
Parcelable[]bağımsız değişkeni geri yüklenirken Safe Args tarafından oluşturulan NavArgs sınıfları 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. Kritik bir sorun olmadığı sürece Navigation API'nin bir sonraki sürüme kadar kararlı kalması beklenmektedir. Bu sürümde bazı hata düzeltmeleri ve davranış değişiklikleri yer almaktadır.
Davranış değişiklikleri
- Gezinme 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 (ör.@color/colorPrimary) işaret eden bir varsayılan değere sahip olabilir. Farklı birapp:argTypeile referans varsayılan değeri kullanmaya çalışmak, gezinme XML'si ayrıştırılırken 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 FragmentNavigatordurumununNavControllerdurumuyla senkronizasyonunun bozulmasına ve geri yığını geri yüklemeye çalışırkenIllegalStateException'ye neden olan sorun düzeltildi. b/123803044- ProGuard, karartma ile kullanılırken
NavigationUIişlenmiş geri okunun görünmemesi sorunu düzeltildi. b/123449431 - Safe Args tarafından oluşturulan kod artık
app:argTypebiçimindeki statik bir iç sınıfa işaret eden.OuterClass$InnerClasskullanı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 yayınlanan ve 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, 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
- Kotlin kullanıcıları artık
by navArgs()özelliği temsilcisini kullanarakActivityveyaFragmentiçinde Safe Args tarafından oluşturulanNavArgssınıfına referans almak için tembel başlatma özelliğini kullanabilir. b/122603367 - Safe Args artık
androidx.navigation.safeargs.kotlineklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanıyor. Kotlin kodu, yalnızca Kotlin modülleri için özel olarak oluşturulur. Öncekiandroidx.navigation.safeargseklentisi 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 fazla eşleşen bağımsız değişkene sahip derin bağlantıya yönlendiriliyor. b/118393029
NavControllercihazındasetGraph()numaralı telefonu aradığınızda artık geri yığın sıfırlanacak. b/111450672- Bilinmeyen derin bağlantılar artık
IllegalStateExceptionhata vermiyor ancak yoksayılıyor. Bu sayede, iç içe yerleştirilmiş veya birden fazlaNavHostFragmentile ilgili sorunlar düzeltiliyor. b/121340440
Zarar Veren Değişiklikler
- Bir etkinliğe
NavOptions.applyPopAnimationsToPendingTransition()animasyonları uygulama yöntemiActivityNavigatorbölümüne 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ı artık herkese açık bir oluşturucuya sahip değil. Yalnızca oluşturulan statik yöntemlerle etkileşim kurmalısınız. b/123031660
- Safe Args tarafından oluşturulan
NavDirectionssı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'getArguments()ürününden döndürülenBundleartık@Nullableyerine@NonNullolarak işaretleniyor. b/123243957
Hata Düzeltmeleri
NavDeepLinkBuilderartık benzersizliği belirlemek için ilettiğiniz bağımsız değişkenleri kullanarak aynı hedefe yönelik birden fazla eşzamanlıPendingIntentisteğini doğru şekilde işliyor. b/120042732NavControllerartık iç içe yerleştirilmişNavHostFragmentveya geri yığınlı diğer alt parçalar kullanılırkenpopBackStack()işlemlerini doğru şekilde gerçekleştiriyor. b/122770335NavigationUIartı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
- Güvenli Argümanlar tarafından oluşturulan
NavDirectionssınıfları artıkequals()doğru döndürdüğünde eşithashCode()değerlere sahip. b/123043662 FragmentNavigatorartıkNavHostFragment'ninFragmentManagerüzerinde özelFragmentTransactionsyapmaya çalıştığınızda daha iyi bir hata mesajı veriyor. Her zamangetChildFragmentManager()kullanmalısınız. b/112927148
Sürüm 1.0.0-alpha09
18 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.
android.arch.navigation:navigation-testing yapıtının 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 özel olarak ek dokümanlar hazırlayacağız.
Yeni Özellikler
NavigationUIyöntemleriyle kullanıldığındamenuCategory="secondary"içerenMenuItemartık geri yığını açmayacak. b/120104424AppBarConfigurationartıknavController.navigateUp()falsedöndürdüğünde çağrılacak bir yedekOnNavigateUpListenerörneği ayarlamanıza olanak tanır. b/79993862 b/120690961
Zarar Veren Değişiklikler
<argument>ileargType="reference"kullanıldığında gezinme artık referansı ayrıştırmaz ve bunun yerine ham kaynak kimliğini sağlar. b/111736515onNavDestinationSelected()artık varsayılan olarak gezinme grafiğinizin başlangıç hedefine geri dönüyor ve bu sayedesetupyöntemleriyle tutarlı hale geliyor. Geri yığınına ekleme yapmamak içinMenuItemöğenizemenuCategory="secondary"ekleyin. aosp/852869- Oluşturulan
ArgssınıflarınınfromBundle()yöntemleri artık boş değer atanabilirBundleyerine boş değer atanabilir olmayanBundlealıyor. aosp/845616
Hata Düzeltmeleri
- Artık bağımsız değişkenler, her zaman dize olarak değil, doğru
argTypeolarak 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
NavigationUIyöntemleriyle kullanıldığında hedef etiketleri artıkandroid:labeliçindeki{argName}örneklerini doğru bağımsız değişkenle otomatik olarak değiştirecek.b/80267266- Navigasyon artık Destek Kitaplığı 28.0.0'a bağlıdır. b/120293333
Zarar Veren Değişiklikler
OnNavigatedListener,OnDestinationChangedListenerolarak yeniden adlandırıldı b/118670572OnDestinationChangedListenerartık bağımsız değişkenlerinBundledeğerini de iletiyor. aosp/837142app:clearTaskveapp:launchDocumentözellikleri ile ilişkili yöntemleri kaldırıldı. Grafiğinizin köküyle birlikteapp:popUpTokullanarak tüm hedefleri geri yığınından kaldırın. b/119628354ActivityNavigator.ExtrasartıkBuilderkalıbını kullanıyor veIntent.FLAG_ACTIVITY_işaretlerini ayarlama olanağı sunuyor. aosp/828140NavController.onHandleDeepLink,handleDeepLinkolarak yeniden adlandırıldı aosp/836063NavOptions,NavInflater,NavDeepLinkBuilderveAppBarConfigurationgibi alt sınıflara ayrılmak için tasarlanmamış birçok sınıf ve yöntemfinalolarak 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
FragmentNavigatorbölümüne taşındı. Böylece, parça oluşturma işleminiFragmentFactory'ye devretmek kolaylaştı. b/119054429 NavGraphNavigatoroluşturucusu artıkContextdeğerini almıyor. aosp/835340- NavigatorProvider artık arayüz değil, sınıf olarak kullanılıyor.
getNavigatorProvider()tarafından döndürülenNavigatorProviderişlevinin işlevselliği değişmedi. aosp/830660 NavDestination.navigate()kaldırıldı. Bunun yerineNavigatorüzerindenavigate()yöntemini çağırın. aosp/830663Navigatorişlevinde önemli bir yeniden düzenleme yapılarakOnNavigatorNavigatedListenerişlevine olan ihtiyaç ortadan kaldırıldı ve bunun yerinenavigateişlevinin, gidilenNavDestinationöğesini döndürmesi sağlandı.Navigatorörnekleri artıkNavController'ye pop etkinlikleri gönderemez. Geri düğmesine basma işlemlerini yakalamak venavController.popBackStack()'yi çağırmak içinOnBackPressedCallbackkullanmayı deneyin. aosp/833716
Hata Düzeltmeleri
- Hedef bir
<navigation>öğesi olduğundapopUpToartık tutarlı bir şekilde çalışıyor. b/116831650 - İç içe yerleştirilmiş grafikler kullanılırken
IllegalArgumentExceptionoluşmasına neden olan çeşitli hatalar düzeltildi. b/118713731 b/113611083 b/113346925 b/113305559 <activity>hedeflerinindataPatternözelliği artıktoString()ç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. Numaralandırma türleri,
sınıf adı olmadan numaralandırma 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
@Overrideek açıklamaları ekler b/117145301
Sürüm 1.0.0-alpha07
29 Ekim 2018
Yeni Özellikler
- Yeni bir 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
navigation-testing-ktxmodülünavigation-testing artifactile birleştirildi ve artık yayınlanmayacak.navigation-testingyapısı artık Kotlin standart kitaplığına bağlıdır. API, Kotlin kurallarıyla daha tutarlı olacak şekilde değiştirildi ancak Java ile yazılmış testler için kullanmaya devam edebilirsiniz.- Meta veri manifestosunda kayıtlı gezinme grafikleri artık desteklenmiyor. b/118355937
- İşlemler artık <activity> hedeflerine eklenemez. aosp/785539
Hata Düzeltmeleri
- Derin bağlantılar artık sorgu parametrelerini doğru şekilde ayrıştırıyor. b/110057514
- Etkinlik hedefleri artık tüm giriş ve çıkış animasyonlarını doğru şekilde uyguluyor. b/117145284
- Özel Navigator'lar kullanılırken yapılandırma değişikliklerinden sonra oluşan çökme hatası 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 tarifleri oluşturulabilir. b/117407555
- <include> grafiği için yol tarifi oluşturmayla ilgili sorun düzeltildi. b/116542123
Sürüm 1.0.0-alpha06
20 Eylül 2018
Yeni Özellikler
- Parça ve etkinlik hedefleri için paylaşılan öğe geçişleri artık destekleniyor b/79665225. Daha fazla bilgi için Navigation Architecture Component ile gezinmeyi uygulama konusuna bakın.
NavigationViewbölümünde bir öğe seçildiğinde, artık tüm alt sayfalar kapatılacak b/112158843.
API Değişiklikleri
- Önemli Değişiklik: Navigator
navigate()yöntemi artıkNavigator.Extrasparametresini alıyor. - NavController'ın
getGraph()yöntemi artıkNonNullb/112243286
Hata Düzeltmeleri
NavigationUI.setupWithNavController()Ayrı hedeflerdeki görünümlerle birlikte kullanıldığında artık görüntüleme sızıntısı 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üzeltin. b/109409713
- Kaynak tanımlayıcılardan Java adlarına dönüşüm düzeltildi. 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, bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.
API / Davranış Değişiklikleri
- NavHostFragment, her zaman geçerli Fragment'ı birincil gezinme parçası olarak ayarlar. Böylece, dış NavController açılmadan önce alt fragment yöneticilerinin açılması sağlanır. b/111345778
Safe Args
- Zarar Veren Değişiklik: ConstraintLayout 2.0.0-alpha1 gibi diğer kitaplıklarla çakışmayı önlemek için
app:type,app:argTypeb/111110548 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 oluşturulan sınıflara ek
NonNullek 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, bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.
API / Davranış Değişiklikleri
- Toolbar için NavigationUI.setupWithNavController yöntemi eklendi b/109868820
- CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
- popBackStack(), geri yığın boş olduğunda veya verilen hedef kimliği geri yığı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 "onSaveInstanceState'den sonra bu işlem gerçekleştirilemez" 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,setDemoControllerIndexb/79995048 olur. - Örneğin,
action_show_settings,actionShowSettingsb/79642240 olur.
- Örneğin,
- Önemli Değişiklik: Bağımsız değişkenler artık varsayılan olarak boş 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"işlevini "123L" biçiminde defaultValues ile kullanabilirsiniz. b/79563966 - Parcelable bağımsız değişkenleri artık
app:typeiçin tam nitelikli sınıf adı kullanılarak destekleniyor. Yalnızca"@null"b/79563966 varsayılan değeri desteklenir. - Args sınıfları artık
equals()vehashCode()b/79642246'yı uyguluyor. - 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
setPopUpTo'yı grafikteki ilk hedefle (b/109909461) kullanırken karşılaşılan sorunlar düzeltildi.- Tüm
app:defaultValuedeğerlerinin dize olarak iletilmesi sorunu 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 koruma 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
FragmentNavigatorartıksetReorderingAllowed(true)kullanıyor. b/109826220Gezinme 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
IllegalStateExceptiondüzeltildi. b/79632233Gezinme artık animasyonlar kullanılırken titremeyi düzeltmek için Destek Kitaplığı 27.1.1'e bağlıdır. b/80160903
Alt parça olarak defaultNavHost="true" kullanılırken
IllegalArgumentExceptiondüzeltildi. b/79656847NavDeepLinkBuilder kullanılırken
StackOverflowErrorsorunu düzeltildi. b/109653065İç içe yerleştirilmiş bir grafiğe geri dönülürken oluşan
IllegalArgumentExceptiondüzeltildi. b/80453447launchSingleTopkullanılırken Fragment'lerin çakışmasıyla ilgili sorun düzeltildi. b/79407969Gezinme artık iç içe yerleştirilmiş grafikler için doğru yapay geri yığını oluşturuyor. b/79734195
NavigationUI artık iç içe yerleştirilmiş bir grafik
MenuItemolarak kullanıldığında doğru öğeyi vurgulayacak. b/109675998
API Değişiklikleri
İşlemler için
clearTasközelliği veNavOptions'deki ilişkili API kullanımdan kaldırıldı. b/80338878İşlemler için
launchDocumentözelliği veNavOptions'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.