Navigasyon
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ü |
---|---|---|---|---|
2 Temmuz 2025 | 2.9.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.1" // 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.1" // 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.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.1" 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 dil kodu oluşturmak için bu satırı uygulamanızın veya modülünüzün build.gradle
dosyasına 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 şunları ekleyin:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX'e Taşıma bölümünde belirtildiği gibi, gradle.properties
dosyanızda android.useAndroidX=true
olmalıdır.
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerine 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 olursa 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.
Sürüm 2.9
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.State
içinde hiçbir zaman CREATED durumunun ötesine geçmemesine neden olan sorun düzeltildi. (I043ba, b/421095236)
Sürüm 2.9.0
7 Mayıs 2025
androidx.navigation:navigation-*:2.9.0
iptal edilir. 2.9.0 sürümü bu commit'leri içerir.
2.8.0 sürümünden beri yapılan önemli değişiklikler
- Artık, kullanılmalarını sağlamak için gezinme güvenli bağımsız değişken işlemleri
@CheckResult
ek açıklamasıyla oluşturuluyor.
SupportingPane Arayüzü
- Özel Gezginler artık hedeflerini
SupportingPane
arayüzünü uygulayan yerler olarak işaretleyebilir. Bu,NavController
'a bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüzü kullanarak aynı anda birden fazla hedefRESUMED
edilebilir.
Compose Kotlin Multiplatform
- Gezinme artık
Intent
yerineNavDeepLinkRequest
alan 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 olan
NavUri
sunuyor. Bu sayede platformdan bağımsız bir şekilde URI oluşturmak mümkün olur. Teşekkürler Konstantin Tskhovrebov!
Type Safe işlevleri
- Daha önce yalnızca
reified
yöntemleriyle erişilebilen tür güvenli API'ler (ör.composable<YourScreen>
artık doğrudan birKClass
örneği alan, somutlaştırılmamış sürümlere sahip. - Gezinme türü güvenliği artık rota olarak veya rotanın bağımsız değişken türü olarak değer sınıflarını destekliyor.
Sürüm 2.9.0-rc01
23 Nisan 2025
androidx.navigation:navigation-*:2.9.0-rc01
iptal edilir. 2.9.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Bu hedefler aslında çalışmadığı için Jetpack Navigation'dan Android dışı tüm platform hedefleri kaldırıldı. Artık farklı platformlar için saplamalar sağlanmaktadır.(I2877d)
Sürüm 2.9.0-beta01
9 Nisan 2025
androidx.navigation:navigation-*:2.9.0-beta01
iptal edilir. 2.9.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
parseStringAsNavUri
'nın ortak API'si, bir dize alanNavUri
fabrika 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-testing
modülü artık Android'in yanı sıra masaüstü, Linux, macOS ve iOS'te de destekleniyor. (I2b770, b/398265336)NavType
artık Android'in yanı sıra masaüstü, Linux, macOS ve iOS'te de destekleniyor. (I297d8)
Sürüm 2.9.0-alpha08
12 Mart 2025
androidx.navigation:navigation-*:2.9.0-alpha08
iptal edilir. 2.9.0-alpha08 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Gezinme
2.8.9
: Gezinme 2.8.8'de bulunan ve eşleşme olarak kabul edilmesi için derin bağlantı isteği veya amacının tüm alanlarıyla tam olarak eşleşen bir derin bağlantı gerektiren bir gerileme düzeltildi. Bu durum, kısmi alan eşleşmeleri içeren ve başka eşleşme içermeyen derin bağlantıların artık çalışmamasına neden oldu. (Ie5e36, b/399826566)
Harici Katkı (External Contribution)
NavUri
oluşturmak için yeni ortak ayrıştırıcı işlevi. Teşekkürler Konstantin Tskhovrebov! (If0a6a)
Sürüm 2.9.0-alpha07
26 Şubat 2025
androidx.navigation:navigation-*:2.9.0-alpha07
iptal edilir. 2.9.0-alpha07 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Kapsayıcı olmayan pop ile
saveState
denendiğ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'den itibaren: Bir derin bağlantı ve derin bağlantı isteğinin uri, işlem ve mime üzerinde tam olarak eşleşmesi gerektiği
NavDeepLink
eşleşme sorunu düzeltildi. Yalnızca bir veya iki alan eşleşiyorsa artık eşleştirme yapılamaz. (I3b029, b/395712033) - Navigation 2.8.8 sürümünde: Joker karakterli yolların eklenen derin bağlantıyla eşleşmemesine neden olan hata düzeltildi (I7ea92, b/389970341).
Harici Katkı (External Contribution)
- Gezinme ile ilgili yaygın, gezinme ile ilgili çalışma zamanı ve gezinme ile ilgili oluşturma API'lerini ortak platforma ayıklayın. Teşekkürler Konstantin Tskhovrebov! (I1e626, Ica76f, Idf479)
Bilinen Sorunlar
- b/395712033 numaralı sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya
Intent
ile aynı alanlara sahip olması yanlış 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
- Artık, kullanılmalarını sağlamak için gezinme güvenli bağımsız değişken işlemleri
@CheckResult
ek 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ışılan 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ğlananNavDestination
etiketleri, özelNavType
mantığına uyulmasını sağlamak içinNavType.get
üzerinden ayrıştırılır. (I7ec2f, b/388100796) - Gezinme
2.8.6
:dataPattern
ile etkinliğe giderkenActivityNavigator
artık arg değerini, bağımsız değişkeninNavType
ile kodlamaya çalışacak. (I16376, b/383616432) - Navigation
2.8.5
: Navigation Compose kullanılırken ve mevcut animasyonun sona erdiği karede navigate ç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
reified
yöntemleriyle erişilebilen tür güvenli API'ler (ör.composable<YourScreen>
artık doğrudan birKClass
örneği alan, somutlaştırılmamış 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.
somutlaştırılmış | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
API Değişiklikleri
- Tür güvenliği için Kotlin'e özgü
NavGraph.setStartDestination
aşırı yüklemesi, Java kaynaklarından gizlenir. (Ic640c, b/364634035)
Hata Düzeltmeleri
- Gezinme
2.8.5
: Geri yığın 1 girişe indirildiğinde ve aynı karede bir sistem geri işlemi tetiklendiğindeNavHost
öğesininPredictiveBackHandler
içinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407) - Navigasyon
2.8.5
: Bir grafiğinstartDestination
güncellenirkenNavDestination
NullPointerException
sorunu düzeltildi. (I99421, b/361560785)
Harici Katkı (External Contribution)
- Navigation
2.8.5
: Gezinme türü güvenliği artık özelNavType
gerektirmeden 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 türü güvenliği artık rota olarak veya rotanın bağımsız değişken türü olarak değer sınıflarını destekliyor. (I9344a, b/374347483)
Hata Düzeltmeleri
- Bir
NavBackStackEntry
öğesine eklenen birLifecycleObserver
, kapsayan Etkinlik veya Parça gibi ana makineLifecycleOwner
yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilecekConcurrentModificationException
düzeltildi. (Ia9494)
Sürüm 2.9.0-alpha02
30 Ekim 2024
androidx.navigation:navigation-*:2.9.0-alpha02
iptal edilir. 2.9.0-alpha02 sürümü bu commit'leri içerir.
Harici Katkı (External Contribution)
- Yeni ortak
NavController.handleDeepLink(request: NavDeepLinkRequest)
yöntemi. Teşekkürler Konstantin Tskhovrebov! (I3e228)
Sürüm 2.9.0-alpha01
16 Ekim 2024
androidx.navigation:navigation-*:2.9.0-alpha01
iptal edilir. 2.9.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
- Özel Gezginler artık hedeflerini
SupportingPane
arayüzünü uygulayan yerler olarak işaretleyebilir. Bu,NavController
'a bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüzü kullanarak aynı anda birden fazla hedefRESUMED
edilebilir. (Id5559) - Gezinme
2.8.3
:navigation-common
,navigation-runtime
venavigation-compose
modülleri için,@Serializable
ile doğru şekilde açıklama eklenmemiş tür güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Navigation
2.8.3
:navigation-common
,navigation-runtime
venavigation-compose
modüllerine,@Keep
ile 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ümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Davranış Değişiklikleri
- Daha önce
DESTROYED
olan birNavController
kullanmaya çalışmak artıkIllegalStateException
hatasına neden olacak. (I520da, b/369616172)
Hata Düzeltmeleri
- Enum sınıfı küçültülmüş derlemelerde silinirse
@Keep
ek açıklamasının kullanılmasını önermek için Enum sınıfı bulunamadı istisnasını güncelleyin. (I90e79, b/358137294)
Bilinen Sorunlar
- Android Gradle eklentisi 8.4 veya sonraki sürümlerinde lint çalıştırmaya çalışırken
Navigation 2.8.*
sürümünde eklenen yeni lint kurallarıyla ilgili bir sorun var ve bu durumObsolete custom lint check
hatasına neden oluyor. (b/368070326, b/371463741)
Sürüm 2.8
Sürüm 2.8.9
12 Mart 2025
androidx.navigation:navigation-*:2.8.9
iptal edilir. 2.8.9 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- 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 karakterli 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
NavDeepLink
eşleşmesi düzeltildi. Yalnızca bir veya iki alan eşleşiyorsa artık eşleştirme yapılamaz. (I3227f, b/395712033)
Bilinen Sorunlar
- b/395712033 numaralı sorunu giderme çalışmaları nedeniyle, derin bağlantıların derin bağlantı isteği ve/veya
Intent
ile aynı alanlara sahip olması yanlış 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.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
NavDestination
etiketleri, özelNavType
mantığına uyulmasını sağlamak içinNavType.get
üzerinden ayrıştırılır. (Id366d, b/388100796)dataPattern
ile etkinliğe giderkenActivityNavigator
artık arg değerini, bağımsız değişkeninNavType
ile kodlamaya çalışacak. (I1a71d, b/383616432)
Sürüm 2.8.5
11 Aralık 2024
androidx.navigation:navigation-*:2.8.5
iptal edilir. 2.8.5 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Geri yığın 1 girişe indirildiğinde ve aynı karede bir sistem geri işlemi tetiklendiğinde
NavHost
öğesininPredictiveBackHandler
içinde istisna oluşturmasına neden olan sorun düzeltildi. (I1a429, b/375343407) - Bir grafiğin
startDestination
güncellenirken oluşanNavDestination
NullPointerException
sorunu 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 eklenen birLifecycleObserver
, kapsayan Etkinlik veya Parça gibi ana makineLifecycleOwner
yaşam döngüsü durumunu değiştirdiğinde arka yığında değişikliğe neden olabilecekConcurrentModificationException
düzeltildi. (Ia9494)
Harici Katkı (External Contribution)
- Gezinme türü güvenliği artık özel
NavType
gerektirmeden bir rotanın bağımsız değişken türü olarakList<Enum>
'yı 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
- Navigation
2.9.0-alpha03
: Gezinme türü 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-alpha01
bölümünde: Daha önceDESTROYED
olan birNavController
kullanmaya çalışıldığında artıkIllegalStateException
hatası 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-runtime
venavigation-compose
modülleri için,@Serializable
ile doğru şekilde açıklama eklenmemiş tür güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)navigation-common
,navigation-runtime
venavigation-compose
modülleri için,@Keep
ile doğru şekilde açıklama eklenmemiş Enum bağımsız değişkenlerine sahip tür açısından güvenli rotaları belirlemeye yardımcı olacak yeni lint kontrolleri eklendi. Bu kontrol, tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Hata Düzeltmeleri
Navigation 2.8.*
sürümünde eklenen yeni lint kurallarının, Android Gradle eklentisi 8.4 veya sonraki sürümlerle lint çalıştırma girişimindeObsolete custom lint check
hatasına neden olduğu sorun düzeltildi. (I1be3d, b/368070326, b/371463741)
Bilinen Sorunlar
- Navigation lint, Lint 16 (AGP 8.7) veya sonraki sürümlerle lint çalıştırmaya çalışırken Obsolete custom lint check hatası verir. (b/371926651)
Sürüm 2.8.2
2 Ekim 2024
androidx.navigation:navigation-*:2.8.2
iptal edilir. 2.8.2 sürümü bu commit'leri içerir.
Yeni Özellikler
- Navigation Type Safety artık özel
NavType
gerektirmedenDouble
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
veList<Double>?
içeren Serializable sınıflarını destekliyor. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Hata Düzeltmeleri
- Gezinme, bir rotanın bağımsız değişkenini
NavType
ile eşleyemediğinde gösterilen hata mesajı iyileştirildi. Yeni hata mesajında bağımsız değişken adı, bağımsız değişkenin tam nitelikli adı ve rotanın tam nitelikli adı yer alacak. (Id8416, b/346264232)
Sürüm 2.8.1
18 Eylül 2024
androidx.navigation:navigation-*:2.8.1
iptal edilir. 2.8.1 sürümü bu commit'leri içerir.
Yeni Özellikler
- Tür güvenli API'ler kullanılarak
popBackStack
işlemi denenirken somutlaştırılmış sınıf türü alanpopBackStack
işlevinin kullanılmasını sağlamak için yeni bir lint kuralı eklendi. (Ief161, b/358095343)
Hata Düzeltmeleri
- Navigasyon artık bir
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 tüm zorunlu bağımsız değişkenlerin değerlerini içermesini gerektiriyor. (I18e74, b/362594265) - Navigation Safe Args, boş değer içermeyen dizeler için destek ekledi. Bu sayede "null" değerleri ayrıştırılıp pakete olduğu gibi depolanacak. Bu, "null" değerlerinin null nesne olarak ayrıştırıldığı mevcut davranıştan farklıdır. Bu değişiklik yalnızca boş değer atanamayan String türleri için geçerlidir. Boş değer atanabilir dizeler değişmeden kalır. (I08b4a, b/348936238)
- Bir
NavDestination
artık yalnızca hedefe açıkça eklenen bir derin bağlantı üzerinden derin bağlantı oluşturulabilir. Bu, yalnızca dize rotası alan gezinme işlevi aşırı yüklemesiyle bir hedefin rotasına gidebileceğiniz anlamına da gelir. Bu düzeltme, potansiyel olarak korunan bir hedefe derin bağlantı oluşturmayı mümkün kılan güvenlik açığını giderir. (Ie30e6)
Bağımlılık Güncellemesi
- Navigation Safe Args artık Kotlin 2.X yerine Kotlin 1.9.24'e bağlı olduğundan geliştiriciler güncelleme yapmaya zorlanmaz. (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 Tür Güvenliği
- 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
SeekableTransitionState
APIs from compose-animation 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
navigation-fragment-compose
adlı yeni bir yapay öğe eklendi. Bu yapay öğe,NavHostFragment
içinComposableNavHostFragment
alternatifini içerir ve Navigation XML dosyalarınıza composable hedefler eklemenize olanak tanır. Hercomposable
hedef, tam nitelikli adı her hedefteandroid:name
özelliği olarak kullanılan, üst düzey ve bağımsız değişken içermeyen bir@Composable
yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayan bir parça oluşturulur.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Diğer değişiklikler
- Navigation Compose artık Compose 1.7.0'a bağlıdır.
- Navigation artık liste, diziler ve haritalar gibi koleksiyona dayalı bağımsız değişkenler için
NavType<T>
alt sınıfı olan yeni birCollectionNavType<T>
sınıfı sunuyor. Tüm varsayılanNavType
dizileri (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
veStringArrayType
) artık bu yeni sınıftan devralınıyor. NavType
artık Int, String, Boolean, Float ve Long listeleri için yerleşik destek sunuyor.
Sürüm 2.8.0-rc01
21 Ağustos 2024
androidx.navigation:navigation-*:2.8.0-rc01
iptal edilir. 2.8.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Üst düzey Enum sınıfları tür güvenli bağımsız değişkenler olarak geçirilirken 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.EnumType
eklendi. Bu,Enum
türlerinin artık özelNavType
gerektirmediğ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
'nınstartDestination
,NavGraph
'ya iletilenstartDestination
rotasıstartDestination.route
'ye 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
WrongStartDestinationType
Lint kontrollerinin, iletilen sınıf türünde Companion nesnelerini kontrol etmemesi ve bu nedenle lint'in hatayı algılayamamasına neden olan sorun düzeltildi. (I92b09)
Sürüm 2.8.0-beta05
10 Temmuz 2024
androidx.navigation:navigation-*:2.8.0-beta05
iptal edilir. 2.8.0-beta05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- İç içe yerleştirilmiş
singleTop
öğeler aynıstartDestination
rotayı paylaştığındasingleTop
navigasyonunun kilitlenmesi sorunu düzeltildi.NavGraphs
(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)
- Doğrudan sınıf alanlarında
@Serializable(with =...)
aracılığıyla bildirilen özel serileştiriciler için hata mesajını iyileştirerek bunun şu anda desteklenmeyen bir özellik olduğunu netleştirin. (I052b0, b/341319151) SavedStateHandleFactory
test API'si artık Android olmayan testlerde kullanılabilir ancak paketlerle bağımsız değişken ayrıştırmayı desteklemek için Robolectric gerektirir. (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, Tahmini Geri Hareket iptal edildikten sonra kullanıcının döndüğü
NavBackStackEntry
öğesinin hiçbir zamanRESUMED
yaşam döngüsü durumuna geri dönmemesine neden olan sorun düzeltildi. Bu, geri dönen hedefin, kaydırma işleminden sonra yerine oturmak yerine doğru şekilde geri animasyonunu da sağlar. (I97a0c, b/346608857) - Navigation Compose ile tahmine dayalı geri gitme özelliği kullanılırken, kaldırı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öntemiyle geliyor. Bağımsız değişken olarak iletilen boş bir koleksiyonu işlemek için bunu geçersiz kılın. (Ie4d84, b/341723133)
Hata Düzeltmeleri
- Nihai çıktıların URI kodlu olması gerektiğini vurgulamak için
NavType.serializeAsValue
veserializeAsValues
ile ilgili doküman eklendi. (Ida6bd, b/344943214) - Boş
CollectionNavType
bağımsız değişkeniyletoRoute<T>
çağrıldığında kilitlenme sorunu düzeltildi. Boş birCollectionNavType
ile gezinirken çıkış bağımsız değişkeni, Serializable sınıfınızda belirtilen varsayılan değer veya varsayılan değer 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
NavType
ileNavBackStackEntry.toRoute
kullanılırkenClassCastException
kilitlenmesi sorunu düzeltildi. (I1c29b, b/342239473) - Mevcut hedeften kimlik aracılığıyla ulaşılamayan bir geri yığın girişi geri yüklenmeye çalışıldığında oluşan, gezinme geri yığın durumu geri yükleme sorunları düzeltildi. Rotalar kimliklerle desteklendiğinden, rotalarla oluşturulan hedefler de bu durumdan etkilendi. Bu düzeltme, aynı temel soruna sahip
clearBackStack()
'nın aranmasından kaynaklanan 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çintypeMap
parametresini kabul ediyor. (Ie39fb, b/339026523)navigation-testing
'ya, Kotlin Serializable nesnesindenSavedStateHandle
oluşturmak için bir test API'si eklendi. (Id4867, b/339080702)
Hata Düzeltmeleri
- Navigation Kotlin DSL işlevleriyle ilgili eksik parametre belgeleri eklendi. (I26a36)
Sürüm 2.8.0-alpha08
1 Mayıs 2024
androidx.navigation:navigation-*:2.8.0-alpha08
iptal edilir. 2.8.0-alpha08 sürümü bu commit'leri içerir.
Navigation Compose'da Safe Args
- 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, Kotlin Serialization'ı kullanarak gezinme grafiğinizdeki hedefleri tür güvenli nesneler ve veri sınıfları aracılığıyla tanımlamanıza olanak tanır:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Daha fazla bilgi için Navigation Compose meet Type Safety blog yayınını inceleyin.
Yeni Özellikler
navigation-fragment-compose
yapısı artıkComposableFragment
içindeki composable yöntemlere yerel birLocalFragment
kompozisyonu sağlıyor. (If35e5)NavType
artık Int, String, Boolean, Float ve Long listeleri için yerleşik destek sunuyor. (I4b6dd, Ia914c, b/188693139)
Sürüm 2.8.0-alpha07
17 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha07
iptal edilir. 2.8.0-alpha07 sürümü bu commit'leri içerir.
Yeni Özellikler
navigation-fragment-compose
öğesineNavHostFragment
yerineComposableNavHostFragment
alternatifini içeren yeni birnavigation-fragment-compose
öğesi ekler. Bu alternatif, gezinme XML dosyalarınızacomposable
hedef eklemenize olanak tanır. Hercomposable
hedef, tam nitelikli adı her hedefteandroid:name
özelliği olarak kullanılan, üst düzey ve bağımsız değişken içermeyen bir@Composable
yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayan bir parça oluşturulur. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
API Değişiklikleri
- Kotlin Serialization'a dayalı bir yaklaşım kullanılarak Navigation Compose'da Safe Args desteği devam etti. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
açı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 Serialization'a dayalı bir yaklaşım kullanılarak Navigation Compose'da Safe Args desteği başladı. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
açı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
NavHost
artık varsayılan contentAlignment bağımsız değişkeni olarakAlignment.TopStart
kullanılıyor. Bu,AnimatedContent
için varsayılan değerle uyumlu hale getirir ve merkezden ölçeklendirme geçişinde beklenmeyen ölçeklendirme durumlarını düzeltir. (I09e72, b/330111602)- Navigation Compose kullanılırken tahmini geri hareketini hızlıca yaptığınızda
NavHost
artık özel geçişi hemen bitirmek yerine doğru şekilde tamamlayacak. (I99017, b/327292110)
Sürüm 2.8.0-alpha05
20 Mart 2024
androidx.navigation:navigation-*:2.8.0-alpha05
iptal edilir. 2.8.0-alpha05 sürümü bu commit'leri içerir.
Yeni Özellikler
- Artık
NavGraph
'nınstartDestination
işlevinedefaultValue
'a güvenmeden doğrudanstartDestination
rotasında bağımsız değişkenler iletebilirsiniz. Bu durum, iç içe yerleştirilmişNavGraph
startDestinations
için de geçerlidir. (I0e0b5, b/109505019, b/188693139)
API Değişiklikleri
- Liste, diziler, haritalar gibi koleksiyona dayalı bağımsız değişkenler için
NavType<T>
sınıfının alt sınıfı olan yeni bir soyutCollectionNavType<T>
sınıfı eklendi. (Ic6d63, b/188693139) - Tüm varsayılan
NavType
dizileri (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
veStringArrayType
) artıkCollectionNavType
türündedir (Idcf79, b/188693139). NavType
artık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açıkvalueEquals
API'si sunuyor. (I6cb97, b/327229511)
Hata Düzeltmeleri
- Derin bağlantılardaki sorgu parametreleri artık dize tabanlı
NavTypes
için geçerli değerler olarak bağımsız değişken adının etrafında küme parantezleri (ör.{argName}
) biçimindeki değerlere izin veriyor. Bu düzeltme, söz konusu değerin tüm türler için geçersiz (veya değerin olmaması) olarak kabul edildiği sorunu giderir. (I18302, b/327274038) NavController
gibi rotaları destekleyen işlevler, artıknavigate
veyapopBackStack
, DiziNavTypes
bağımsız değişkenleriyle doldurulmuş rotaları düzgün şekilde eşleştirebilir. (Iea805, b/327229511)
Sürüm 2.8.0-alpha04
6 Mart 2024
androidx.navigation:navigation-*:2.8.0-alpha04
iptal edilir. 2.8.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
- Artık
SizeTranform
ve/veyanavigation
işlevlerinin başlatılması kapsamında tanımlayarak Navigation Compose'daki geçişleriniz içinSizeTranform
değerini belirtebilirsiniz.composable
(I91062, b/296912651)
Hata Düzeltmeleri
- Compose Navigation'da
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ünde şu commit'ler yer alıyor.
API Değişiklikleri
NavBackStackEntry.savedStateHandle
, ana iş parçacığında olması gereken kodu kullandığı için artık@MainThread
olarak işaretleniyor. (Ibb988, b/299523245)
Hata Düzeltmeleri
- Gezinme'de, ilişkili girişin
ViewModel
kaydedilmiş duruma dahil olmadığı içinNavGraph
ViewModel'lerinDESTROYED
çok erken oluşturulmasına neden olan sorun düzeltildi. (Ib6bb7, b/317581849)
Bağımlılık Güncellemesi
- 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ünde şu commit'ler yer alıyor.
Yeni Özellikler
- Navigation Compose artık
SeekableTransitionState
APIs from compose-animation 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 olanBackStackState
sızıntısı düzeltildi. (I598b0, b/309559751) - Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcıları kullanılırken String olmayan bağımsız değişkenlerin düzgün şekilde gösterilmemesi sorunu düzeltildi. (#636, b/316676794)
Bağımlılık Güncellemesi
- 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)
NavigationUI
yardımcılarını kullanarak uygulama çubuklarının başlığını doldururken String olmayan bağımsız değişkenler için görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.
Sürüm 2.7.7
Sürüm 2.7.7
7 Şubat 2024
androidx.navigation:navigation-*:2.7.7
iptal edilir. 2.7.7 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Navigation
2.8.0-alpha01
'dan geri taşındı: Tek birNavBackStackEntry
üzerinde birden fazlasaveState()
çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk kaydedilen durumun geri yüklenebildiğiBackStackState
sızıntısı düzeltildi. (I598b0, b/309559751) - Navigation
2.8.0-alpha01
sürümünden geri aktarıldı:NavigationUI
yardı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)
NavigationUI
yardımcılarını kullanarak uygulama çubuklarının başlığını doldururken String olmayan bağımsız değişkenler için görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.
Sürüm 2.7.6
Sürüm 2.7.6
13 Aralık 2023
androidx.navigation:navigation-*:2.7.6
iptal edilir. 2.7.6 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NavGraph
equals()
işlevi artık yalnızca çağıran grafiği değil, diğer grafiğin düğümlerini de doğru şekilde dikkate alıyor. Bu sayede, farklı kimliklere sahip düğümler içeren grafikler artık eşit kabul edilmeyecek (I401cb, b/311414915).
Sürüm 2.7.5
Sürüm 2.7.5
1 Kasım 2023
androidx.navigation:navigation-*:2.7.5
iptal edilir. 2.7.5 sürümü şu commit'leri içerir.
Performans İyileştirmeleri
- İki grafiği karşılaştırma performansı (hem süre hem de tahsis sayısı açısından) önemli ölçüde iyileştirildi. Bu, yeni grafiği mevcut olanla dahili olarak karşılaştıran
setGraph
gibi çağrıların çok daha hızlı olduğu ve daha az atlanan kareyle sonuçlandığı anlamına gelir. Bu iyileştirmeye yol açan kapsamlı analiz için Michał Z'ye teşekkür ederiz. (I6ad62) NavHost
artık güncellenmiş durumu okumak için ikinci geçişin beklenmesi yerine başlangıç hedefini ilk bileşim geçişinde oluşturacak. (I439a7, b/304852206)
Hata Düzeltmeleri
- Grafiğinizde iki hedefi bağlayan bir işlem içeren bir hedef varsa ve
setGraph
işlevini tam olarak aynı grafikle birden fazla kez çağırdıysanız geri yığınınızın çıkarılmasına neden olan sorun düzeltildi. (Ieaed7) - Hızlı bir şekilde gezinilip kapatılan iletişim kutuları artık
NavController.visibleEntries
listesine sızmayacak. (I67586, b/287969970) - Bir giriş, yapılandırma değişikliğiyle birlikte açıldığında
saveState
yanlışsa girişinViewModel
değ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_TASK
iş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üzeltilmiştir.
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
popUpTo
için destek eklendi. Bu sayede,popBackStack
'daki destekle eşleşen, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe geri dönülmesine olanak tanıyan bağımsız değişkenli rotalar kullanılabilecek. (I731f4, b/299255572)
Hata Düzeltmeleri
popUpTo
ile yapılan bir gezinme işlemininpopUpTo
ile yapılan başka bir gezinme işlemiyle kesintiye uğratılması durumundaFragmentNavigator
uygulamasının kilitlenmesine neden olan sorun düzeltildi. (I3c848, b/301887045)- Sistemin geri tuşuna basıldığında
currentDestination
simgesinin, görüntülenen parçayla eşleşecek şekilde doğru güncellenmemesine neden olan sorun düzeltildi. (Id0d6c, b/289877514) DialogFragment
yaşam döngüsü, artık üstündeki iletişim kutusu kapatıldığındaRESUMED
durumuna doğru şekilde geçiş yapacak. (I88f0d, b/301811387)
Sürüm 2.7.3
Sürüm 2.7.3
20 Eylül 2023
androidx.navigation:navigation-*:2.7.3
iptal edilir. 2.7.3 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Parçalarla gezinme özelliğinde,
visibleEntries
listesinin yanlış girişler içermesine neden olan sorun düzeltildi. (I5caa9, b/288520638) - Kayan pencere hedefinin (ör.
Dialogs
,Bottomsheets
vb.) hiçbir zamanRESUMED
yaşam döngüsü geri çağırması 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 Yaşam Döngüsü
2.6.2
'ne bağlı. Bu sayede, hedeflerinrememberSaveable
durumu ileViewModel
sahibiSavedStateHandle
örneklerinin, işlem sonlandırılıp yeniden oluşturulduktan sonra düzgün şekilde geri yüklenmesini engelleyenrememberSaveable
ile Navigation Compose'unNavHost
arasındaki etkileşim düzeltildi. (b/298059596, b/289436035) - Navigation Compose'da aynı anda birden fazla iletişim kutusu gösterilirken kısmen gizlenmiş iletişim kutularının (ör. en üstteki iletişim kutusu olmayan)
STARTED
durumu yerineCREATED
yaş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
RESUMED
yaşam döngüsü durumuna geçmek yerineSTARTED
yaşam döngüsü durumunda takılmasına neden olduğu sorun düzeltildi. (aosp/2629401, b/286371387) - Navigation Safe Args, artık gerçekten yürütülmüyorsa görevini hemen başlatmıyor. (I0e385, b/260322841)
Bağımlılık Güncellemesi
- Navigation Compose artık Compose 1.5.1'e bağlıdır.
Sürüm 2.7.1
Sürüm 2.7.1
23 Ağustos 2023
androidx.navigation:navigation-*:2.7.1
iptal edilir. 2.7.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Compose ile Navigation'da,
Scaffold
kullanıldığındaLifecycle.State.DESTROYED
ViewModel
öğesine erişmeye çalışırken hata alınmasına neden olan sorun düzeltildi. (I1dc11, b/268422136)
Sürüm 2.7.0
Sürüm 2.7.0
9 Ağustos 2023
androidx.navigation:navigation-*:2.7.0
iptal edilir. 2.7.0 sürümü şu commit'leri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
Accompanist'ten animasyonlar
AnimatedContent
kararlı 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 Navigation Compose'a nasıl geri geçileceğine dair yönergelerle birlikte kısa süre içinde resmi olarak kullanımdan kaldırılacak. Ancak, en son Accompanist alfa sürümünü (0.31.2-alpha
) kullanıyorsanız başka API değişikliği yapmanız gerekmez. Bu, taşıma kılavuzunun tersi olacaktır. (b/197140101)
Hata Düzeltmeleri
- Navigation Compose'daki NavHost artık Etkinlik DURDURULUP DEVAM ETTİRİLDİKTEN sonra bile sistemin geri çağırmalarını doğru şekilde yakalıyor. (Icb6de, b/279118447)
Bağımlılık Güncellemeleri
- Gezinme artık
1.1.0
yerine Compose1.5.0
sürümüne bağlıdır.
Sürüm 2.7.0-rc01
26 Temmuz 2023
androidx.navigation:navigation-*:2.7.0-rc01
iptal edilir. 2.7.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NavHost
'ın bir parçası olarak oluşturulanEnterTransition
veExitTransition
lambda'larının,NavHost
kompozisyondan kaldırıldıktan sonra bile bellekte kalmasına neden olan sorun düzeltildi. (I893d0)
Bilinen Sorunlar
- Navigation 2.6.x'te, popUpTo ile gezinirken
IllegalArgumentException
'a neden olabilecek bir sorun var. Bu istisna, grafiğinizi burada önerilen ş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
popUpTo
seçeneğiyle gezinmeyi kullanan özel geçişler için doğru z-sırasına sahip.(/Ib1c3a, b/285153947)
Sürüm 2.7.0-beta01
7 Haziran 2023
androidx.navigation:navigation-*:2.7.0-beta01
iptal edilir. 2.7.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NavHost
artıkActivity
STOPPED
veRESUMED
işleminden sonra bile sistem geri çağırmalarını doğru şekilde yakalıyor. (Icb6de, b/279118447)
Sürüm 2.7.0-alpha01
24 Mayıs 2023
androidx.navigation:navigation-*:2.7.0-alpha01
iptal edilir. 2.7.0-alpha01 sürümü şu commit'leri içerir.
Accompanist'ten animasyonlar
AnimatedContent
kararlı 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 Navigation Compose'a nasıl geri geçileceğine dair yönergelerle birlikte kısa süre içinde resmi olarak kullanımdan kaldırılacak. Ancak, en son Accompanist alfa sürümünü (0.31.2-alpha
) kullanıyorsanız başka API değişikliği yapmanız gerekmez. Bu, taşıma kılavuzunun tersi olacaktır. (b/197140101)
Hata Düzeltmeleri
- Navigation
2.6.0-rc02
: Parçalarda gezinme ile ilgili bir sorun düzeltildi. Bu sorunda,popUpTo
ile gezinme ve görünümü yeniden oluşturmadan bir parçayı geri yığından çıkarma işlemi, sistemin geri düğmesinin çalışmayı durdurmasına neden oluyordu. (Ieb8d4, b/281726455)
Bağımlılık Güncellemeleri
- Gezinme artık Compose'a
1.5.0-beta01
bağlıdır.
Sürüm 2.6.0
Sürüm 2.6.0
7 Haziran 2023
androidx.navigation:navigation-*:2.6.0
iptal edilir. 2.6.0 sürümü şu commit'leri içerir.
2.5.0 sürümünden beri gezinme özelliğinde yapılan önemli değişiklikler
NavBackStackEntry
'nınarguments
ve birOnDestinationChangedListener
'ye iletilenarguments
artık yalnızca hedefe gittiğinizde oluşturulan değişmez bağımsız değişkenlerin bir kopyasıdır. Bu nedenle, bu paketlerde yapılan değişiklikler,arguments
veya diğerOnDestinationChangedListener
örneklerine sonraki erişimlerde yansıtılmaz.NavDeepLink
artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek olan tekrarlanan sorgu parametreleri desteklenebiliyor.NavType
artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor.NavType
öğ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 (parseValue
aracılığıyla) tamamenNavType
sınıfında kapsanabilir.StringType
artık bu yöntemi geçersiz kılarak belirtilenString
üzerindeUri.encode
çağrısı yapıyor.
2.5.0 sürümünden beri Navigation Compose'da yapılan önemli değişiklikler
NavHost
ile bir composable'ı önizlerken artık NavGraph'ınstartDestination
varsayılan olarak gösterilecek.NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.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.navDeepLink
Kotlin DSL'si kullanılarak boş birNavDeepLink
oluşturulmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek.
2.5.0 sürümünden beri Fragment'lerle gezinme özelliğinde yapılan önemli değişiklikler
NavHostFragment
artık sistemin geri düğmesini kendisi engellemiyor. Bu, temelFragmentManager
öğesinin sistem geri işlemini gerçekleştirmesine olanak tanır. Bu sayede Fragment1.7.0-alpha01
ve sonraki sürümler, Android U cihazlarda uygulama içi tahmini geri animasyonu sağlayabilir.- Parçalarla gezinme kullanılırken artık
FragmentTransaction
işlemi manuel olarak yapılmaya çalışıldığındaFragmentManager
öğesinin geri yığınına parça eklenmesiIllegalArgumentException
hatası verecek. Parçaları her zamannavigate()
API'si üzerinden eklemelisiniz. - Bir gezinme XML dosyasının etkinlik öğesindeki
app:data
veapp:dataPattern
özelliklerinde yer tutucu olarak tam${applicationId}
dizesi kullanıldığında, yer tutucu genişletme sırasında bağlamınpackageName
ile otomatik olarak doldurulur. FragmentNavigator
artık gezinirken ve pop-up gösterirken geçiş API'lerini kullanıyorNavBackStackEntries
. Bu,NavBackStackEntry
Lifecycle
karakterinin artık sonLifecycle.State
hamlesini yapmadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.DialogFragmentNavigator
artık gezinirken ve pop-up gösterirken geçiş API'lerini kullanıyorNavBackStackEntries
. Bu,NavBackStackEntry
Lifecycle
öğesinin artıkDESTROYED
öğesine geçmeden önceDialogFragment
Lifecycle
öğesininDESTROYED
öğesine geçmesini bekleyeceği anlamına gelir.NavHostFragment
artıkNavHostFragment
,FragmentManager
öğesine eklendiği andaNavController
öğesini almanıza olanak tanıyor. Bu işlem daha önce yalnızcaonCreate()
işleminden sonra yapılabiliyordu.- 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.Menu
aracılığıyla)NavigationUI
artı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 yeniisTopLevelDestination
işlevi aracılığıyla kendi kodunuzda da kullanılabilir. - Üst uygulama çubuğuyla çalışmak için
NavigationUI
'dakisetupWithNavController
entegrasyonları artıkandroid:label
'nızda bulunanReferenceType
bağımsız değişkenleri içinR.string
değerlerini otomatik olarak oluşturulan kaynak tamsayısını çıkış olarak vermek yerine String değerlerine ayrıştıracak. NavigationUI
artık seçilen birMenuItem
üzerinden gezinemediğinde günlükler sunuyor.
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. Bu sorunda,
popUpTo
ile gezinme ve görünümü 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,
popUpTo
yaşam döngüsü geri çağırma işlevindeonResume()
ile gezinerek bir parçanın kaldırılmasını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
NavBackStackEntry
artık özel birtoString
uygulaması sunuyor. (Iff00b)
Hata Düzeltmeleri
- Parçalarla gezinme kullanılırken artık
FragmentTransaction
işlemi manuel olarak yapılmaya çalışıldığındaFragmentManager
öğesinin geri yığınına parça eklenmesiIllegalArgumentException
hatası verecek. Parçaları her zamannavigate()
API'si üzerinden eklemelisiniz. (I6d38e) - Aynı karede bir giriş ekleyen
navigate
ve bu girişi kaldıranpopBackStack
olduğunda, geri yığındaki sonuçlanan üst giriş artık tutarlı bir şekildeRESUMED
Lifecycle.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ünde şu commit'ler yer alıyor.
Hata Düzeltmeleri
- Geçersiz rota kontrolleri düzeltildi. Artık bir
NavDestination
, boş değer atanamayanNavArgument
içeriyorsa bu hedefin rotası, boş değer atanamayanNavArgument
ile aynı ada sahip bağımsız değişkenler için yer tutucular içermelidir. (Ic62bf, b/274697949) Action/MimeType
tabanlı derin bağlantı gezinmeleri, gezinme işlemindeAction/MimeType
ile eşleşenNavDestination
tarafından gerekli olan, boş değer atanamayan birNavArgument
eksikse artık başarısız olur. (Ibfa17, b/271777424)NavController
, önceki grafikle aynı rotaya ve hedeflere sahip bir grafik ayarladığında artık mevcut grafik düğümlerini ve geri yığın hedeflerini yeni örneklerle düzgün şekilde değiştiriyor. Bu düzeltme, Navigation Compose'da durumu kaydetmedenonLaunchSingleTop
kullanılırken yaşanan kilitlenme sorununu 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
NavHostFragment
artıkNavHostFragment
,FragmentManager
öğesine eklendiği andaNavController
öğesini almanıza olanak tanıyor. Bu işlem daha önce yalnızcaonCreate()
işleminden sonra yapılabiliyordu. (Ic6382, b/220186282)
Hata Düzeltmeleri
- Boş değer atanamayan bir bağımsız değişken içeren iç içe yerleştirilmiş bir grafik açılırken oluşan
NullPointerException
düzeltildi. (6b3581, b/249988437) popUpTo
ile gezinme işleminden sonra sistem geri işlevi kullanıldığındaNavController
durumu doğru girişe yönlendirilir. (I3a8ec, b/270447657)FragmentNavigator
artı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
'yaFragmentManager
parç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ünde şu commit'ler yer alıyor.
Hata Düzeltmeleri
- Artık rotaları alan
getBackStackEntry
,popBackStack
,clearBackStack
API 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). clearBackStack()
işlevininNavController
işlevinden çağrılmasının, temizlenen arka yığınla ilişkili parça yöneticisindeki kaydedilmiş durumu temizlememesi sorunu düzeltildi. (Ic1cce, b/271190202)- 2.6.0-alpha06 sürümünde, sekmeler arasında Sistem ile geri gitme özelliği kullanılırken
BottomNavigationView
içindeki yanlışMenuItem
öğesinin vurgulanmasına neden olan gerileme düzeltildi. (I634f6, b/270447657) - 2.6.0-alpha06 sürümünde,
Animation
'ler kullanılırkenNavBackStackEntry
'ların RESUMED durumuna taşınmamasına neden olan gerileme düzeltildi. (Ib3589, b/269646882)
Sürüm 2.6.0-alpha06
22 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha06
iptal edilir. 2.6.0-alpha06 sürümü şu commit'leri içerir.
Yeni özellikler
NavHost
ile bir composable'ı önizlerken artık NavGraph'ınstartDestination
varsayılan olarak gösterilecek. (I2b89f)
API Değişiklikleri
- Tüm
NavController
navigate
aşırı yüklemeleri artık ana iş parçacığında çağrıldıklarından emin olmak için@MainThread
ile açıklama eklenmiş durumda. (I2c0b0, b/263427111)
Hata Düzeltmeleri
- Dinamik Parça Gezinme kullanılırken gezinmeye çalışıldığında yaşanan kilitlenme sorunu düzeltildi. (I3ee29, b/268360479)
- Sistemin geri düğmesiyle başka bir parçaya gidildiğinde alt çubuğun doğru seçilen öğeye güncellenmemesi hatası düzeltildi (If559f, b/269044426).
Bilinen Sorunlar
- Parçalarla gezinme kullanılırken
Animation
API'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
BottomNavigation
ile gezinilirken birden fazla giriş içeren bir geri yığını geri yüklemeye çalışırsanızBottomMenuItem
doğru şekilde güncellenmez. (b/270447657) - Parçalarla gezinme kullanılırken durum geri yüklendikten sonra parçası
DESTROYED
olduğundaNavBackStackEntry
Lifecycle
DESTROYED
olmaz . (b/270610768)
Sürüm 2.6.0-alpha05
8 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha05
iptal edilir. 2.6.0-alpha05 sürümü şu commit'leri içerir.
Yeni Özellikler
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
artık 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)FragmentNavigator
artık gezinirken ve pop-up gösterirken geçiş API'lerini kullanıyorNavBackStackEntries
. Bu,NavBackStackEntry
Lifecycle
karakterinin artık sonLifecycle.State
hamlesini yapmadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir. (I3cb19, b/238686802)DialogFragmentNavigator
artık gezinirken ve pop-up gösterirken geçiş API'lerini kullanıyorNavBackStackEntries
. Bu,NavBackStackEntry
Lifecycle
öğesinin artıkDESTROYED
öğesine geçmeden önceDialogFragment
Lifecycle
öğesininDESTROYED
öğesine geçmesini bekleyeceği anlamına gelir. (I53ee5, b/261213893)
API Değişiklikleri
NavigatorState
,Navigator
'lerinNavBackStackEntries
'leri araLifecycle.State
'lere taşımasına olanak tanıyanprepareForTransition
API'sini sunmaktadır. (I42c21, b/238686802)- Artık
NavGraphNavigator
veyaComposeNavigator
ile ilişkili geri yığınabackstack
mülkü üzerinden erişebilirsiniz.ComposeNavigator
artıkonTransitionComplete()
geri çağırmasını da kullanıma sunarak bir gezinme veyapopBackStack
işlemi gerçekleştirmiş olan birNavBackStackEntry
öğesini tamamlandı olarak işaretlemenizi sağlar. (I02062, I718db, b/257519195)
Hata Düzeltmeleri
- Giriş zaten işleniyorsa
push/popWithTransition
API'leri kullanılırken gezinme durumu artık işlem yapmayacak. (Iadbfa, b/261213893) - İç içe yerleştirilmiş bir
NavGraph
ilelaunchSingleTop
kullanı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) - Gezinme özelliği,
launchSingleTop
işareti doğru olarak ayarlanmış şekilde aynı hedefe giderken 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ıldığında 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 (parseValue
aracılığıyla) tamamenNavType
sınıfında kapsanabilir.StringType
artık bu yöntemi geçersiz kılarak belirtilenString
üzerindeUri.encode
çağrısı yapıyor. (Ie5213, b/247637434)NavigationUI
artık seçilen birMenuItem
üzerinden gezinemediğinde günlükler sunuyor. (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)
- Derin bağlantı oluşturma işlemiyle varsayılan bağımsız değişkenleri boş olan bir hedefe gidildikten sonra yukarı gidildiğinde oluşan kilitlenme sorunu düzeltildi. (I51c24, b/243183636)
Bağımlılık Güncellemesi
- Gezinme özelliğinin dinamik özellik modülleri desteği artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlı. (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ünde şu commit'ler yer alıyor.
Hata Düzeltmeleri
- Gezinme
2.5.3
bölümünden:NavHost
,Crossfade
için oluşturulacak bir hedef olmadığında artıkNoSuchElementException
'e neden olmayacak. Artık yalnızca kompozisyon atlanacak. (Ieb46e, b/253299416) - Navigation
2.5.3
: Bir hedef arka yığından çıkarıldığında kaydedilen Compose durumunun (ör.rememberSaveable
kullanı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ünde şu commit'ler yer alıyor.
Davranış Değişiklikleri
- Bir gezinme grafiğinin kimliğini
AppBarConfiguration
'ya iletirken (ör.Menu
aracılığıyla)NavigationUI
artı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 yeniisTopLevelDestination
işlevi aracılığıyla kendi kodunuzda da kullanılabilir. (Ie936e, b/238496771)
Hata Düzeltmeleri
navigation:navigation-fragment
bileşeni artık1.5.2
sürümüne bağlıdır. (I00ba4)- Bir
FloatingWindow
hedefine (ör. iletişim kutusu) 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
'dakisetupWithNavController
entegrasyonları artıkandroid:label
'nızda bulunanReferenceType
bağımsız değişkenleri içinR.string
değerlerini otomatik olarak oluşturulan kaynak tamsayısını çıkış olarak vermek yerine String değerlerine ayrıştıracak. (I5f803, b/167959935) NavDeepLink
artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek olan tekrarlanan sorgu parametreleri desteklenebiliyor.NavType
artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor. (Id68c3, b/209977108)- Bir gezinme XML dosyasının etkinlik öğesindeki
app:data
veapp:dataPattern
özelliklerinde yer tutucu olarak tam${applicationId}
dizesi kullanıldığında, yer tutucu genişletme sırasında bağlamınpackageName
ile otomatik olarak doldurulur. (Iaabde, b/234223561) navDeepLink
Kotlin DSL'si kullanılarak boş birNavDeepLink
oluşturulmaya çalışıldığında artık derin bağlantının geçerli olması için uri, işlem ve/veya mimetype'e ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek. (I08d2f, b/154038883)
API Değişiklikleri
android:label="{arg}"
biçiminde bağımsız değişkenlere sahip dinamik etiketleri String olarak ayrıştırmak için yeniNavDestination
uzantı işlevi eklendi.ReferenceType
değerlerini dize değerlerine ayrıştırarakR.string
bağımsız değişkenlerini destekler. (I07d89, b/236269380)
Davranış Değişiklikleri
- NavBackStackEntry'nin
arguments
veOnDestinationChangedListener
'ye iletilenarguments
artık yalnızca hedefe gittiğinizde oluşturulan değişmez bağımsız değişkenlerin bir kopyasıdır. Bu nedenle, bu paketlerde yapılan değişiklikler,arguments
veya diğerOnDestinationChangedListener
örneklerine sonraki erişimlerde yansıtılmaz. (I676f5)
Hata Düzeltmeleri
- Gezinme
2.5.2
: Dinamik gezinme artık diğer modüllerden etkinlik hedeflerini yüklemeyi dener ve ardından bu hedeflere gider. (Ia2c16, b/240292838) - Gezinme
2.5.2
: Gezinme, aynı hedefe gidiplaunchSingleTop
iş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 gidildiğinde oluşanIllegalStateException
düzeltildi. (I9f7cb, b/243778589)
Sürüm 2.5
Sürüm 2.5.3
24 Ekim 2022
androidx.navigation:navigation-*:2.5.3
iptal edilir. 2.5.3 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NavHost
,Crossfade
için oluşturulacak hedef olmadığında artıkNoSuchElementException
hatasına neden olmayacak. Artık yalnızca kompozisyon atlanacak. (Ieb46e, b/253299416)- Bir hedef arka yığından çıkarıldığında, kaydedilen Compose durumunun (ör.
rememberSaveable
kullanımları) unutulup kaldırılmamasına neden olan sorun düzeltildi. (I64949)
Sürüm 2.5.2
7 Eylül 2022
androidx.navigation:navigation-*:2.5.2
iptal edilir. 2.5.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Dinamik gezinme artık diğer modüllerdeki etkinlik hedeflerini, bu hedeflere gitmeden önce düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838)
- Gezinme, aynı hedefe gidip
launchSingleTop
işaretini doğru olarak ayarlarken artık Fragment örneğini düzgün şekilde değiştirecek. (I5a2f1, b/237374580) - Yeni açılan başlangıç hedefiyle üst öğeyi paylaşan, iki kez iç içe yerleştirilmiş bir grafiğe gidildiğinde oluşan
IllegalStateException
sorunu düzeltildi. (I9f7cb, b/243778589)
Bağımlılık Güncellemesi
- Gezinme
2.5.2
artı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
,Bundle
içinde kaydedilen özel bağımsız değişken türleri kullanılırken oluşturulan sınıflarda artık kullanımdan kaldırma uyarılarına neden olmayacak. (Id86ed, b/237725966)
Bağımlılık Güncellemeleri
- 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:
Navigation
artık Lifecycle2.5.0
'ınCreationExtras
aracılığıyla durum bilgisi içermeyenViewModelProvider.Factory
sağlayabilir.
Navigation SafeArgs
Navigation Safe Args
,Android Gradle Plugin
bağımlılığını7.0.4
'ye dayanacak şekilde yükseltti ve7.0
'den önceki AGP sürümleriyle uyumluluğu bıraktı.- applicationId yerine kullanılacak ad alanı build.gradle özelliği için destek eklendi.
Diğer değişiklikler
visibleEntries
API artık deneysel değildir 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
NavHost
kullanılırken alt hedefler arasında hızlı geçiş yapıldığında kilitlenmeye neden olan sorun düzeltildi. (I3979a, b/234054916) Navigation SafeArgs
,applicationIdSuffix
ve ad alanı kullanılırken artık kilitlenmeyecek. Bu durum,applicationId
bulunmadığında veyaapplicationId
ile ad alanı farklı olduğunda da geçerli olacak. (I754b1, b/233119646)NavArgument
artık bağımsız değişkenin dahili 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.xml
dosyanızda<deeplink>
öğelerini<activity>
öğelerinin içine yerleştirmeye karşı uyarı veren yeni bir lint kuralı eklendi.(Ic15a5, b/178403185)
Hata Düzeltmeleri
NavHost
veDialogHost
'deki 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
ArgumentsGenerationTask
içindePathSensitivity.RELATIVE
kullanıyor. Bu, önbellek girişinin artık bir CI derlemesinden yerel bir derlemeye yeniden kullanılabileceği anlamına gelir. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetector
lint kuralı,getBackStackEntry()
çağrısı etrafındakiremember
çağrısının da anahtar olarakNavBackStackEntry
nesnesini 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
DialogNavigator
artıkdismiss()
araması yaparkenpopWithTransition
kullanıyor. Bu düzeltme,dialog
hedefindeViewModel
kullanıldığında ortaya çıkan ve iletişim kutusunu kapatmak için sistem geri düğmesi kullanıldığında veya iletişim kutusunun dışına dokunarak çıkış yapıldığındaIllegalStateException
hatasına neden olan yarışma koşulunu düzeltir. (Id7376, b/226552301)
Bağımlılık Güncellemeleri
- Gezinme artık Yaşam Döngüsü
2.5.0-beta01
'ne bağlı. Birden fazla geri yığın kullanılırken birNavHost
öğesi birincil olmayan bir alt gezinme sekmesinde başka birNavHost
öğesinin içine yerleştirildiğindeIllegalStateException
düzeltildi.
Sürüm 2.5.0-alpha04
6 Nisan 2022
androidx.navigation:navigation-*:2.5.0-alpha04
iptal edilir. 2.5.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
visibleEntries
artı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ıdır. Bu, iç içe yerleştirilmiş NavHost kullanılırken içtekiNavHost
öğesinin artık düzgün şekilde animasyonla çıkacağı anlamına gelir. (I4ba2b, b/225394514) NavController
tarafından sağlananvisibleEntries
StateFlow
artık mevcut yaşam döngüsü durumu yerine girişin maksimum yaşam döngüsü durumuna göre belirleniyor. Bu,navController
öğesinin ana makine yaşam döngüsü STARTED'ın altına düşse bile görünür girişlerin listesinin aynı kalacağı anlamına gelir. (I9e2a8, b/225394514)SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatılmış olsa bileCreationExtras
kullanımını destekliyor. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)NavDeepLink
artık değeri olmayan tek bir sorgu parametresi içeren URI'leri ayrıştırabilir. (I0efe8, b/148905489)- Boş dizeler artık derin bağlantılarda geçerli bağımsız değişkenler olarak kabul ediliyor. (I70a0d, b/217399862)
- Ad alanları kullanılırken ve
AndroidManifest.xml
mevcut değilkenNavigation Safe Args
artık kilitlenmeyecek. (I17ccf, b/227229815)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.navigation:navigation-*:2.5.0-alpha03
iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
- Artık
CreationExtras
değeriniby navGraphViewModels
işlevine ileterekViewModel
oluşturabilirsiniz. (I29217, b/217618359)
Hata Düzeltmeleri
NavDeepLinks
artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060)CreationExtras
, ViewModel'ler oluşturmak içinNavBackStackEntries
ile kullanıldığında artık doğru şekilde çalışacak. (I69161, b/217617710)- Navigation Safe Args artık AndroidManifest'teki paketin yerine
build.gradle
içinde tanımlanan ad alanının kullanılmasını destekliyor. (I659ef, b/217414933)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.navigation:navigation-*:2.5.0-alpha02
iptal edilir. 2.5.0-alpha02 sürümünde şu commit'ler yer alıyor.
Hata Düzeltmeleri
- Gezinme
2.4.1
: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
NavBackStackEntry
artık Lifecycle2.5.0-alpha01
kapsamı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şturulan birViewModel
öğesine erişmeninIllegalStateException
ile başarısız olmasına neden olan sorun düzeltildi. (I8a14d) NavDeepLink
artı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 eklentisinin 7.0.4 sürümüne bağlıdır. Bu, Navigation Safe Args'ın artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı, ancak Android Gradle eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)
Sürüm 2.4.2
Sürüm 2.4.2
6 Nisan 2022
androidx.navigation:navigation-*:2.4.2
iptal edilir. 2.4.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Navigation
2.5.0-alpha03
'dan geri taşındı:NavDeepLinks
artı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.gradle
iç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.xml
bulunmadığındaNavigation Safe Args
artı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)- İç içe yerleştirilmiş birden fazla
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()
içinden erişildiğindeIllegalStateException
ile başarısız olmasına neden olan sorun düzeltildi. (I8a14d) - Navigation
2.5.0-alpha01
sürümünden geri taşındı:NavDeepLink
Artık bağımsız değişkenler gereksiz yere iki kez kod çözülmüyor. Bu sayede, düzgün ş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 Eklentisi 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 eklentisi 7.1.0 ve sonraki sürümlerle 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 ile yeniden yazıldı. Bu, genel öğeler kullanan sınıfların (ör.
NavType
alt sınıfları) boş değer atanabilirliğini iyileştirdi. Eskiden-ktx
yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı.-ktx
yapay ürünleri yayınlanmaya devam eder ancak tamamen boştur. navigation-fragment
yapısı artık yeniAbstractListDetailFragment
aracılığıyla iki panelli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, bir liste bölmesini (alt sınıfınız tarafından sağlanır) veSlidingPaneLayout
kullanarak bir ayrıntı bölmesini yönetir. Ayrıntı bölmesi, uygulama olarakNavHostFragment
kullanır.NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
her değiştiğinde yayın yapan birFlow
sağ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 listesiniStateFlow
olarak alma olanağı sunuyor. - Artık
NavType
sınıfını genişleterek özel NavType'lar oluşturabilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Navigation Graph Kotlin DSL aracılığıyla) desteklenir. 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.startDestination
kendi başına iç içe yerleştirilmiş birNavGraph
olsa 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 }
NavigationUI
yöntemleri,BottomNavigationView
yerine Material1.4.0
,NavigationBarView
'de kullanıma sunulan üst sınıfı alacak şekilde güncellendi. Bu sayede bu yöntemlerNavigationRailView
ile 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
fromSavedStateHandle()
sınıf için birNavArgs
yöntem oluşturuyor. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Gezinme Rotaları ve Kotlin DSL'si
Navigasyon'un önceki sürümlerinde, her hedef için sabit bir tam sayı kimliği kullanılıyordu. Bu kimlik, hedefi kardeş hedeflerinden benzersiz şekilde tanımlıyor ve doğrudan veya bir işlem aracılığıyla hedefe navigate()
yapmanıza olanak tanıyordu. Bu sistem, ö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 sunuluyor. Rota, bir hedefe giden benzersiz yolu tanımlayan bir String
'dir. Hedef kimliği alan tüm Kotlin DSL yöntemleri artık kullanımdan kaldırıldı ve rota alan eşdeğer bir API ile değiştirildi.
Her rota, hedefi tanımlayan bir Uri
öğesinin "yol" kısmı olarak ele alınmalıdır. Örneğin: home
, profile/{userId}
, profile/{userId}/friends
vb. Bir hedef kimliği belirli bir içerikle ilişkilendirildiğinde bu dinamik bağımsız değişkenler, örtülü derin bağlantılarla aynı kurallara uyarak rotanın bir parçası olmalıdır.
Daha önce yalnızca kimlik alan tüm NavController
API'leri artık rota String
alan bir aşırı yüklemeye sahip. navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
bu kapsamdadır.
Bu durumun API ile ilgili bazı sonuçları oldu:
- Kotlin DSL'deki
popUpTo
Kotlin özelliğinin desteği sonlandırıldı. Bunun yerinepopUpToId
kullanılabilir. 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ı kuralları izler. Bu sayede, herhangi bir iç içe yerleştirilmiş grafikteki herhangi bir hedefe doğrudan gidebilirsiniz. Bu rotaların, her hedefe harici olarak görünür bir derin bağlantı eklemeden çok modüllü projelerde kullanılabilmesini sağlar.
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:
NavHost
vedialog
hedeflerini kullanarak Kotlin DSL aracılığıyla gezinme grafiğinizi oluşturmanıza olanak tanıyan birNavHost
composable'dır. Ayrıca Accompanist Navigation Material'daki gibi isteğe bağlı Navigator'lar da desteklenir.composable
- 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
Lifecycle
kapsamı. Her hedef yalnızca giriş geçişleri tamamlandığındaRESUMED
durumuna ulaşır ve çıkış geçişleri başladığında hemenSTARTED
durumuna düşer. Böylece,Lifecycle
RESUMED
olduğunda yalnızca birnavigate
çağrısı tetikleyerek tümIllegalStateException
ve çoklu dokunma sorunlarını önleyebilirsiniz. ViewModel
kapsamı (hedef düzeyinde Lifecycle ViewModel Compose2.4.0
'unviewModel()
API'si veya Hilt Navigation Compose1.0.0
'unhiltViewModel()
aracılığıyla yapılandırma değişikliklerinden ve geri yığında olmaktan etkilenmeyen bir kapsam sağlar (Composable içeriğiniz başka bir şekilde kaldırıldığında) ve ViewModel'inonCleared()
içinde,NavBackStackEntry
ile ilişkili durumun kalıcı olarak kaldırıldığını ve temizlendiğini belirten bir sinyal sağlar).rememberSaveable
durumunun hedef düzeyinde kapsamı belirlenir. Böylece, bir hedefe döndüğünüzde tüm birleştirilebilir durum otomatik olarak kaydedilir ve geri yüklenir.- İşlem sonlandırılıp yeniden oluşturulduktan sonra
NavController
ve hedefinin durumunu 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
öğesiniNavHost
dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamak için belirli yardımcılar oluşturun.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Daha fazla bilgi için Compose Navigation kılavuzuna bakın.
Birden fazla geri yığın
NavController, hedeflerin geri yığınını yönetmekten, navigate()
ile hedeflere gittiğinizde hedefleri geri yığına eklemekten ve popBackStack()
işlevini çağırdığınızda veya sistemin geri düğmesini tetiklediğinizde hedefleri geri yığından 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şiklik kapsamında, NavigationUI
yöntemleri onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
artık açılan hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek kodda herhangi bir değişiklik 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:
Navigasyon XML'sinde artık
<action>
öğesi,app:popUpTo
aracılığıyla açılan tüm hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkili durumu geri yüklemek içinapp:popUpToSaveState
veapp:restoreState
boolean özelliklerini kullanabilir:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL'de,popUpTo
oluşturucusunarestoreState
boole özelliğini vesaveState
boole özelliğini ekleyebilirsiniz:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
NavOptions.Builder
aracılığıyla manuel olarak birNavOptions
nesnesi oluştururken ek birsaveState
parametresi alansetRestoreState()
ve yeni aşırı yüklemesetPopUpTo()
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 birsaveState
parametresi içerebilir.clearBackStack()
yöntemini kullanarakpopBackStack()
veyapopUpToSaveState
ile kaydedilen tüm durumları temizleyebilirsiniz.
Her durumda, NavController
, kapsamı belirlenmiş ViewModel
örnekleri de dahil olmak üzere her bir NavBackStackEntry
'nin durumunu kaydeder ve geri yükler. Navigator
API'leri, her Navigator
'nin kendi durumunu kaydetmesini ve geri yüklemesini destekleyecek şekilde güncellendi.
Davranış değişiklikleri
NavDeepLinkBuilder
artıkPendingIntent
PendingIntent.FLAG_IMMUTABLE
değerinicreatePendingIntent()
tarafından döndürülen değere ekliyor. Bu sayede, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışması sağlanıyor.- Navigasyon artık Lifecycle
2.3.1
'a bağlıdır. AyrıcasetGraph()
,popBackStack()
,navigateUp()
venavigate()
yöntemleri artıkNavBackStackEntry
Lifecycle
'ı güncelleyen yöntemler olarak@MainThread
ile işaretleniyor. Böylece Navigasyon, Lifecycle2.3.0
'da kullanıma sunulan ana iş parçacığı zorunluluğuyla uyumlu hale geliyor. - Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar)
Uri
içinde bulunduğunu doğruluyor. NavDeepLink
Ayrıştırılan bağımsız değişkenler artık diyez işaretlerini, yol segmentleri arasında ayırıcı olarak soru işaretleriyle aynı şekilde değerlendiriyor. Böylece, bir bağımsız değişkenin diyez işareti boyunca yayılması önleniyor.- Kotlin kodu, Safe Args'tan oluşturulan işlemleri oluştururken 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,
applicationIdTextResource
kullanma uyarısını artık almazsınız.
Bilinen sorunlar
- Navigation
2.5.0-alpha01
'da düzeltildi:onCreate()
adlı Fragment'tanby navGraphViewModels()
aracılığıyla oluşturulanViewModel
adlı öğeye erişilirkenIllegalStateException
hatası oluşuyordu. (b/213504272) - Navigation
2.5.0-alpha01
'da düzeltildi: Safe Args 2.4.0, Android Gradle eklentisi 7.1.0 ve sonraki sürümlerle 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
NavDeepLink
ayrıştırılmış bağımsız değişkenleri, artık bağımsız değişkenler arasında ayırıcı olarak soru işaretleriyle aynı şekilde değerlendiriyor. (I21309, b/180042703)
Hata Düzeltmeleri
- Derin bağlantılar artık yer tutucunun adıyla aynı değere sahip bağımsız değişkenleri yoksaymayacak. (If8017, b/207389470)
NavController
geri yüklendikten sonra geçişler kullanılarak iç içe yerleştirilmiş bir hedef açıldığındaNavController
artık kilitlenmeyecek. (I0f7c9, b/205021623)- Geçersiz bir
startDestination
kullanılırken hata mesajı, varsa başlangıç hedefinin rotasını varsayılan olarak gösterecek. (I86b9d, b/208041894)
Navigation Compose'daki hata düzeltmeleri
- Alt gezinme menüsü öğeleri kullanılarak başlangıç hedefi ile başka bir hedef arasında hızlı geçiş yapıldığında ortaya çıkabilecek kilitlenme sorunu düzeltildi. (Ic8976, b/208887901)
- Yapılandırma değişikliklerinden veya işlemin sonlandırılmasından sonra iletişim kutusu hedefleri artık ekranın üst kısmında düzgün şekilde geri yükleniyor. (I4c0dc, b/207386169)
- Bir iletişim kutusunun
NavBackStackEntry
öğesindenViewModel
almaya çalışıldığında iletişim kutusu kapatıldığında işlemin başarısız olmasına neden olan sorun düzeltildi. (I6b96d, b/206465487) - Navigation Compose'un
NavHost
ileactivity
hedefleri kullanılırken sonsuz yeniden oluşturmaya neden olan sorun düzeltildi. (I8f64c) - Navigation Compose'da, yapılandırma değişikliği veya işlem sonlandırma sonrasında eski etkinliğin referansını tutan bir bellek sızıntısı 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ışılırken artık kilitlenmiyor. (I618e8, b/207315994)- Güvenli bağımsız değişkenlerde, boole dizilerinin
null
değerine sahip olmasına izin vermeyen hata düzeltildi. (I8c396, b/174787525)
Sürüm 2.4.0-beta02
3 Kasım 2021
androidx.navigation:navigation-*:2.4.0-beta02
iptal edilir. 2.4.0-beta02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Hem açık hem de örtülü derin bağlantıların işlenmesi, artık başka bir grafiğe giderken
saveState
işaretini otomatik olarak ekleyerekNavigationUI.setupWithNavController
gibi kodların ve birden fazla geri yığın kullanan kodların beklendiği gibi çalışmasını sağlar. (Ic8807)
Davranış Değişiklikleri
- Derin bağlantı kalıpları artık şişirme sırasında değil, NavDeepLink'te geç derleniyor. Bu, derin bağlantılar içeren gezinme grafiklerinin şişirilme süresini iyileştirmelidir. (b8d257, b/184149935)
Hata Düzeltmeleri
NavHost
doğrudan etkinliğ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
DialogFragment
hedefinin arka 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
üzerindekionNavDestinationSelected
API'sinin, söz konusu gezinme grafiğine aslındanavigate()
yapmamış olsanız biletrue
döndürmesine neden olan sorun düzeltildi. Artık yalnızca hedefle ilişkiliMenuItem
öğesini seçmek içinsetupWithNavController
tarafından dahili olarak kullanılan mantığın aynısı kullanılıyor. Bu işlem, hedefinhierarchy
kullanılarak yapılıyor. (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
visibleEntries
API'si 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
'lere eklenirken artık boş değer atanabilirNavDeepLink
bağı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 gezinirken ve alt menü öğelerini yeniden seçerken tüm hedefleri düzgün şekilde yeniden oluşturacağı anlamına gelir. (I1b351, b/196997433)
AbstractListDetailFragment
ile ilgili bir sorun düzeltildi. Bu sorun,onCreateListPaneView()
tarafından döndürülen liste bölmesindekilayout_width
velayout_weight
özelliklerinin yanlış işlenmesine veya yoksayılmasına neden oluyordu. (f5fbf3)- İletişim kutusu hedeflerinin görsel durumu artık
DialogFragmentNavigator
'nın durumuyla doğru şekilde senkronize kalıyor. Bu,dismiss()
API'sininDialogFragment
için eşzamansız olarak manuel şekilde çağrılmasının, artık kapatılan iletişim kutusunun üzerindeki tüm iletişim kutusu hedeflerini düzgün şekilde temizlediği anlamına gelir. Bu durum, iletişim kutunuzu kapatmak içinpopUpTo
veyapopBackStack()
kullandığınız durumları etkilemez. (I77ba2) AbstractAppBarOnDestinationChangedListener
artı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
visibleEntries
StateFlow (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, Refakatçi Gezinme Materyali gibi isteğe bağlı gezinme araçlarını daha iyi desteklemek için döndürülenNavController
öğesine eklenecek. (I4619e)
Hata Düzeltmeleri
- Etkinlik yeniden oluşturulduğunda dinamik gezinme artık kilitlenmeyecek. (Ifa6a3, b/197942869)
- Yalnızca
NavHost
içeren bir composable hedefe geri döndükten sonra oluşan sistem geri düğmesiyle ilgili sorun düzeltildi. (3ed148, b/195668143) - SafeArgs artık
fromBundle()
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ünde şu commit'ler yer alıyor.
Yeni Özellikler
- Artık
clearBackStack()
yöntemini kullanarakpopBackStack()
veyapopUpToSaveState
ile 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
navArgument
Kotlin DSL işlevi artıknavigation-compose
yerinenavigation-common
'nin bir parçasıdır. Bu işlevi kullanmaya devam etmek için içe aktarma işlemlerini güncellemeniz gerekir. (I1d095)
Davranış Değişiklikleri
- Safe Args, artık bağımsız değiş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
DESTROYED
olduğundaDESTROYED
olur. (I86552, b/198741720) - Boş değer atanabilir
NavDeepLink
bağımsız değişkenleri artık varsayılan değer gerektirmiyor. (Ia14ef, b/198689811) - Yeni bir grafikle
setGraph()
çağrıldığında, artık geri yığını açma davranışına ek olarak kaydedilmiş geri yığınlar da temizlenecek. (I97f96) launchSingleTop
kullanılırkenOnDestinationChangedListener
örneklerinin vecurrentBackStackEntryFlow
'nin bildirim almamasına neden olan sorun 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
NavType
sınıfını genişleterek özel NavType'lar oluşturabilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Navigation Graph Kotlin DSL aracılığıyla) desteklenir. (I78440, b/196871885)
Davranış Değişiklikleri
- Kotlin kodu, Safe Args'tan oluşturulan işlemleri oluştururken artık varsayılan değ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)
Uri
içinde bulunduğunu doğruluyor. (#204, b/185527157)
Hata Düzeltmeleri
getBackStackEntry
vepreviousBackStackEntry
'ninremember()
ile birlikte composable() içinde kullanılması artık arka 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=true
kullanılırken artık düzgün şekilde yeniden oluşturuluyor. (Iebd69, b/186392337) - 13 veya 29 hedef içeren bir grafikle
setGraph
aranırken artıkArrayIndexOutOfBoundsException
olmayacak. (I1a9f1, b/195171984) - SafeArgs Java oluşturucu, Args sınıfları oluşturulurken artık lint uyarılarına neden olmamalıdır. (I1a666, b/185843837)
Harici Katkı (External Contribution)
- ospixd, derin bağlantıların, gerekli tüm bağımsız değişkenlerin (varsayılan değerleri olmayanlar)
Uri
içinde bulunduğunu doğrulamasını sağladığı için teşekkür ederiz. (#204, b/185527157)
Sürüm 2.4.0-alpha07
18 Ağustos 2021
androidx.navigation:navigation-*:2.4.0-alpha07
iptal edilir. 2.4.0-alpha07 sürümünde şu commit'ler yer alıyor.
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)
NavHost
artıkNavBackStackEntry
'lerinLifecycle.State
değişikliklerini gözlemliyor. Bu nedenle, bir parçadaNavHost
kullanıldığında artık boş ekran yerine yaşam döngüsü değiştikçe düzgün şekilde yeniden oluşturulacak. (I4eb85, b/195864489)- Bir
DialogFragment
kapatıldığında, etkinliğiniz yeniden oluşturulduktan sonra (ör. yapılandırma değişikliğinden sonra)NavController
durumunun 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
toSavedStateHandle
yöntemini otomatik olarak oluşturuyor. Bu yöntem,ViewModel
kodunuzu test etmek için kullanılabilir. (If1e2d, b/193353880)
Sürüm 2.4.0-alpha06
4 Ağustos 2021
androidx.navigation:navigation-*:2.4.0-alpha06
iptal edilir. 2.4.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
AbstractListDetailFragment
ü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'un
NavHost
işlevi artık grafiği ilk kompozisyonun bir parçası olarak ayarlıyor. (Ieb7be)
Hata Düzeltmeleri
- Gezinme grafiğinin son hedefinin çıkarılması artık
ClassCastException
oluşturmuyor. (If0543, b/172112072, b/194301889) Uri
olmadan derin bağlantı eklenip bir rota veya derin bağlantı üzerinden gezinildiğinde oluşanNullPointerException
düzeltildi. (938a0c, b/193805425)- Navigation Compose'da, derin bağlantılı
NavBackStackEntry
öğesininRESUMED
durumuna ulaşmamasına neden olan sorun düzeltildi. (I192c5) - Bir iletişim kutusu hedefinin açılmasının NavController'ın sistem geri düğmesi işleme özelliğini güncellememesine 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ş kullanıyor. (I07049, b/172112072) - Artık bir NavHost'un grafiğinde değişiklik yapabilirsiniz. Aynı startDestination ve grafikteki hedeflere sahip grafikler eşit kabul edilir ve
NavController
geri yığını temizlenmez. (I0b8db, b/175392262)
Hata Düzeltmeleri
NoSuchElementException
düzeltildi.popBackStack()
,LifecycleObserver
içindenNavBackStackEntry
'a bağlıyken arandığında, NavController'ın durumunda yeniden girişli güncellemeler nedeniyle bu sorun oluşuyordu. (I64621)AbstractListDetailFragment
artıkAbstractListDetailFragment
kullanılmadığında APK'nızdan tamamen kaldırılmasına olanak tanıyor.SlidingPaneLayout
(I611ad)NavGraph
veNavDestination
artı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-fragment
yapısı artık yeniAbstractListDetailFragment
aracılığıyla iki panelli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, bir liste bölmesini (alt sınıfınız tarafından sağlanır) veSlidingPaneLayout
kullanarak bir ayrıntı bölmesini yönetir. Ayrıntı bölmesi, uygulama olarakNavHostFragment
kullanır. (Iac4be, b/191276636)navigation-compose
öğesininNavHost
, artıkcomposable
hedeflere ek olarakdialog
hedefi de destekliyor. Bu iletişim hedefi, mevcutcomposable
hedefinin üzerinde kayan bir ComposableDialog
içinde gösterilir. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
API Değişiklikleri
NavigatorState
içindekiadd
işlevi,push
olarak yeniden adlandırıldı.add()
için yapılan tüm mevcut çağrıların push() olarak değiştirilmesi gerekir. (Ie89fc, b/172112072)- Özel
Navigator
örnekleri artıkNavigatorState
üzerindepushWithTransaction
vepopWithTransition
API'lerini kullanarak bir hedefi eşzamansız olarak gönderebilir veya açabilir. Bu API'lerin henüz dahil edilen gezinme sistemlerinden herhangi biri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)
Davranış Değişiklikleri
NavDeepLinkBuilder
artıkPendingIntent
PendingIntent.FLAG_IMMUTABLE
değerinicreatePendingIntent()
tarafından döndürülen değere ekliyor. Bu sayede, Android 12 hedeflenirken bu API'nin beklendiği gibi çalışması sağlanıyor. (If8c52)
Hata Düzeltmeleri
<include-dynamic>
ile ilgili bir sorun düzeltildi. Bu sorunda, grafiğe iletilen bağımsız değişkenler, dinamik olarak dahil edilen grafiğe doğru şekilde iletilmiyordu. (I3e115)NullPointerException
,@null
varsayılan değerine sahip birstring[]
bağımsız değişkeniyle bir hedefe giderken düzeltildi. (I1fbe8)@Navigator.Name
için ProGuard kuralları ekleyerek R8 3.1 tam modu kullanılırken ortaya çıkan sorunları düzeltin. (I2add9, b/191654433)- SafeArgs, uygulamanızı
Kotlin
sürümünden önceki1.5.0
sürümlerle oluştururken artık başarısız olmayacak. (Icd1ff, b/190739257)
Sürüm 2.4.0-alpha03
16 Haziran 2021
androidx.navigation:navigation-*:2.4.0-alpha03
iptal edilir. 2.4.0-alpha03 sürümünde şu commit'ler yer alıyor.
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-alpha01
bölümünde ortaya çıkan bir gerileme düzeltildi. Bu gerileme 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
IllegalStateException
çağrılırkenpopBackStack()
oluşmasına neden olan sorun düzeltildi. (I2a330, b/190265699) by navArgs()
için ProGuard kuralları artıknavigation-common
veya 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()
çağıran birOnDestinationChangedListener
artık doğru şekilde, 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.0
kullanı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ünde bu commit'ler yer alıyor.
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, uygulamalar desteklenmeyen API'lerden yavaş yavaş uzaklaşabilir. (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 birNavDestination
işlevidir.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
BottomNavigationView
alanını alan NavigationUI yöntemleri, bunun yerine Material1.4.0
,NavigationBarView
'da kullanıma sunulan üst sınıfını alacak şekilde güncellendi. Bu sayede bu yöntemlerNavigationRailView
ile kullanılabilir. (Ib0b36, b/182938895)Bir
<action>
öğesi XML üzerinden genişletilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"
söz dizimi kullanılarak temanızdan çekilen özellikleri kullanabilir. (I07bc1, b/178291654)
API Değişiklikleri
- Kimlik kullanan Kotlin DSL oluşturucularının desteği sonlandırıldı ve rotaları kullanan oluşturucularla değiştirilmesi gerekiyor (I85b42, b/188816479) (I9f58f, b/188816479)
Hata Düzeltmeleri
DialogFragmentNavigator
artıkNavController
'ı bilgilendirmek içinNavigatorState.pop()
API'sini kullanıyor. Bu API, sistemin geri düğmesine basılarak veya iletişim kutusunun dışına tıklanarak kapatıldığındaNavController
durumunun her zaman Navigator'ın durumuyla senkronize olmasını sağlıyor. (I2ead9)Gezinme,
onDestinationChanged
geri çağırma işleviyleOnDestinationChangedListeners
listesi değiştirilirken artıkConcurrentModificationException
vermiyor. (Ib1707, b/188860458)Safe Args, Kotlin'de yön özellikleri oluşturulmaya çalışıldığında artık kilitlenmiyor. (Id2416, b/188564435)
NavDestination üzerindeki setId yöntemi artık
@IdRes
ile düzgün şekilde açıklama eklenmiş durumda. Bu nedenle, yalnızca kaynak kimliklerini kabul ediyor. (I69b80)findNode
işlevinin int parametresi artıkresid
yerineresId
. (I7711d)
Bağımlılık Güncellemesi
- Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda,
applicationIdTextResource
kullanma uyarısını artık almazsınız. (I6d67b, b/172824579)
Sürüm 2.4.0-alpha01
18 Mayıs 2021
androidx.navigation:navigation-*:2.4.0-alpha01
iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
her değiştiğinde yayın yapan birFlow
sağlar. Bu akış,OnDestinationChangedListener
öğesinin manuel olarak yönetilmesine alternatif olarak kullanılabilir. (I19c4a, #89, b/163947280)
Birden fazla geri yığın
NavController, hedeflerin geri yığınını yönetmekten, navigate()
ile hedeflere gittiğinizde hedefleri geri yığına eklemekten ve popBackStack()
işlevini çağırdığınızda veya sistemin geri düğmesini tetiklediğinizde hedefleri geri yığından kaldırmaktan sorumludur. Geri yığını kaydetme ve geri yüklemeyi desteklemek için mevcut NavOptions
sınıfı ve gezinme grafiği XML'sindeki <action>
girişlerine entegrasyon genişletildi. (b/80029773)
Bu değişiklik kapsamında, NavigationUI
yöntemleri onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
artık açılan hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek kodda herhangi bir değişiklik 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:
Navigasyon XML'sinde artık
<action>
öğesi,app:popUpTo
aracılığıyla açılan tüm hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkili durumu geri yüklemek içinapp:popUpToSaveState
veapp:restoreState
boolean özelliklerini kullanabilir:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL'de,popUpTo
oluşturucusunarestoreState
boole özelliğini vesaveState
boole özelliğini ekleyebilirsiniz:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
NavOptions.Builder
aracılığıyla manuel olarak birNavOptions
nesnesi oluştururken ek birsaveState
parametresi alansetRestoreState()
ve yeni aşırı yüklemesetPopUpTo()
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 birsaveState
parametresi içerebilir.
Her durumda, NavController
, kapsamı belirlenmiş ViewModel
örnekleri de dahil olmak üzere her bir NavBackStackEntry
'nin durumunu kaydeder ve geri yükler. Navigator
API'leri, her Navigator
'nin kendi durumunu kaydetmesini ve geri yüklemesini destekleyecek şekilde güncellendi.
Navigation Compose'da composable
hedefleri için kullanılan ComposeNavigator
ve 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
. navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
bu kapsamdadır.
Bu durumun API ile ilgili bazı sonuçları oldu:
- Kotlin DSL'deki
popUpTo
kotlin özelliğinin desteği sonlandırıldı. Bunun yerinepopUpToId
kullanılmalıdır. (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
sürümüne 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şkeni, NavDestination
üzerinde route
özelliğiyle değiştirildi. Bu sayede navBackStackEntry.destination.route
'ü doğrudan arayabilirsiniz.
API Değişiklikleri
- Tüm Navigation yapıları Kotlin ile yeniden yazıldı. Bu, genel öğeler kullanan sınıfların (ör.
NavType
alt sınıfları) boş değer atanabilirliğini iyileştirdi. Eskiden-ktx
yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılara taşındı.-ktx
yapay ürünleri yayınlanmaya devam eder ancak tamamen boştur. (b/184292145) NavDeepLinkBuilder
artık oluşturulan geri yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)DynamicNavHostFragment
için fabrika işlevleri ekleme (Icd515, b/175222619)NavBackStackEntry
benzersiz kimliği artık herkese açık API'sinin bir parçası olarak kullanıma sunuluyor. (Ie033a)name
veargument
alanları ileNamedNavArgument
'nin yapı bozma işlevleri artık herkese açık. (#174, b/181320559)- İlgili beste yerellerine
NavBackStackEntry
sağlayan yeni birNavBackStackEntry#provideToCompositionLocals
uzantısı kullanıma sunuldu. (#175, b/187229439)
Safe Args
Safe Args artık her
fromSavedStateHandle()
sınıf için birNavArgs
yöntem 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
1.8.0
'e bağlı olacak şekilde güncellendi. (#172, b/183990444)
Davranış Değişiklikleri
- Navigasyon artık Lifecycle
2.3.1
'a bağlıdır. AyrıcasetGraph()
,popBackStack()
,navigateUp()
venavigate()
yöntemleri artıkNavBackStackEntry
Lifecycle
'ı güncelleyen yöntemler olarak@MainThread
ile işaretleniyor. Böylece Navigasyon, Lifecycle2.3.0
'da kullanıma sunulan ana iş parçacığı zorunluluğuyla uyumlu hale geliyor. (b/171125856) - Derin bağlantılardan Enum bağımsız değişkenlerinin ayrıştırılması artık büyük/küçük harfe duyarlı değildir. Bu sayede, enum'ın değeri
RED
olsa bilehttp://www.example.com/red
gibi bir derin bağlantı,www.example.com/{color}
derin bağlantısıyla eşleşebilir. (#152, b/135857840)
Oluşturma Uyumluluğu
androidx.navigation:navigation-compose:2.4.0-alpha01
yalnızca1.0.0-beta07
ve sonraki Compose 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ılardan öncelikli olmasına neden olan sorun düzeltildi. (#153, b/184072811)
NavHostFragment
artık varsayılanDialogFragmentNavigator
ile 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#addNavigator
işlevinin davranışı iyileştirildi. (#176, b/187443146)
Harici Katkılar
NavArgs
sınıfı içinfromSavedStateHandle()
yöntemi oluşturan Safe Args desteğini geliştirdiği için simonschiller'e teşekkür ederiz. (#122, b/136967621)- Derin bağlantılardan Enum bağımsız değişkenlerinin ayrıştırılmasını büyük/küçük harfe duyarsız hale getirdiği için Bradleycorn'a teşekkür ederiz. (#152, b/135857840)
- osipxd'ye, sondaki bağımsız değişken yer tutucularının, tam eşleşen bir soneke sahip derin bağlantılardan öncelikli olmasına neden olan sorunu düzelttiği için teşekkür ederiz. (#153, b/184072811)
- Safe Args'ın KotlinPoet
1.8.0
'e bağlı olacak şekilde güncellenmesi için tatocaster'a teşekkür ederiz. (#172, b/183990444) name
veargument
alanları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#provideToCompositionLocals
uzantısını tanıttığı için jossiwolf'a teşekkür ederiz. Bu uzantı, ilgili beste yerellerineNavBackStackEntry
sağlar. (#175, b/187229439)NavigatorProvider#addNavigator
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. Version 1.0.0-alpha10 contains these commits.
API Değişiklikleri
NavHost
artık hedef composable'ları sarmalayan composable kapsayıcıya aktarılan birModifier
kabul ediyor. (I85aca, b/175125483)
Hata Düzeltmeleri
NavHost
artıkOnBackPressedDispatcherOwner
bulunmadığında bile çalışıyor. Örneğin,NavHost
önizlenirken bu durum geçerlidir. (I7d8b4)- Navigation Compose artık Navigation
2.3.5
'a bağlıdır. Bu sayede,BackHandler
öğesiniNavHost
hedefinde kullanırken yaşanan sorun düzeltilir. (I7e63b, b/182284739)
Sürüm 1.0.0-alpha09
10 Mart 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
iptal edilir. Version 1.0.0-alpha09 contains these commits.
API Değişiklikleri
LocalViewModelStoreOwner.current
artıkViewModelStoreOwner
değerinin mevcut kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürüyor.ViewModelStoreOwner
ViewModelStoreOwner
gerektiren API'ler (ör.viewModel()
veNavHost
)ViewModelStoreOwner
ayarlanmamışsa yine de istisna oluşturur. (Idf39a)
Hata Düzeltmeleri
- Navigation Compose artık Navigation 2.3.4'e bağlıdır. Bu sürümde, grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlamaya çalışmayla ilgili düzeltme yer alır. (I65c24, b/177825470)
Sürüm 1.0.0-alpha08
24 Şubat 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
iptal edilir. Version 1.0.0-alpha08 contains these commits.
Yeni Özellikler
NavHost
artıkLocalSavedStateRegistryOwner
CompositionLocal'ı bu hedefinNavBackStackEntry
ile dolduruyor. Böylece, doğrudanSavedStateRegistry
içine kaydedilen tüm durumlar, hedefle birlikte kaydedilip geri yükleniyor. (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
composable
hedeflerineviewModel()
desteği sağlamak için Lifecycle ViewModel Compose 1.0.0-alpha01'e bağlıdır. (I7a374) NavHost
artıkOnBackPressedDispatcher
almak için Activity-Compose 1.3.0-alpha01'deki yeniLocalOnBackPressedDispatcherOwner
kullanı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şkiliNavBackStackEntry
değ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-alpha09
ile uyumluluk için güncellendi.
Sürüm 1.0.0-alpha03
2 Aralık 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yapılandırma değişikliği veya işlemin sonlandırılıp yeniden oluşturulmasından sonra
popBackStack()
venavigateUp()
simgelerinin çalışmamasına neden olan sorun düzeltildi. (Icea47, b/173281473) - NavHost'unuzdaki iç içe yerleştirilmiş bir grafiğe gitme özelliği artık düzgün şekilde çalışıyor. (I0948d, b/173647694)
Sürüm 1.0.0-alpha02
11 Kasım 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Navigation Compose artık popUpTo ve launchSingleTop işlemlerini kullanmak için NavOptions'ı destekliyor (If96c3, b/171468994)
- Navigation Compose DSL'de iç içe grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rota alan bir gezinme işlevi eklendi. (I1661d)
- startDestination artık NavHost için parametreler listesinde rotadan önce geliyor (Ie620e).
- Artık rotayı NavHost composable'ın dışında 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:
- Navigasyon grafiğinizi Kotlin DSL aracılığıyla oluşturmanıza olanak tanıyan bir
NavHost
composable. - Yaşam döngüsü,
ViewModel
ve hedef düzeyinde hatırlanan durumun kapsamı. - Sistemin geri düğmesiyle otomatik entegrasyon.
- Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere sonuç döndürme desteği.
rememberNavController()
vecurrentBackStackEntryAsState()
içinde, durum yükseltmeye izin vermek veNavController
öğesiniNavHost
dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamak için belirli yardımcılar oluşturun.
Daha fazla bilgi için Compose Navigation kılavuzuna bakın.
Sürüm 2.3.5
Sürüm 2.3.5
7 Nisan 2021
androidx.navigation:navigation-*:2.3.5
iptal edilir. 2.3.5 sürümü şu commit'leri içerir.
Yeni Özellikler
NavDeepLinkRequest
veyaUri
kullanarak gezinirken artıkKEY_DEEP_LINK_INTENT
aracı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
OnBackPressedCallbacks
, LifecycleOwner olarakNavBackStackEntry
ile bir dağıtıcıya eklendiğinde artık Etkinlik Yaşam DöngüsüSTOPPED
, ardındanSTARTED
olduğunda geri tuşuna basma işlemini düzgün şekilde yakalıyor (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.com
hemwww.example.com
hem dewww.Example.com
ile eşleşir. Sorgu parametresi adlarının büyük/küçük harfe duyarlı olmaya devam ettiğini unutmayın. (#144, b/153829033) - Bir hedefte birden ç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 gidildiğinde oluşabilecek bir
NullPointerException
dü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 çekme isteği için teşekkür ederiz
bentrengrove
. (#144, b/153829033)
Sürüm 2.3.4
Sürüm 2.3.4
10 Mart 2021
androidx.navigation:navigation-*:2.3.4
iptal edilir. 2.3.4 sürümü şu commit'leri içerir.
Yeni Özellikler
ReferenceType
bağımsız değişkenleri, artık bir derin bağlantı URI'sinin parçası olarak gönderildiğinde doğru şekilde ayrıştırılabilir. Bu, hem ham tam sayı değerini hem de0x
ile öneklenmiş onaltılık değerleri destekler. (#127, b/179166693)app:argType="float"
içeren bir bağımsız değişken içinandroid:defaultValue
artık tamsayı varsayılan değerlerini destekliyor. Bu sayede0.0
kullanmak yerineandroid:defaultValue="0"
kullanabilirsiniz. (#117, b/173766247)
Hata Düzeltmeleri
- Navigasyon'un dinamik özellik desteği kullanılırken yükleme ilerleme durumunun takılı kalması sorununu düzeltir. (Ib27a7, b/169636207)
- Aynı nesneyle
setViewModelStore
veyasetLifecycleOwner
'u çağırma, artık önceden ayarlanmış bir nesneyle 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
ReferenceType
bağımsız değişkenlerinin artık bir derin bağlantı URI'si kapsamında gönderildiğinde düzgün şekilde ayrıştırılabilmesini sağlayan çekme 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ür ederiz.tatocaster
artık varsayılan tam sayı değerlerini destekliyor. (#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 ve
0
animasyon kaynağı değerine sahip bir etkinliğe gidildiğindeResourceNotFoundException
hatasına neden olan regresyon düzeltildi. (I7aedb, b/176819931)
Sürüm 2.3.2
Sürüm 2.3.2
2 Aralık 2020
androidx.navigation:navigation-*:2.3.2
iptal edilir. 2.3.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
NavigationUI
'da,onNavDestinationSelected
ile<activity>
hedefinin kullanılması durumunda Etkinliğe gidilememesine neden olan gerileme düzeltildi. (I22e34, b/171364502)navigation-dynamic-features-fragment
simgesinin, yeni yüklenen hedefe birden fazla kez gidilmesine neden olan sorun düzeltildi. (aosp/1486056, b/169636207)launchSingleTop
kullanı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
popUpTo
ilenavigate()
kullanıldığında gezinme grafiğinin hemen yok edilip arka yığından kaldırılmamasına neden olan sorun düzeltildi. (I910a3) - Navigation SafeArgs artık Kotlin'in açık API modunu destekleyen KotlinPoet 1.7.2 sürümünü kullanıyor. (I918b5)
NavHostFragment.findNavController(Fragment)
artık Fragment hiyerarşisi ve Fragment'ın görünüm hiyerarşisiyle ilgili mevcut kontrollere ek olarak bir DialogFragment'ın kök dekor görünümünü de kontrol ediyor. Bu sayede,FragmentScenario
veNavigation.setViewNavController()
ile Navigation 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'ye 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ı sarmayacak. (b/168584987)
Bağımlılık Değişiklikleri
navigation-ui
artık DrawerLayout 1.1.1'e bağlıdır. Bu sayedeNavigationUI
,LOCK_MODE_LOCKED_CLOSED
veyaLOCK_MODE_LOCKED_OPEN
kullanılırken bile çekmeceyi açabilir. (b/162253907)- Safe Args artık KotlinPoet 1.6.0'a bağlıdır (aosp/1435911)
- Safe Args artık AGP 4.0.1'e (aosp/1442337) bağlıdır.
Sürüm 2.3.0
Sürüm 2.3.0
24 Haziran 2020
androidx.navigation:navigation-*:2.3.0
iptal edilir. 2.3.0 sürümü şu commit'leri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
- Özellik modülü entegrasyonu:
navigation-dynamic-features-runtime
venavigation-dynamic-features-fragment
yapıtları, özellik modüllerinde tanımlanan hedeflere gitmenize olanak tanır ve gerektiğinde özellik modüllerinin yüklenmesini otomatik olarak gerçekleştirir. Daha fazla bilgi için Özellik modülleriyle gezinme başlıklı makaleyi inceleyin. - Gezinme Testi:
navigation-testing
yapısı, mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra geri yığını doğrulamanıza olanak tanıyan birTestNavHostController
sağlar. Daha fazla bilgi için Test Navigation (Test Gezinme) başlıklı makaleyi inceleyin. - Sonuç döndürme: Geri gezinme yığınındaki her hedefle ilişkili
NavBackStackEntry
, artık belirli bir geri gezinme yığını girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durumu depolamaya uygun birSavedStateHandle
'a erişmenize olanak tanır. Daha fazla bilgi için Sonucu önceki hedefe döndürme başlıklı makaleyi inceleyin. NavigationUI
içinOpenable
desteği:NavigationUI
içindeki tümDrawerLayout
kullanımları, CustomView1.1.0
içinde eklenen ve DrawerLayout1.1.0
içindeDrawerLayout
tarafından uygulanan daha genelOpenable
arayüzüyle değiştirildi.- Derin bağlantılarda işlem ve MIME türü desteği: Derin bağlantı, daha önce kullanılabilen
app:uri
'e ek olarakapp:action
veapp:mimeType
'ü destekleyecek şekilde genişletildi.NavController
artık yeniNavDeepLinkRequest
sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuyla gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest kullanarak gezinme başlıklı makaleye bakın.
Bilinen Sorunlar
- Derin bağlantı işlemleri ve MIME türleri için destek henüz Manifest Birleştirici'de kullanılamamaktadır. Bu çalışma tamamlanana kadar, manifest dosyanızdaki
<nav-graph>
öğesinden oluşturulan<intent-filter>
öğeleri,<data>
öğesinde mime türünüzü veya özel<action>
öğenizi içermez. Manifestinize uygun bir<intent-filter>
öğesini manuel olarak eklemeniz gerekir.
Sürüm 2.3.0-rc01
10 Haziran 2020
androidx.navigation:navigation-*:2.3.0-rc01
iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bağımsız değişken içermeyen bir hedef örneği, bağımsız değişken içeren başka bir örnekle değiştirilirken
NullPointerException
sorunu düzeltildi.singleTop
(b/158006669) NavController
tarafından oluşturulan tümdestination is unknown
istisnaları artıkNavController
'nin durumunu belirlemeye yardımcı olacak ek hata ayıklama bilgilerine sahip. (b/157764916)
Sürüm 2.3.0-beta01
20 Mayıs 2020
androidx.navigation:navigation-*:2.3.0-beta01
yayınlanır. 2.3.0-beta01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- İşlem sonlandırıldıktan sonra
NavBackStackEntry
öğesininLifecycle
değ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 süreç sonlandırıldıktan sonra geri yüklenen hedefi düzgün şekilde gönderiyor. (b/155218371)singleTop
kullanılırkenNavBackStackEntry
artı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
NavigationUI
yapısı artık CustomView1.1.0-rc01
ve 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ünde bu commit'ler bulunur.)
Yeni Özellikler
- Derin bağlantı, daha önce kullanılabilen
app:uri
'ye ek olarakapp:action
veapp:mimeType
'yi destekleyecek şekilde genişletildi. NavController artık yeniNavDeepLinkRequest
sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuyla gezinmeyi destekliyor. (b/136573074, b/135334841)
API Değişiklikleri
- Dinamik gezinme hedefleri için Kotlin DSL desteği büyük ö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 oluşturulan dinamik grafik eklemeleri için artıkapp:graphPackage
belirtmeniz gerekmez. Noktadan sonraapplicationId
öğesinemoduleName
soneki eklenerek varsayılan bir değer kullanılır.graphPackage
simgenizi özelleştirmeniz gerekiyorsa artıkgraphPackage
yer tutucusu desteklenmektedir.${applicationId}
(b/152696768)- Navigation Graph Kotlin DSL artık işlemler için
defaultArguments
Map
ö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: Etkinliğinizde birden fazla
NavHostFragment
örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken oluşanIllegalStateException
dü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 fragment hedefleri için destek eklendi. (b/148969800)
API Değişiklikleri
DynamicExtras
sınıfı artık oluşturucu kalıbını kullanmıyor ve doğrudan oluşturulabiliyor. (aosp/1253671)DynamicActivityNavigator
artık oluşturucusundaActivity
yerineContext
alıyor. (aosp/1250252)
Hata Düzeltmeleri
NavigationUI
artık boş etiketleri (ör.android:label=””
içeren bir hedef) yoksaymıyor ve başlığı doğru şekilde boş bir dize olarak ayarlıyor. (b/148679860)
Bağımlılık Güncellemeleri
- Navigation Dynamic Features yapıları artık Play Core'a
1.6.5
bağlıdır. (b/149556401)
Sürüm 2.3.0-alpha03
4 Mart 2020
androidx.navigation:navigation-*:2.3.0-alpha03
iptal edilir. 2.3.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
DrawerLayout
sınıfına güvenmek yerine,AppBarConfiguration
artık CustomView1.1.0-alpha02
'da (DrawerLayout
, DrawerLayout1.1.0-alpha04
itibarıyla uygular) kullanıma sunulanOpenable
arayüzünü kullanıyor. Bu sayede,Openable
'nin özel uygulamalarınıNavigationUI
ile kullanabilirsiniz. (b/129030452)
Hata Düzeltmeleri
navigation-common-ktx
ProGuard kuralları artık yalnızca kullanılanNavArgs
sınıflarını doğru şekilde tutuyor ve tümNavArgs
örneklerini tutmuyor. (b/150213558)
Bağımlılık değişiklikleri
- Gezinme, Core
1.2.0
'ya olan bağımlılığını geri aldı ve artık Core1.1.0
'ya bağımlı. Bunun nedeni, Gezinme Core1.2.0
'daki yeni API'lere bağımlı olmadığında geliştiricileri daha yeni bir bağımlılığa geçmeye zorlamayı önlemektir.
Sürüm 2.3.0-alpha02
19 Şubat 2020
androidx.navigation:navigation-*:2.3.0-alpha02
iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
NavBackStackEntry
artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlardaki kayıtlı durumu depolamaya uygun birSavedStateHandle
'ye erişmenize olanak tanır. Kullanım örneği için Sonuç döndürme başlıklı makaleyi inceleyin. (b/79672220)
API Değişiklikleri
- Mevcut ve önceki hedefler için
NavBackStackEntry
alma işlemini kolaylaştırmak amacı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-testing
yapısı,TestNavHostController
sınıfı sağlar. Bu sınıf, Navigation'ı test ederken sahteNavController
kullanmaya alternatif olarak geçerli hedefi ayarlamanıza ve gezinme işlemlerinden sonra geri yığını doğrulamanıza olanak tanır. (b/140884273) - Yeni
navigation-dynamic-features-fragment
(ve geçişli bağımlılığı olannavigation-dynamic-features-runtime
), özellik modüllerinden hedefler veya gezinme grafiklerinin tamamını (<include-dynamic>
aracılığıyla) dahil etmenize olanak tanır. Böylece, 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 sondaki{argument}
öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksayıyor. (b/147447512) - Gezinme
2.2.1
:navigation-ui
için ProGuard kuralları,DrawerArrowDrawable
android.enableJetifier=true
gerektirmemesi için güncellendi. (b/147610424) - Gezinme
2.2.1
:navigation-common-ktx
modülü artıknavigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1
: Gezinme2.2.1
artık Lifecycle ViewModel SavedState2.2.0
ve 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ştururkenIllegalStateException
sorunu düzeltildi. (b/147378752) NavigationUI
artık boş etiketleri (ör.android:label=””
içeren bir hedef) yoksaymıyor ve başlığı doğru şekilde boş bir dize olarak ayarlıyor. Bu işlev daha önce Navigation 2.3.0-alpha04'te kullanıma sunulmuştu. (b/148679860)navigation-common-ktx
ProGuard kuralları artık yalnızca kullanılanNavArgs
sınıflarını doğru şekilde tutuyor ve tümNavArgs
örneklerini tutmuyor. 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-ui
içinDrawerArrowDrawable
ProGuard kuralları,android.enableJetifier=true
'ın gerekli olmaması için güncellendi. (b/147610424)navigation-common-ktx
modülü artıknavigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1
artık Lifecycle ViewModel SavedState2.2.0
ve 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 geri yığında bir hedef veya gezinme grafiğinin kimliğini ileterek
NavController.getBackStackEntry()
çağrısı yapabilirsiniz. DöndürülenNavBackStackEntry
, hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıraLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülenle aynı) veSavedStateRegistryOwner
gibi navigasyon odaklı birLifecycleOwner
sağlar. - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactory
, artıkby navGraphViewModels()
veyaViewModelProvider
oluşturucusuNavController.getBackStackEntry()
ya daNavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ile 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:
NavHostFragment
artı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-ui
tarafı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)
- İsteğe bağlı parametrelerin
null
yerine"@null"
aldığı derin bağlantı ayrıştırmayla ilgili sorun düzeltildi. (b/141613546) NavHostFragment
,FragmentContainerView
ile kullanıldığında yapılandırma değişikliğinden sonra grafiği artık doğru şekilde geri yüklüyor. (b/143752103)
Bağımlılık değişiklikleri
- Gezinme artık uygun durumlarda Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
ve 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
- Gezinme 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
NavDestination
ve 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ıActivity
artık ekstralar olmadığında daha iyi bir hata mesajı gösteriyor. (b/141408999)- Safe Args tarafından oluşturulan
Directions
Java sınıfları artık varsayılan değerler içeriyor. (b/141099045) - Safe Args tarafından oluşturulan
Args
Java sınıfları artık varsayılan değerler içeriyor. (b/140123727) Toolbar
kullanılırkenNavigationUI
, iki üst düzey hedef arasında geçiş yapılırken metin değişikliğini artık animasyonla göstermiyor. (b/140848160)
Sürüm 2.2.0-alpha03
18 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha03
iptal edilir. 2.2.0-alpha03 sürümü şu commit'leri içerir.
Davranış değişiklikleri
- Önce
setGraph
'i arayıp ardındansetViewModelStore()
'ı aradığınızda artıkIllegalStateException
hatasıyla karşılaşıyorsunuz. TümNavBackStackEntry
örneklerininViewModel
örnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla bu değer, ilk kurulumun bir parçası olarak her zamanNavHost
tarafından ayarlanmalıdır. (aosp/1111821)
Hata düzeltmeleri
- Birden fazla farklı gezinme grafiği kapsamlı
ViewModelStore
örneğine bağlıViewModel
örnekleri kullanılırkenConcurrentModificationException
düzeltildi. (aosp/1112257)
Sürüm 2.2.0-alpha02
5 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha02
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekliyor. Varsayılan değeri olan veya boş değer atanabilen bağımsız değişkenler, derin bağlantılar eşleştirilirken artık isteğe bağlıdır. (b/133273839)
- Artık
NavController.getBackStackEntry()
işlevini çağırabilir ve arka yığında bir hedef veya gezinme grafiğinin kimliğini iletebilirsiniz. DöndürülenNavBackStackEntry
, hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıraLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülenle aynı) veSavedStateRegistryOwner
gibi navigasyon odaklı birLifecycleOwner
sağlar. (aosp/1101691, aosp/1101710)
Hata düzeltmeleri
NavHostFragment
eklenirkenViewPager2
ileIllegalArgumentException
hatası alınmasına neden olan sorun düzeltildi. (b/133640271)NavInflater
artık gereksiz yeregetResourceName()
çağrısı yapmı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()
veyaViewModelProvider
oluşturucu,NavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ile birlikte kullanılırken varsayılan fabrika olarak kullanılıyor. (b/135716331)
API değişiklikleri
- Gezinme
2.1.0-rc01
bölümünden:2.1.0-alpha02
sürümünde kullanıma sunulan ve desteği sonlandırılanNavController
üzerindekigetViewModelStore()
API'si kaldırıldı. (aosp/1091021)
Hata düzeltmeleri
NavHostFragment
artıkFragmentContainerView
kullanıyor. Bu sayede animasyonun z sırasıyla ilgili sorunlar ve pencere yerleştirmelerinin Fragment'lere gönderilmesi düzeltiliyor. (b/137310379)
Sürüm 2.1.0
Sürüm 2.1.0
5 Eylül 2019
androidx.navigation:navigation-*:2.1.0
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
2.0.0 sürümünden beri yapılan önemli değişiklikler
- ViewModel'leri gezinme grafiğiyle sınırlama: Artık
by navGraphViewModels()
özellik temsilcisini kullanarak-ktx
kitaplıklarını kullanan Kotlin kullanıcıları için 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,navigate
işlemi yaptığınızdaDialogFragment
gösterir.NavHostFragment
, varsayılan olarak iletişim kutusu hedeflerini destekler. Daha fazla bilgi için DialogFragment'ten hedef oluşturma başlıklı makaleyi inceleyin. - URI ile gezinme: Artık
navigate
. Bu özellik, bir hedefe eklediğiniz<deepLink>
kullanarak hedefe gitmenizi sağlar.Uri
Daha fazla bilgi için Uri kullanarak gezinme bölümüne bakın. - NavHostController: Özellikle özel bir
NavHost
oluşturmak için kullanılan API'lerNavHostController
'e taşındı. Böylece uygulamalarNavController
'lerini barındırmaLifecycleOwner
,OnBackPressedDispatcher
veViewModelStore
'e bağlayabilir.
Sürüm 2.1.0-rc01
7 Ağustos 2019
androidx.navigation:navigation-*:2.1.0-rc01
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
API değişiklikleri
2.1.0-alpha02
sürümünde kullanıma sunulan 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-beta01
sü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
NavigationUI
artıksetupWithNavController()
,Toolbar
veyaCollapsingToolbarLayout
ile birlikte kullanıldığında Yukarı düğmesinin kaldırılmasını animasyonla gösteriyor. (b/131403621)
Hata düzeltmeleri
findNavController()
ile aynı kapsayıcıya sahip 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-runtime
yapay ürününe taşındı. XML aracılığıyla eklenebilen özel gezinme araçları, Gezinme Düzenleyici'nin Ana Makine paneliyle entegrasyon sağlamak için bu özelliği kullanmalıdır. (b/133880955)
API değişiklikleri
NavController
üzerindekigetViewModelStore()
API'si,ViewModelStoreOwner
döndüren yenigetViewModelStoreOwner()
yöntemi lehine kullanımdan kaldırıldı. (aosp/987010)<dialog>
hedefleri gibi kayan pencere hedeflerinin uygulanması, tüm<dialog>
hedeflerinin artık uyguladığı bir işaretleyici arayüzü olanFloatingWindow
olarak genelleştirildi. Üst uygulama çubuğuyla etkileşim için kullanılan NavigationUI yöntemleri artıkFloatingWindow
hedeflerini yoksayıyor. (b/133600763)
Davranış değişiklikleri
- Gezinme, artık
<dialog>
hedefi kullanılırken durumunu ekranda görünenlerle doğru şekilde senkronize ediyor. Bu nedenle, artık<fragment>
hedefi gibi iletişim kutusu ve etkinlik olmayan bir hedefe gittiğinizde Navigasyon,<dialog>
hedeflerini otomatik olarak gösterir. (b/134089818)
Hata düzeltmeleri
- Derin bağlantı işlenirken etkinliğin yeniden oluşturulması sırasında oluşan animasyon artık gezinme tarafından bastırılıyor ve görsel yanıp sönme düzeltiliyor. (b/130362979)
- İlk parça eklenirken bir parçanın çıkarılması durumunda gezinme 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'lerin adı değiştirildi veNavController
'nın yeni bir alt sınıfı olanNavHostController
'ye taşındı. (aosp/966091)NavController
setHostOnBackPressedDispatcherOwner()
yöntemi,NavHostController
'ınsetOnBackPressedDispatcher()
yöntemiyle değiştirildi ve artık bu yöntemi çağırmadan öncesetLifecycleOwner()
'ı aramanız gerekiyor. (aosp/965409)NavHostController
artıksetHostOnBackPressedDispatcherOwner()
tarafından daha önce döndürülenNavHostOnBackPressedManager
sı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
öğesine doğru şekilde uyar ve gezinme2.1.0-alpha03
bölümündeki bir gerilemeyi düzeltir. b/132077777DialogFragmentNavigator
artı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 restore
sorunu düzeltildi. b/131733658
Sürüm 2.1.0-alpha03
7 Mayıs 2019
androidx.navigation:*:2.1.0-alpha03
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Bilinen Sorunlar
- NavHostFragment,
app:defaultNavHost="false"
b/132077777 kullanmasına rağmen sistemin Geri düğmesini engellemeye devam ediyor.
Yeni özellikler
- Artık
<dialog>
hedefleri oluşturabilirsiniz. Bu hedeflerenavigate
yaptığınızdaDialogFragment
gösterilir.NavHostFragment
, varsayılan olarak iletişim hedefi türlerini destekler. b/80267254 - Bir kaynak kimliği veya
NavDirections
örneğiylenavigate
işlevini çağırmanın yanı sıra artık doğru hedefe gitmek için bir hedefe eklediğiniz<deepLink>
öğesini kullanan birUri
üzerinden de gezinebilirsiniz. b/110412864
Davranış değişiklikleri
- NavigationUI tarafından sağlanan varsayılan animasyonlar, etkinliklerin ve parçaların varsayılan animasyon hızına uyacak şekilde 400 ms'den 220 ms'ye çıkarıldı. b/130055522
API değişiklikleri
createFragmentNavigator()
NavHostFragment
yöntemi kullanımdan kaldırıldı ve işlevselliği,NavHostFragment
alt 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/122802849hasDeepLink()
yöntemi, belirli birUri
öğesinin söz konusu hedef tarafından veyaNavGraph
durumunda gezinme grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenize olanak tanımak içinNavDestination
öğesine eklendi. b/117437718
Hata düzeltmeleri
- Varsayılan bağımsız değişkenler artık
OnDestinationChangedListener
örneklerine doğru şekilde iletiliyor. b/130630686 NavHostFragment
artıkOnBackPressedDispatcher
kullanarak sistemin geri etkinliklerini yakalıyor ve bir parçaya döndükten sonra parça 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:argType
ileandroid:defaultValue=”@null”
artık düzgün bir şekildestring
bağımsız değişkeni olarak çıkarılıyor. b/129629192
Sürüm 2.1.0-alpha02
3 Nisan 2019
androidx.navigation:*:2.1.0-alpha02
iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.
Yeni özellikler
- Artık Kotlin kullanıcıları için
by navGraphViewModels()
özellik temsilcisini kullanarak veyaNavController
'ye eklenengetViewModelStore()
API'sini kullanarak 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:targetPackage
ekleyebilirsiniz. Paketi kendi uygulama kimliğinizle kısıtlamak içinapp:targetPackage="${applicationId}"
'yı destekler. b/110975456
Hata düzeltmeleri
<activity>
hedefleri içinandroid:name
artık enflasyon sırasında bir Sınıf'a ayrıştırılmıyor. Bu sayede, dinamik özellikler kullanılırken ClassNotFoundException'lar ö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.1
veandroidx.fragment:fragment:1.1.0-alpha05
öğelerine bağlıdır. Bu sürüm,androidx.legacy:legacy-support-core-utils:1.0.0
bağımlılığını da kaldırır. b/128632612
API Değişiklikleri
- Kaynak kimliği ve paketle tıklama işleyici oluşturmaya alternatif olarak yeni bir
Navigation.createNavigateOnClickListener(NavDirections)
yöntemi eklendi. b/127631752 FragmentNavigator.instantiateFragment
artık kullanımdan kaldırıldı. Varsayılan uygulama artık Fragment'leri oluşturmak içinFragmentFactory
kullanıyor. b/119054429
Hata Düzeltmeleri
- Hedefe bağımsız değişkenler eklendiğinde gezinme artık boş
Bundle
göndermiyor. Bu sayedeandroid:defaultValue="@null"
kullanılırken yaşanan sorun düzeltildi. b/128531879 - Safe Args artık KotlinPoet 1.1.0'a bağlıdır ve bu sayede çok uzun paket adlarıyla ilgili sorun düzeltilmiştir. b/123654948
Sürüm 2.0.0
Sürüm 2.0.0
14 Mart 2019
2.0.0
navigasyonu, 2.0.0-rc02
sürümüne göre 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üncelleme yapmak için, bağımlılıklarınızı yeni bağımlılıklarla eşleştirmek dışında kodunuzda herhangi bir değişiklik yapmanız gerekmez.
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 üst düzey build.gradle
dosyanıza aşağıdaki classpath'i ekleyin.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Sürüm 1.0.0
Sürüm 1.0.0
14 Mart 2019
1.0.0
navigasyonu, 1.0.0-rc02
sürümüne göre 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()
simgesinin yoksayılmasına neden olan sorun düzeltildi. b/126251695 navigateUp()
artıkFLAG_ACTIVITY_NEW_TASK
olmadan derin bağlantı işlendikten sonra uygulamanızın görevine geri dönme işlemini doğru şekilde gerçekleştiriyor. b/126082008ActivityNavigator.applyPopAnimationsToPendingTransition
öğesinin doğru pop çıkış animasyonunu uygulamamasıyla ilgili sorun düzeltildi. b/126237567- Safe Args tarafından oluşturulan Kotlin kodu artık
R
sınıfıyla ilişkili paket adındain
vefun
gibi Kotlin anahtar kelimelerini düzgün şekilde kod dışına alıyor. b/126020455
Sürüm 1.0.0-rc01
21 Şubat 2019
Bu, Navigation'ın 1.0.0 kararlı sürümü için yayınlanmış bir sürüm adayıdır. Bu sürümde bir hata düzeltmesi yer almaktadır.
Hata Düzeltmeleri
- Parçalar ve
singleTop
gezinme işlemleri kullanılırken yaşanan sorun düzeltildi. b/124294805
Sürüm 1.0.0-beta02
12 Şubat 2019
Bu sürümde, küçük iyileştirmelerin yanı sıra önemli hata düzeltmeleri de yer almaktadır.
Yeni Özellikler
- Artık
0
alanınıreference
bağımsız değişkenleri içinandroid:defaultValue
olarak 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. b/123969518
Hata Düzeltmeleri
popBackStack()
venavigateUp
, artık geri yığında son hedefi açarkenfalse
değerini doğru şekilde döndürüyor. Bu sayede,1.0.0-beta01
sürümünde kullanıma sunulan bir gerileme düzeltiliyor. b/123933201- Gezinme artık kaydedilmiş örnek durumu geri yüklenirken
ClassLoader
değerini doğru şekilde ayarlıyor. Böylece,Navigator
kaydedilmiş 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 oluşturulan Safe Args 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
- Geçiş artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Safe Args aracılığıyla aynı şekilde işlenmesini sağlar. 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:argType
ile referans varsayılan değeri kullanmaya çalışmak, gezinme XML'si ayrıştırılırken bir istisnaya neden olur. b/123551990 - Safe Args artık Android Gradle Eklentisi 3.3.0'a bağlı 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 Plugin'in tüm sürümlerinde kitaplık ve özellik modüllerinde kullanılabilir. b/121304903
- Tek bir
popBackStack()
işleminin, hedefteki tüm kopyaları arka yığının en üstünden kaldırmasına (her seferinde yalnızca tek bir hedef yerine) neden olan gerileme düzeltildi. b/123552990 FragmentNavigator
durumu,NavController
durumuyla senkronizasyonunu bozarak geri yığını geri yüklemeye çalışırkenIllegalStateException
'ye neden oluyordu. Bu sorun düzeltildi. b/123803044- ProGuard, karartma ile kullanılırken
NavigationUI
ile işlenen geri okunun görünmemesine neden olan sorun düzeltildi. b/123449431 - Safe Args tarafından oluşturulan kod artık
app:argType
biçimindeki statik bir iç sınıfa işaret eden.OuterClass$InnerClass
kullanımını düzgün şekilde işliyor. b/123736741 - Safe Args tarafından oluşturulan Java kodu artık genel işlemleri ve derin iç içe yerleştirilmiş hedefleri düzgün şekilde işliyor. b/123347762
Sürüm 1.0.0-alpha11
23 Ocak 2019
Bu, 1.0.0-alpha10
için 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çerir. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.
Yeni Özellikler
- Kotlin kullanıcıları artık
by navArgs()
özelliği temsilcisini kullanarakActivity
veyaFragment
içinde Safe Args tarafından oluşturulanNavArgs
sınıfına referans almak için tembel değerlendirme yapabilir. b/122603367 - Safe Args artık
androidx.navigation.safeargs.kotlin
eklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanıyor. Kotlin kodu, yalnızca Kotlin modülleri için özel olarak oluşturulur. Öncekiandroidx.navigation.safeargs
eklentisi aracılığıyla hâlâ kullanılabilen oluşturucu kalıbı yerine varsayılan bağımsız değişkenler ve değişmez sınıflar kullanılır. b/110263087
Davranış Değişiklikleri
- Eşleşen derin bağlantılar artık en fazla eşleşen bağımsız değişkene sahip derin bağlantıya yönlendiriliyor. b/118393029
NavController
cihazındasetGraph()
numaralı telefonu aradığınızda artık geri yığın sıfırlanacak. b/111450672- Bilinmeyen derin bağlantılar artık
IllegalStateException
oluşturmuyor ancak yoksayılıyor. Bu sayede, iç içe yerleştirilmiş veya birden fazlaNavHostFragment
ile ilgili sorunlar düzeltiliyor. b/121340440
Zarar Veren Değişiklikler
- Bir etkinliğe pop animasyonları uygulama
NavOptions.applyPopAnimationsToPendingTransition()
yöntemiActivityNavigator
konumuna taşındı. b/122413117 - Safe Args artık bağımsız değişken içermeyen işlemler için aynı sınıfların kopyalanmasını önlüyor. Oluşturulan NavDirections
sınıflarındaki bağımsız değişken içermeyen yöntemlerin dönüş türü artık
NavDirections
. b/123233147 - Safe Args tarafından oluşturulan Directions sınıflarında artık herkese açık bir oluşturucu yok. Yalnızca oluşturulan statik yöntemlerle etkileşim kurmalısınız. b/123031660
- Safe Args tarafından oluşturulan
NavDirections
sınıflarında artık herkese açık bir oluşturucu bulunmuyor. 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()
tarafından döndürülenBundle
artık@Nullable
yerine@NonNull
olarak işaretleniyor. b/123243957
Hata Düzeltmeleri
NavDeepLinkBuilder
, benzersizliği belirlemek için ilettiğiniz bağımsız değişkenleri kullanarak aynı hedefe yönelik birden fazla eşzamanlıPendingIntent
isteğini artık doğru şekilde işliyor. b/120042732NavController
artık iç içe yerleştirilmişNavHostFragment
veya geri yığınlı diğer alt parçalar kullanılırkenpopBackStack()
işlemlerini doğru şekilde gerçekleştiriyor. b/122770335NavigationUI
artık Yukarı düğmesinin içerik açıklamasını doğru şekilde ayarlıyor. b/120395362- Safe Args tarafından oluşturulan Directions sınıfları artık bir hedefteki işlemle aynı kimliğe sahip genel işlemleri doğru şekilde işliyor. b/122962504
- Safe Args tarafından oluşturulan
NavDirections
sınıfları,equals()
doğru değerini döndürdüğünde artık eşithashCode()
değerlere sahip. b/123043662 FragmentNavigator
artıkNavHostFragment
'ninFragmentManager
üzerinde özelFragmentTransactions
yapmaya çalıştığınızda daha iyi bir hata mesajı gösteriyor. 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çerir. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.
android.arch.navigation:navigation-testing
yapay nesnesinin geliştirilmesine devam etmemeye karar verdik. NavController
uygulamasının dahili testinde faydalı olduğu kanıtlanmış olsa da doğru navigate()
çağrılarının yapıldığını doğrulamak için NavController
örneğini taklit 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 belgeler hazırlayacağız.
Yeni Özellikler
menuCategory="secondary"
içerenMenuItem
lar,NavigationUI
yöntemleriyle kullanıldığında artık geri yığını açmayacak. b/120104424AppBarConfiguration
artıknavController.navigateUp()
,false
döndürdüğünde çağrılacak bir yedekOnNavigateUpListener
AppBarConfiguration
örneği ayarlamanıza olanak tanıyor. b/79993862 b/120690961
Zarar Veren Değişiklikler
<argument>
ileargType="reference"
kullanıldığında Navigation 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 vesetup
yöntemleriyle tutarlı hale geliyor. Geri yığını açılmasını önlemek içinMenuItem
öğesinemenuCategory="secondary"
ekleyin. aosp/852869- Oluşturulan
Args
sınıflarınınfromBundle()
yöntemleri artık null değer atanabilirBundle
yerine null değer atanabilir olmayanBundle
alıyor. aosp/845616
Hata Düzeltmeleri
- Artık bağımsız değişkenler, her zaman dize olarak değil, doğru
argType
olarak derin bağlantılardan düzgün şekilde ayrıştırılıyor. b/110273284 - Navigasyon artık herkese açık kaynaklarını doğru şekilde dışa aktarıyor. b/121059552
- Safe Args artık Android Gradle Plugin 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çerir. Lütfen aşağıdaki Zarar Veren Değişiklikler bölümüne bakın.
Yeni Özellikler
NavigationUI
yöntemleriyle kullanıldığında hedef etiketleri artıkandroid:label
içindeki{argName}
örneklerini doğru bağımsız değişkenle otomatik olarak değiştirecek.b/80267266- Gezinme artık Destek Kitaplığı 28.0.0'a bağlıdır. b/120293333
Zarar Veren Değişiklikler
OnNavigatedListener
,OnDestinationChangedListener
olarak yeniden adlandırıldı b/118670572OnDestinationChangedListener
artık bağımsız değişkenlerinBundle
değerini de iletiyor. aosp/837142app:clearTask
veapp:launchDocument
özellikleri ile ilişkili yöntemleri kaldırıldı. Grafiğinizin köküyle birlikteapp:popUpTo
kullanarak tüm hedefleri geri yığınınızdan kaldırın. b/119628354ActivityNavigator.Extras
artıkBuilder
kalıbını kullanıyor veIntent.FLAG_ACTIVITY_
işaretlerini ayarlama olanağı sunuyor. aosp/828140NavController.onHandleDeepLink
,handleDeepLink
olarak yeniden adlandırıldı. aosp/836063NavOptions
,NavInflater
,NavDeepLinkBuilder
veAppBarConfiguration
gibi alt sınıflara ayrılmak için tasarlanmamış birçok sınıf ve yöntemfinal
olarak değiştirildi. aosp/835681- Kullanımdan kaldırılan
NavHostFragment.setGraph()
yöntemi kaldırıldı. aosp/835684 - Kullanımdan kaldırılan
NavigationUI.navigateUp(DrawerLayout, NavController)
yöntemi kaldırıldı. aosp/835684 - Parça oluşturma işlemi
FragmentNavigator
bölümüne taşındı. Böylece, parça oluşturma işleminiFragmentFactory
'ye devretmek daha kolay hale geldi. b/119054429 NavGraphNavigator
oluşturucusu artıkContext
değ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ülenNavigatorProvider
işlevinin işlevselliği değişmedi. aosp/830660 NavDestination.navigate()
kaldırıldı. Bunun yerineNavigator
numaralı telefondannavigate()
kullanıcısını arayın. aosp/830663Navigator
işlevinde önemli yeniden düzenleme yapılarakOnNavigatorNavigatedListener
işlevine olan ihtiyaç ortadan kaldırıldı ve bunun yerinenavigate
işlevinin, gidilenNavDestination
öğesini döndürmesi sağlandı.Navigator
örnekleri artıkNavController
'ye pop etkinlikleri gönderemez. Geri düğmesine basma işlemlerini durdurmak venavController.popBackStack()
işlevini çağırmak içinOnBackPressedCallback
kullanmayı düşünebilirsiniz. aosp/833716
Hata Düzeltmeleri
popUpTo
artık hedef bir<navigation>
öğesi olduğunda tutarlı bir şekilde çalışıyor. b/116831650- İç içe yerleştirilmiş grafikler kullanılırken
IllegalArgumentException
hatası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şmezini kullanarak varsayılan bir değer ayarlayabilir
(ör.
app:defaultValue="READ"
) b/111316353 - Safe Args, desteklenen tüm türlerin dizilerini destekler. b/111487504
- Safe Args artık kaynak dizinlerinin alt klasörlerini yoksayıyor. b/117893516
- Safe Args, uygun yerlere
@Override
ek açıklamaları ekler b/117145301
Sürüm 1.0.0-alpha07
29 Ekim 2018
Yeni Özellikler
- Yeni AppBarConfiguration sınıfı, hangi hedeflerin üst düzey hedef olarak kabul edileceğini özelleştirmenize olanak tanır. Ayrıntılı bilgi için güncellenmiş dokümanları inceleyin. b/117333663
- Artık grafiğinizin başlangıç hedefine bağımsız değişkenler iletebilirsiniz. b/110300470
- Derin bağlantılar artık nokta, tire ve artı işareti içeren özel şemaları destekliyor. b/112806402
Zarar Veren Değişiklikler
navigation-testing-ktx
modülünavigation-testing artifact
modülüne dahil edildi ve artık yayınlanmayacak.navigation-testing
yapısı artık Kotlin standart kitaplığına bağımlı. API, Kotlin kurallarıyla daha tutarlı olacak şekilde değiştirildi ancak Java ile yazılmış testler için kullanmaya devam edebilirsiniz.- Meta veri 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 gezinme araçları kullanılırken yapılandırma değişikliklerinden sonra meydana gelen kilitlenme sorunu düzeltildi. b/110763345
Safe Args
- Safe args artık Android Gradle Plugin 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 Gezinme Mimari Bileşeni ile gezinmeyi uygulama konusuna bakın.
NavigationView
içinde 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.Extras
parametresini alıyor. - NavController'ın
getGraph()
yöntemi artıkNonNull
b/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ı, varsa üst öğenin Yol Tarifi sınıfını genişletir b/79871405
- Directions ve Args sınıfları artık faydalı bir
toString()
uygulamaya 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üşümle ilgili sorunu düzeltme b/111602491
- Safe Args eklentisindeki nullability ile ilgili hata mesajları düzeltildi.
- Eksik nullability ek açıklamalarını ekleyin.
Sürüm 1.0.0-alpha04
19 Temmuz 2018
Navigation 1.0.0-alpha04
ve ilişkili Safe Args Gradle eklentisi, bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.
API/Davranış Değişiklikleri (API/Behavior Changes)
- NavHostFragment, her zaman geçerli Fragment'ı birincil gezinme parçası olarak ayarlar. Böylece, alt fragment yöneticilerinin, dış NavController'ın kaldırılmadan önce kaldırılması sağlanır. b/111345778
Safe Args
- Zarar Veren Değişiklik:
app:type
, ConstraintLayout 2.0.0-alpha1 gibi diğer kitaplıklarla çakışmayı önlemek içinapp:argType
olarak değiştirildi b/111110548 - 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
NonNull
ek açıklamalar eklendi b/111455455 b/111455456
Hata Düzeltmeleri
- Bir parça hedefine derin bağlantı oluşturulduktan sonra sistemin geri düğmesiyle ilgili sorun düzeltildi b/111515685.
Sürüm 1.0.0-alpha03
12 Temmuz 2018
Navigation 1.0.0-alpha03
ve ilişkili Safe Args Gradle eklentisi, bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.
API/Davranış Değişiklikleri (API/Behavior Changes)
- Araç çubuğu için NavigationUI.setupWithNavController yöntemi eklendi b/109868820
- CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
- popBackStack(), geri yığın boş olduğunda veya verilen hedef kimliği geri yığında olmadığında artık false değerini döndürüyor b/110893637
- FragmentNavigator artık FragmentManager durumu kaydettikten sonraki gezinme işlemlerini yoksayarak "Can not perform this action after onSaveInstanceState" (Bu işlem, onSaveInstanceState'ten sonra 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
,setDemoControllerIndex
b/79995048 olur. - Örneğin,
action_show_settings
,actionShowSettings
b/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 destekleniyor.
app:type
için tam nitelikli sınıf adı kullanılıyor. 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 yaşanan sorunlar düzeltildi. b/110178671
- Grafikteki ilk hedefle
setPopUpTo
kullanılırken yaşanan sorunlar düzeltildi b/109909461. - Tüm
app:defaultValue
değ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 keep kuralları ekliyor b/79874119 - Varsayılan FragmentNavigator değiştirilirken oluşan bellek sızıntısı düzeltildi b/110900142.
Sürüm 1.0.0-alpha02
7 Haziran 2018
Davranış Değişiklikleri
FragmentNavigator
artıksetReorderingAllowed(true)
kullanıyor. b/109826220Gezinme özelliği 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ıldığında oluşan
IllegalStateException
dü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
defaultNavHost="true" öğesi alt parça olarak kullanılırken
IllegalArgumentException
sorunu düzeltildi. b/79656847NavDeepLinkBuilder kullanılırken
StackOverflowError
sorunu düzeltildi. b/109653065İç içe yerleştirilmiş bir grafiğe geri dönüldüğünde
IllegalArgumentException
düzeltildi. b/80453447launchSingleTop
kullanılırken Fragment'lerin çakışması sorunu 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, iç içe yerleştirilmiş bir grafik
MenuItem
olarak kullanıldığında artık doğru öğeyi vurgulayacak. b/109675998
API Değişiklikleri
İşlemler için
clearTask
özelliği 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
Navigation, uygulama içi gezinme oluşturmak için bir çerçeve sağlar. Bu ilk sürüm 1.0.0-alpha01
.