Navigasyon
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
17 Nisan 2024 | 2.7.7 | - | - | 2.8.0-alpha07 |
Bağımlılıkları bildirme
Navigasyon'a bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanızın veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
Güvenli Aramalar'ı projenize eklemek için üst düzey build.gradle
dosyanıza aşağıdaki classpath
öğesini ekleyin:
Modern
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Ayrıca, mevcut iki eklentiden birini uygulamanız gerekir.
Java'ya veya karma Java ve Kotlin modüllerine uygun Java dili kodu oluşturmak için şu satırı uygulamanızın veya modülünüzün build.gradle
dosyasına ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatif olarak, yalnızca Kotlin modüllerine uygun Kotlin kodu oluşturmak için şunu ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX'e Taşıma uyarınca gradle.properties
dosyanızda android.useAndroidX=true
bulunmalıdır.
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.
Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme Bağımlılıkları Ekleme bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa 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 belgelerine bakın.
Sürüm 2.8
Sürüm 2.8.0-alpha07
17 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha07
yayınlandı. 2.8.0-alpha07 sürümü bu kayıtları içerir.
Yeni Özellikler
Gezinme XML dosyalarınıza
composable
hedefleri eklemenize olanak tanıyan,NavHostFragment
içinComposableNavHostFragment
alternatifi içeren yeni birnavigation-fragment-compose
yapısı ekler. Hercomposable
hedefi, tam nitelikli adı her hedefteandroid:name
özelliği olarak kullanılan bir üst düzey@Composable
yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için bir kapsayıcı 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
- Navigasyon Compose'da Kotlin Serileştirme'ye dayalı bir yaklaşım kullanarak Güvenli Aramalar desteği devam ediyor. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
ek açıklamasıyla işaretlenmiştir. Gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında bu ek açıklama kaldırılacaktır. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I12cI121
Sürüm 2.8.0-alpha06
3 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha06
yayınlandı. 2.8.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
- Navigasyon Oluşturma'da, Kotlin Serileştirmesi'ne dayalı bir yaklaşım kullanarak Güvenli Aramalar'ın desteklenmesine başlandı. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
ek açıklamasıyla işaretlenmiştir. Gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında bu ek açıklama kaldırılacaktır. (I644e7, I98896, I2a1c5, I43a51} I98896, I2a1c5
Hata Düzeltmeleri
NavHost
artık varsayılan contentHizalama bağımsız değişkeni olarakAlignment.TopStart
öğesini kullanıyor. Bu işlem, öğeyiAnimatedContent
için varsayılan değerle uyumlu hale getirir ve merkez geçişinden bazı beklenmedik ölçek örneklerini düzeltir. (I09e72, b/330111602)- Gezinmede Yazma özelliği kullanılırken tahmine dayalı geri hareketini kaydırdığınızda
NavHost
uygulaması artık özel geçişi hemen tamamlamak 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
yayınlandı. 2.8.0-alpha05 sürümü bu kayıtları içerir.
Yeni Özellikler
- Artık bağımsız değişkenleri,
defaultValue
hizmetine güvenmedenstartDestination
rotasında doğrudanNavGraph
startDestination
öğesine aktarabilirsiniz. Bu, iç içe yerleştirilmişNavGraph
startDestinations
için de geçerlidir. (I0e0b5, b/109505019, b/188693139)
API Değişiklikleri
- Liste, diziler, haritalar gibi koleksiyona dayalı bağımsız değişkenler için
NavType<T>
alt sınıfı olan yeni soyutCollectionNavType<T>
sınıfı eklendi. (Ic6d63, b/188693139) - Varsayılan
NavType
dizilerinin tümü (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
veStringArrayType
) artıkCollectionNavType
türünde (Idcf79, b/188693139) NavType
artık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açıkvalueEquals
API 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 parantezi biçimindeki değerlere (ör.{argName}
) izin veriyor. Bu değişiklik, böyle bir değerin tüm türler için geçersiz sayılacağı (veya değer bulunmadığı) sorunu düzeltir. (I18302, b/327274038) navigate
veyapopBackStack
gibi rotaları destekleyenNavController
işlevleri artıkNavTypes
dizisinin bağımsız değişkenleriyle doldurulmuş rotaları düzgün bir şekilde eşleştirebilir. (Iea805, b/327229511)
Sürüm 2.8.0-alpha04
6 Mart 2024
androidx.navigation:navigation-*:2.8.0-alpha04
yayınlandı. 2.8.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
- Artık Gezinme Oluşturma bölümünde,
composable
ve/veyanavigation
işlevlerinin başlatma işleminin bir parçası olarak tanımlayarak geçişleriniz içinSizeTranform
belirtebilirsiniz. (I91062, b/296912651)
Hata Düzeltmeleri
- Sistem Geri Dönüş hareketini hareket olmadan kullanırken Oluşturma Navigasyonu'nda
NavHost
öğesinin geçişi düzgün şekilde gösterememesine neden olan sorun düzeltildi. (Buzullar, b/325998468)
Sürüm 2.8.0-alpha03
21 Şubat 2024
androidx.navigation:navigation-*:2.8.0-alpha03
yayınlandı. 2.8.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
NavBackStackEntry.savedStateHandle
ana iş parçacığında olması gereken kodu kullandığından artık@MainThread
olarak işaretlendi. (Ibb988, b/299523245)
Hata Düzeltmeleri
- Navigasyon'da, ilişkili girişin
ViewModel
değeri, kaydedilen durumunun parçası olmadığı içinNavGraph
ViewModel'in çok erkenDESTROYED
olmasına neden olan bir sorun düzeltildi. (Ib6bb7, b/317581849)
Bağımlılık Güncellemesi
- Gezinme menüsünü oluşturma işlemi 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
yayınlandı. 2.8.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
- Gezinme Yazma, artık oluşturma animasyonundaki yeni
SeekableTransitionState
API'leri aracılığıyla Tahmine dayalı uygulama içi desteği sağlar. Bu, işlemi tamamlanan hareketle yapmaya veya iptal etmeye karar vermeden önce özel Geçişinizle önceki hedefi görmek için geri hareketini kullanmanıza olanak tanır. (I8b8e9)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.navigation:navigation-*:2.8.0-alpha01
yayınlandı. 2.8.0-alpha01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bir hedefte birden fazla
saveState
çağrısının kaydedilmesine neden olan ancak yalnızca ilk durumun geri yüklenebildiğiBackStackState
sızıntısı düzeltildi. (I598b0, b/309559751) - Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcıları kullanıldığında Dize olmayan bağımsız değişkenlerin düzgün görüntülenmemesine neden olan sorun düzeltildi. (#636, b/316676794)
Bağımlılık Güncellemesi
- Gezinme menüsü oluşturma işlemi artık Compose
1.7.0-alpha01
'ın beklenmedik ölçek animasyonuna neden olabilecek bir sorunu düzeltmesine bağlıdır. (b/297258205)
Harici Katkı
- Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcılarını kullanırken Dize olmayan bağımsız değişkenlere ilişkin görüntüleme sorununu düzelttiğiniz için SimonMarquis'e teşekkür ederiz.
Sürüm 2.7.7
Sürüm 2.7.7
7 Şubat 2024
androidx.navigation:navigation-*:2.7.7
yayınlandı. 2.7.7 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme
2.8.0-alpha01
üzerinden geri alındı: Tek birNavBackStackEntry
üzerinde birden fazlasaveState()
çağrısının birden çok durumun kaydedilmesine neden olan ancak yalnızca ilk kaydedilen durumun geri yüklenebildiğiBackStackState
sızıntısı düzeltildi. (I598b0, b/309559751) - Gezinme
2.8.0-alpha01
üzerinden geri alındı: Uygulama çubuklarının başlığını doldurmak içinNavigationUI
yardımcıları kullanıldığında Dize olmayan bağımsız değişkenlerin düzgün görüntülenmemesine neden olan sorun düzeltildi. (#636, b/316676794)
Harici Katkı
- Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcılarını kullanırken Dize olmayan bağımsız değişkenlere ilişkin görüntüleme sorununu düzelttiğiniz 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
yayınlandı. 2.7.6 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
NavGraph
equals()
işlevi artık yalnızca çağıran değil diğer grafiğin düğümlerini doğru şekilde dikkate alıyor. Bu değişiklik, farklı kimliklere sahip düğümlere sahip grafiklerin artık eşit olarak kabul edilmemesini sağlar (I401cb, b/311414915).
Sürüm 2.7.5
Sürüm 2.7.5
1 Kasım 2023
androidx.navigation:navigation-*:2.7.5
yayınlandı. 2.7.5 sürümü bu kayıtları içerir.
Performans iyileştirmeleri
- İki grafiğin karşılaştırmasının performansı (hem zaman hem de ayırma sayısı açısından) büyük ölçüde artırıldı. Bu da yeni grafiği mevcut grafikle dahili olarak karşılaştıran
setGraph
gibi çağrıların çok daha hızlı olacağı ve atlanan kare sayısının azalacağı anlamına gelir. Bu iyileştirmeyi sağlayan kapsamlı analiz için teşekkür ederiz Michał Z. (I6ad62) NavHost
, güncellenen durumu okumak için ikinci geçişin beklenmesini beklemek yerine ilk beste geçişinde başlangıç hedefini oluşturur. (I439a7, b/304852206)
Hata Düzeltmeleri
setGraph
işlevini tam olarak aynı grafikle birden fazla kez çağırırsanız yalnızca grafiğinizde iki hedefi birbirine bağlayan bir işlem içeren bir hedef varsa arka yığınınızın açılmasına neden olan sorun düzeltildi. (Ieaed7)- Hızlı bir şekilde arka arkaya gidilip kapatılan iletişim kutuları artık
NavController.visibleEntries
listesine sızdırılmayacak. (I67586, b/287969970) - Artık bir giriş ve ardından yapılandırma değişikliği yapıldığında,
saveState
yanlışsa girişinViewModel
öğesi artık düzgün bir şekilde temizlenecek. (Idf242, b/298164648) - Arka yığın tamamen boş olduğunda, yapılandırma değişikliğinden önce arka yığın tamamen boşsa veya yalnızca gelen Intent
FLAG_ACTIVITY_NEW_TASK
işareti ayarlandığındasetGraph
çağrısı yapıldığındaNavController
ürününün aynı derin bağlantıyı birden fazla kez işlemesine neden olan sorun düzeltildi. (I73c7f)
Bağımlılık Güncellemeleri
- Parçalarla gezinme artık Fragment 1.6.2'ye bağlıdır ve
clearBackStack
çağrılırken iç içe yerleştirilmiş parçalarınViewModel
örneklerinin temizlenememesine neden olan sorun düzeltildi.
Sürüm 2.7.4
Sürüm 2.7.4
4 Ekim 2023
androidx.navigation:navigation-*:2.7.4
yayınlandı. 2.7.4 sürümü bu kayıtları içerir.
Yeni Özellikler
- Bu tam bağımsız değişkenleri kullanan belirli bir girişe geri dönerek
popBackStack
içinde bulunan destekle eşleşen bağımsız değişkenlere sahip rotaları kullanma içinpopUpTo
desteği eklendi. (I731f4, b/299255572)
Hata Düzeltmeleri
popUpTo
ile başka bir rota izleme sırasında navigasyonu kesintiye uğratmanınFragmentNavigator
uygulamasının kilitlenmesine neden olması sorunu düzeltildi. (I3c848, b/301887045)- Sistem geri basmasının,
currentDestination
öğesinin görüntülenen Parçayla eşleşecek şekilde doğru şekilde güncellenmemesine neden olduğu sorun düzeltildi. (Id0d6c, b/289877514) DialogFragment
yaşam döngüsü artık üzerindeki iletişim kutusu kapatıldığındaRESUMED
durumuna düzgün şekilde geçecek. (I88f0d, b/301811387)
Sürüm 2.7.3
Sürüm 2.7.3
20 Eylül 2023
androidx.navigation:navigation-*:2.7.3
yayınlandı. 2.7.3 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Parçalarla Gezinme özelliğinde
visibleEntries
listesinin yanlış girişler içermesine neden olan bir sorun düzeltildi. (I5caa9, b/288520638) - Kayan Pencere hedefinin (ör.
Dialogs
,Bottomsheets
vb.) hiçbir zamanRESUMED
Yaşam Döngüsü geri çağırmaması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
yayınlandı. 2.7.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme artık Yaşam Döngüsü
2.6.2
'ne bağlıdır.rememberSaveable
ile Gezinme Yazma'nınNavHost
arasındaki etkileşimi düzeltir. Bu etkileşim,rememberSaveable
hedeflerin veViewModel
'ye ait tümSavedStateHandle
örneklerinin işlem ölümü ve yeniden oluşturulduktan sonra düzgün şekilde geri yüklenmesine neden olur. (b/298059596, b/289436035) - Gezinme Oluşturma aracında, kısmen gizlenmiş iletişim kutularının (ör. en üstteki iletişim kutusu değil)
STARTED
durumunda değil,CREATED
Yaşam döngüsü durumunda yer aldığı birden fazla iletişim kutusunun aynı anda gösterilmesiyle ilgili sorun düzeltildi. (aosp/2728520, b/289257213) - Gezinme Yazma'da aynı anda birden fazla iletişim kutusunun gösterilmesi sorunu giderildi. Bu durumda en üstteki iletişim kutusu kapatıldığında, doğru şekilde
RESUMED
konumuna taşınmak yerine en üstteki yeni iletişim kutusuSTARTED
Yaşam Döngüsü durumunda takılır. (aosp/2629401, b/286371387) - Gezinme Güvenli Arg'lar, gerçekte yürütülmüyorsa artık görevini istekli bir şekilde somutlaştırmamaktadır. (I0e385, b/260322841)
Bağımlılık Güncellemesi
- Gezinme menüsünü kullanarak oluşturma özelliği 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
yayınlandı. 2.7.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Oluşturma işleminde gezinmede,
Scaffold
kullanılırkenLifecycle.State.DESTROYED
ViewModel
özelliğine erişmeye çalışırken hata almanıza yol açan sorun giderildi. (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
yayınlandı. 2.7.0 sürümü bu kayıtları içerir.
2.6.0'dan sonraki önemli değişiklikler
Eşlik eden sanatçıdan animasyonlar
AnimatedContent
kararlı olduğu için kodu Eşlikli Gezinme Animasyonu'ndan tekrar Navigasyon Oluşturma'ya taşıyabildik.
Bu, AnimatedNavHost
ürününde mevcut olan özel geçişleri ayarlama desteğinin doğrudan NavHost
ürününde desteklendiği anlamına gelir.
Refakatçi Navigasyon Animasyonu'nda başka değişiklik yapılmayacak ve kısa süre içinde, Acompanist Compose'a geri dönmeye yönelik talimatlarla birlikte resmî olarak kullanımdan kaldırılacak. Ancak, en yeni Acompanist alfa sürümünü (0.31.2-alpha
) kullanıyorsanız başka API değişikliği yapılmasına gerek kalmadan taşıma rehberinin tam tersi olacaktır. (b/197140101)
Hata Düzeltmeleri
- Gezinme Üzerinden Oluşturma'daki NavHost, artık Etkinlik DURDURULDU ve DEVAM ETTİLDİĞİNDE DEVRE DIŞI BIRAKILDIKTAN SONRA, sistem geri çağrılarına doğru şekilde müdahale ediyor. (Icb6de, b/279118447)
Bağımlılık Güncellemeleri
- Gezinme artık
1.1.0
tarihinden itibaren1.5.0
oluşturma işlemine bağlıdır.
Sürüm 2.7.0-rc01
26 Temmuz 2023
androidx.navigation:navigation-*:2.7.0-rc01
yayınlandı. 2.7.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
NavHost
öğesinin bir parçası olarak oluşturulanEnterTransition
veExitTransition
lambdalarının,NavHost
besteden kaldırıldıktan sonra bile bellekte kalabilmesi sorunu düzeltildi. (I893d0)
Bilinen Sorunlar
- Navigasyon 2.6.x'te, popUpTo ile gezinirken
IllegalArgumentException
hatasına neden olabilen bir sorun var. Burada önerilen öneriye benzer şekilde grafiğinizi yeniden yapılandırarak bu istisnanın önüne geçebilirsiniz. (b/287133013)
Sürüm 2.7.0-beta02
28 Haziran 2023
androidx.navigation:navigation-*:2.7.0-beta02
yayınlandı. 2.7.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Oluşturma işleminde gezinme,
popUpTo
seçeneğiyle gezinmeyi kullanan özel geçişler için artık 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
yayınlandı. 2.7.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Navigasyon Oluşturma'daki
NavHost
özelliği,Activity
STOPPED
veRESUMED
sonrasında bile sistem geri çağrılarına doğru şekilde müdahale ediyor. (Icb6de, b/279118447)
Sürüm 2.7.0-alpha01
24 Mayıs 2023
androidx.navigation:navigation-*:2.7.0-alpha01
yayınlandı. 2.7.0-alpha01 sürümü bu kayıtları içerir.
Eşlik eden sanatçıdan animasyonlar
AnimatedContent
kararlı olduğu için kodu Eşlikli Gezinme Animasyonu'ndan tekrar Navigasyon Oluşturma'ya taşıyabildik.
Bu, AnimatedNavHost
ürününde mevcut olan özel geçişleri ayarlama desteğinin doğrudan NavHost
ürününde desteklendiği anlamına gelir.
Refakatçi Navigasyon Animasyonu'nda başka değişiklik yapılmayacak ve kısa süre içinde, Acompanist Compose'a geri dönmeye yönelik talimatlarla birlikte resmî olarak kullanımdan kaldırılacak. Ancak, en yeni Acompanist alfa sürümünü (0.31.2-alpha
) kullanıyorsanız başka API değişikliği yapılmasına gerek kalmadan taşıma rehberinin tam tersi olacaktır. (b/197140101)
Hata Düzeltmeleri
- Gezinme
2.6.0-rc02
bölümünde:popUpTo
ile gezinmenin ve görünümü yeniden oluşturmadan bir parçanın arka yığından çıkarılmasının sistemin tekrar çalışmayı durdurmasına neden olduğu Parçalarda Gezinmeyle ilgili sorun giderildi. (Ieb8d4, b/281726455)
Bağımlılık Güncellemeleri
- Gezinme artık
1.5.0-beta01
oluşturma uygulamasına bağlıdır.
Sürüm 2.6.0
Sürüm 2.6.0
7 Haziran 2023
androidx.navigation:navigation-*:2.6.0
yayınlandı. 2.6.0 sürümü bu kayıtları içerir.
2.5.0'dan bu yana Navigasyon'da yapılan önemli değişiklikler
NavBackStackEntry
öğesininarguments
veOnDestinationChangedListener
öğesine iletilenarguments
, artık hedefe gittiğinizde oluşturulan sabit bağımsız değişkenlerin yalnızca bir kopyasıdır. Bu, söz konusu Paketlerde yapılan değişikliklerinarguments
veya diğerOnDestinationChangedListener
örneklerine sonraki erişimlerde yansıtılmayacağı anlamına gelir.NavDeepLink
artık diziler için varsayılan değerleri desteklemektedir. Böylece, bağımsız değişkenin dizi türüyle eşlenecek tekrarlanan sorgu parametreleri desteklenir.NavType
artık ayrıştırılan iki değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor.NavType
özel alt sınıfları artıkserializeAsValue
öğesini geçersiz kılarak bir değeri Dize haline getirebilir. Böylece, hem serileştirme hem de seri durumdan kaldırma (parseValue
aracılığıyla) işlemi tamamenNavType
sınıfına dahil edilir.StringType
, belirtilenString
üzerindeUri.encode
çağrısı yapmak için artık bu yöntemi geçersiz kılar.
2.5.0 sürümünden sonra, Gezinme'de Yazma özelliğinde yapılan önemli değişiklikler
- Bir composable
NavHost
ile önizlenirken artık NavGraph'instartDestination
değeri varsayılan olarak gösterilecektir. 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 bir eşleşme olması gerektiğini unutmayın.navDeepLink
Kotlin DSL kullanarak boş birNavDeepLink
oluşturma girişiminde bulunulması durumunda artık derin bağlantının geçerli olması için URI, işlem ve/veya mime türü gerektiğini belirten bir hata analizi uyarısı gösterilecektir.
2.5.0'dan bu yana Parçalarla Gezinme özelliğinde yapılan önemli değişiklikler
NavHostFragment
artık sistemin geri düğmesine müdahale etmez. Bu, temelFragmentManager
öğesinin sistemi geri işleyebilmesini sağlar. Bu işlem, Parça1.7.0-alpha01
ve sonraki sürümlerin Android U cihazlarda Uygulama İçi Tahmine Dayalı Geri animasyonu sağlamasına olanak tanır.- Parçalarla Gezinme kullanılırken
FragmentManager
öğesinin arka yığınına bir parça ekleyen birFragmentTransaction
işlemini manuel olarak yapmaya çalıştığınızdaIllegalArgumentException
hatası döndürülür. Parçaları her zamannavigate()
API'si aracılığıyla eklemeniz gerekir. app:data
ve gezinme XML dosyasının etkinlik öğesindekiapp:dataPattern
özelliklerindeki yer tutucu olarak tam${applicationId}
dizesini kullanırken, yer tutucu, şişirme sonrasında otomatik olarak bağlamınpackageName
ile doldurulur.FragmentNavigator
,NavBackStackEntries
ürününe gidip açılırken geçiş API'lerini artık kullanıyor. Yani,NavBackStackEntry
Lifecycle
artık sonLifecycle.State
öğesini taşımadan önce giren ve çıkan parça özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.DialogFragmentNavigator
,NavBackStackEntries
ürününe gidip açılırken geçiş API'lerini artık kullanıyor. Bu,NavBackStackEntry
Lifecycle
öğesininDESTROYED
paketine geçmeden önceDialogFragment
Lifecycle
öğesininDESTROYED
öğesine geçmesini bekleyeceği anlamına gelir.NavHostFragment
artık yalnızcaonCreate()
sonrasına değil,NavHostFragment
öğesiFragmentManager
öğesine eklenir eklenmez hemen sonraNavController
öğesini almanıza izin veriyor.- Navigasyon'un Dinamik Özellik Modülleri desteği artık ayrıntılı Play Özellik Dağıtımı Kitaplığı'na bağlıdır.
- Navigasyon Güvenli Aramaları artık Android Gradle Eklentisi'nin 7.3.0 sürümüne bağlıdır. Bu, ürünün artık yalnızca 7.3.0 ve üzeri sürümlerle uyumlu olduğu anlamına gelir.
2.5.0 sürümünden sonra NavigationUI'da yapılan önemli değişiklikler
NavigationUI
, bir gezinme grafiğinin kimliğiniAppBarConfiguration
öğesine aktarırken (örneğin,Menu
aracılığıyla) grafikteki her hedefi yanlış bir şekilde üst düzey hedef olarak işaretlemek yerine yalnızca ilgili gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmez. Aynı işleve,AppBarConfiguration
üzerindeki yeniisTopLevelDestination
işleviyle kendi kodunuza da erişebilirsiniz.- Üst uygulama çubuğuyla çalışmak için
NavigationUI
içerisindekisetupWithNavController
entegrasyonları, artıkandroid:label
içinde bulunanReferenceType
bağımsız değişkenlerininR.string
değerlerini, otomatik olarak oluşturulan kaynak tamsayısı çıktısı vermek yerine Dize değerlerine ayrıştıracak. NavigationUI
artık seçili birMenuItem
üzerinden gezinilemediğinde günlükleri sağlıyor.
Sürüm 2.6.0-rc02
24 Mayıs 2023
androidx.navigation:navigation-*:2.6.0-rc02
yayınlandı. 2.6.0-rc02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Fragments'ta Gezinme ile ilgili olarak,
popUpTo
ile gezinmenin ve görünümü yeniden oluşturmadan bir parçanın arka yığından çıkarılmasının sistemin tekrar çalışmayı durdurmasına neden olduğu bir sorun düzeltildi. (Ieb8d4, b/281726455)
Sürüm 2.6.0-rc01
10 Mayıs 2023
androidx.navigation:navigation-*:2.6.0-rc01
yayınlandı. 2.6.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Parçalı Gezinme özelliğinde,
onResume()
yaşam döngüsü geri çağırma işlevindepopUpTo
ile gezinerek bir parçayı kaldırmanınIllegalStateException
'ye neden olmasına neden olan bir sorun düzeltildi. (I21884, b/279644470)
Sürüm 2.6.0-beta01
19 Nisan 2023
androidx.navigation:navigation-*:2.6.0-beta01
yayınlandı. 2.6.0-beta01 sürümü bu kayıtları içerir.
Yeni Özellikler
NavBackStackEntry
artık özel birtoString
uygulaması sağlıyor. (Iff00b)
Hata Düzeltmeleri
- Parçalarla Gezinme kullanılırken
FragmentManager
öğesinin arka yığınına bir parça ekleyen birFragmentTransaction
işlemini manuel olarak yapmaya çalıştığınızdaIllegalArgumentException
hatası döndürülür. Parçaları her zamannavigate()
API'si aracılığıyla eklemeniz gerekir. (I6d38e) - Aynı çerçevede hem giriş ekleyen bir
navigate
hem de bunu kaldıran birpopBackStack
olduğunda, arka yığında elde edilen en üst giriş artık tutarlı bir şekildeRESUMED
Lifecycle.State
öğesine geri döner. (Id8067, b/276495952)
Sürüm 2.6.0-alpha09
5 Nisan 2023
androidx.navigation:navigation-*:2.6.0-alpha09
yayınlandı. Sürüm 2.6.0-alpha09 bu kayıtları içerir.
Hata Düzeltmeleri
- Bir
NavDestination
, null yapılamayanNavArgument
değeri içeriyorsa bu hedef yolunun, null yapılamayanNavArgument
ile aynı ada sahip bağımsız değişkenler için yer tutucular içermesine neden olacak şekilde geçersiz rotaya yönelik kontroller düzeltildi. (Ic62bf, b/274697949) - Gezinme işleminde
Action/MimeType
öğesinin eşleştiğiNavDestination
tarafından gerekli kılınan boş olmayan birNavArgument
eksikseAction/MimeType
'e dayalı derin bağlantı gezinmeleri artık başarısız olacak. (Ibfa17, b/271777424) NavController
, önceki grafikle aynı rota ve hedeflere sahip bir grafik ayarladığında, artık mevcut grafik düğümlerini ve arka yığın hedeflerini düzgün şekilde yeni örneklerle değiştirir. Bu düzeltme, Gezinme Yazma'da durum kaydedilmedenonLaunchSingleTop
kullanılırken oluşan kilitlenmeyi düzeltir. Bu değişiklik, kök grafik derlemeleri ve yanlış arka yığınla ilişkili hedeflere gidildiğinde oluşan hatayı da düzeltir. (I5bc58, b/275258161, b/275407804)
Sürüm 2.6.0-alpha08
22 Mart 2023
androidx.navigation:navigation-*:2.6.0-alpha08
yayınlandı. 2.6.0-alpha08 sürümü bu kayıtları içerir.
Yeni Özellikler
NavHostFragment
artık yalnızcaonCreate()
sonrasına değil,NavHostFragment
öğesiFragmentManager
öğesine eklenir eklenmez hemen sonraNavController
öğesini almanıza izin veriyor. (Ic6382, b/220186282)
Hata Düzeltmeleri
- Null yapılamayan bir bağımsız değişken içeren iç içe yerleştirilmiş bir grafik açılırken ortaya çıkan
NullPointerException
düzeltildi. (6b3581, b/249988437) popUpTo
ile navigasyon yaptıktan sonra sistemi tekrar kullanırkenNavController
durumu doğru girişe gelecek. (I3a8ec, b/270447657)FragmentNavigator
, arka yığın sistem geri veyapopBackStack()
aracılığıyla çalıştırıldığında ve işlemin parça için efekt kullanıp kullanmadığıyla ilgili girişleri düzgün şekilde pop-up pencerede gösterir. (I81bdf)- Navigasyon kullanmadan
FragmentNavigator
FragmentManager
öğesine parça eklemek artık kilitlenmeye neden olmayacak. (b17204, b/274167493)
Bağımlılık Güncellemeleri
- Navigasyon artık Yaşam Döngüsü
2.6.1
baz alınarak oluşturulmuş. (586fe7) - Navigasyon artık SavedState
1.2.1
kullanımına bağlıdır. (078e4e) - Gezinme artık ProfileInstaller
1.3.0
sağlayıcısına bağlıdır. (512f0c)
Sürüm 2.6.0-alpha07
8 Mart 2023
androidx.navigation:navigation-*:2.6.0-alpha07
yayınlandı. 2.6.0-alpha07 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Rota alan
getBackStackEntry
,popBackStack
,clearBackStack
API varyantları artık null bağımsız değişkenlerle ve null özellikli sorgu parametreleriyle rota kalıpları alıyor (I22294, b/269302500) NavController
öğesindenclearBackStack()
çağrısının, temizlenen arka yığınla ilişkilendirilen parça yöneticisindeki kayıtlı durumu temizlememesine neden olan sorun düzeltildi. (Ic1cce, b/271190202)- 2.6.0-alpha06 sürümünde sekmeler arasında sistem kullanılırken
BottomNavigationView
içinde yanlışMenuItem
değerinin vurgulanmasına neden olan bir regresyon düzeltildi. (I634f6, b/270447657) - 2.6.0-alpha06 sürümlerindeki regresyon,
Animation
kullanıldığındaNavBackStackEntry
öğelerinin DEVAM EDİLDİ durumuna taşınmamasına neden olan düzeltildi. (Ib3589, b/269646882)
Sürüm 2.6.0-alpha06
22 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha06
yayınlandı. 2.6.0-alpha06 sürümü bu kayıtları içerir.
Yeni özellikler
- Bir composable
NavHost
ile önizlenirken artık NavGraph'instartDestination
değeri varsayılan olarak gösterilecektir. (I2b89f)
API Değişiklikleri
- Tüm
NavController
navigate
aşırı yüklemeleri, ana iş parçacığında çağrıldıklarından emin olmak için artık@MainThread
ile notlandırılıyor. (I2c0b0, b/263427111)
Hata Düzeltmeleri
- Dinamik Parçalı Gezinme kullanılırken gezinmeye başlanırken oluşan kilitlenme giderildi. (I3ee29, b/268360479)
- Sistem geri düğmesiyle başka bir parçaya gidildiğinde alt çubuğun doğru seçili öğeye güncellenmemesi hatası düzeltildi (If559f, b/269044426)
Bilinen Sorunlar
- Parçalarla Gezinme kullanılırken
Animation
API'leri kullanılırkenNavBackStackEntry
Yaşam DöngüsüRESUMED
değerine ulaşamıyor. (b/269646882) - Parçalarla Gezinme kullanırken ve
BottomNavigation
ile gezinirken birden fazla giriş içeren bir arka yığını geri yüklemeyi denersenizBottomMenuItem
doğru şekilde güncellenmez. (b/270447657) - Parçalarla Gezinme kullanılırken, durumu geri yükledikten sonra
NavBackStackEntry
Lifecycle
parçasının parçasıDESTROYED
olduğundaDESTROYED
almıyor . (b/270610768)
Sürüm 2.6.0-alpha05
8 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha05
yayınlandı. 2.6.0-alpha05 sürümü bu kayıtları 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 bir eşleşme olması gerektiğini unutmayın. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
,NavBackStackEntries
ürününe gidip açılırken geçiş API'lerini artık kullanıyor. Yani,NavBackStackEntry
Lifecycle
artık sonLifecycle.State
öğesini taşımadan önce giren ve çıkan parça özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir. (I3cb19, b/238686802)DialogFragmentNavigator
,NavBackStackEntries
ürününe gidip açılırken geçiş API'lerini artık kullanıyor. Bu,NavBackStackEntry
Lifecycle
öğesininDESTROYED
paketine geçmeden önceDialogFragment
Lifecycle
öğesininDESTROYED
öğesine geçmesini bekleyeceği anlamına gelir. (I53ee5, b/261213893)
API Değişiklikleri
NavigatorState
, artıkNavigator
öğelerininNavBackStackEntries
öğelerini araLifecycle.State
öğelerine taşımasına izin vermek içinprepareForTransition
API'si sağlıyor. (I42c21, b/238686802)NavGraphNavigator
veyaComposeNavigator
ile ilişkili arka yığına artık birbackstack
mülkü aracılığıyla erişebilirsiniz.ComposeNavigator
artık bir gezinme veyapopBackStack
işlemini yürüten birNavBackStackEntry
'yi tamamlandı olarak işaretlemek içinonTransitionComplete()
geri çağırmasını da gösteriyor. (I02062, I718db, b/257519195)
Hata Düzeltmeleri
push/popWithTransition
API'leri kullanılırken gezgin durumu artık işlemsiz olacak ve giriş zaten işleniyor. (Iadbfa, b/261213893)launchSingleTop
, iç içe yerleştirilmiş birNavGraph
ile kullanıldığında orijinal hedeftenstartDestination
hedefine kadar olan tüm hedefler yalnızca arka yığının en üstüne düzgün bir şekilde eklenir. (Id4bea, b/253256629)- Navigasyon artık aynı hedefe gidildiğinde
launchSingleTop
işareti "true" (doğru) değerine ayarlıykenDialogFragment
örneğini düzgün şekilde değiştirecek. (I45b5a, b/149572817) - Gezinme SafeArgs, artık tam olarak 19 karakter uzunluğunda bağımsız değişkenler kullanıldığında 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
yayınlandı. 2.6.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
NavType
özel alt sınıfları artıkserializeAsValue
öğesini geçersiz kılarak bir değeri Dize haline getirebilir. Böylece, hem serileştirme hem de seri durumdan kaldırma (parseValue
aracılığıyla) işlemi tamamenNavType
sınıfına dahil edilir.StringType
, belirtilenString
üzerindeUri.encode
çağrısı yapmak için artık bu yöntemi geçersiz kılar. (Ie5213, b/247637434)NavigationUI
artık seçili birMenuItem
üzerinden gezinilemediğinde günlükleri sağlıyor. (I2af5a, b/247730357)
Hata Düzeltmeleri
- Gezinme derin bağlantıları artık grafik başlatma yerine geç olarak ayrıştırılıyor. Bu sayede uygulama başlarken daha iyi performans elde edilebilir. (Iab0ab)
- Boş varsayılan bağımsız değişkenlere sahip bir hedefe derin bağlantı oluşturduktan sonra yukarı gitmenin neden olduğu kilitlenme düzeltildi. (I51c24, b/243183636)
Bağımlılık Güncellemesi
- Navigasyon'un Dinamik Özellik Modülleri desteği artık ayrıntılı Play Özellik Dağıtımı Kitaplığı'na bağlıdır. (Ib4ddc)
- Navigasyon Güvenli Aramaları artık Android Gradle Eklentisi'nin 7.3.0 sürümüne bağlıdır. Yani artık yalnızca 7.3.0 ve üzeri sürümlerle uyumludur. (I47e49)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.navigation:navigation-*:2.6.0-alpha03
yayınlandı. 2.6.0-alpha03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme
2.5.3
'nden:NavHost
,Crossfade
için oluşturabileceğiniz bir hedef olmadığında artıkNoSuchElementException
öğesine neden olmayacak. Şimdi sadece beste atlanacak. (Ieb46e, b/253299416) - Gezinme
2.5.3
bölümünde: Bir hedef arka yığından çıkarıldığında kayıtlı Oluşturma durumunun (ör.rememberSaveable
kullanımlarının) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)
Bağımlılık Güncellemeleri
- Navigasyon artık Parça
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
yayınlandı. 2.6.0-alpha02 sürümü bu kayıtları içerir.
Davranış Değişiklikleri
NavigationUI
, bir gezinme grafiğinin kimliğiniAppBarConfiguration
öğesine aktarırken (örneğin,Menu
aracılığıyla) grafikteki her hedefi yanlış bir şekilde üst düzey hedef olarak işaretlemek yerine yalnızca ilgili gezinme grafiğinin başlangıç hedefini üst düzey hedef olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmez. Aynı işleve,AppBarConfiguration
üzerindeki yeniisTopLevelDestination
işleviyle kendi kodunuza da erişebilirsiniz. (Ie936e, b/238496771)
Hata Düzeltmeleri
navigation:navigation-fragment
bileşeni artık Parça1.5.2
sürümüne bağlıdır. (I00ba4)- İletişim kutusu gibi bir
FloatingWindow
hedefine gidildiğinde seçilen 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
yayınlandı. 2.6.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Üst uygulama çubuğuyla çalışmak için
NavigationUI
içerisindekisetupWithNavController
entegrasyonları, artıkandroid:label
içinde bulunanReferenceType
bağımsız değişkenlerininR.string
değerlerini, otomatik olarak oluşturulan kaynak tamsayısı çıktısı vermek yerine Dize değerlerine ayrıştıracak. (I5f803, b/167959935) NavDeepLink
artık diziler için varsayılan değerleri desteklemektedir. Böylece, bağımsız değişkenin dizi türüyle eşlenecek tekrarlanan sorgu parametreleri desteklenir.NavType
artık ayrıştırılan iki değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor. (Id68c3, b/209977108)app:data
ve gezinme XML dosyasının etkinlik öğesindekiapp:dataPattern
özelliklerindeki yer tutucu olarak tam${applicationId}
dizesini kullanırken, yer tutucu, şişirme sonrasında otomatik olarak bağlamınpackageName
ile doldurulur. (Iaabde, b/234223561)navDeepLink
Kotlin DSL kullanarak boş birNavDeepLink
oluşturma girişiminde bulunulması durumunda artık derin bağlantının geçerli olması için URI, işlem ve/veya mime türü gerektiğini belirten bir hata analizi uyarısı gösterilecektir. (I08d2f, b/154038883)
API Değişiklikleri
android:label="{arg}"
biçimindeki bağımsız değişkenlere sahip dinamik etiketleri Dize olarak ayrıştırmak için yeniNavDestination
uzantı işlevi eklendi.R.string
değerlerini Dize değerlerine çözümleyerekReferenceType
bağımsız değişkenlerini destekler. (I07d89, b/236269380)
Davranış Değişiklikleri
- NavBackStackEntry'nin
arguments
veOnDestinationChangedListener
öğesine aktarılanarguments
, artık hedefe gittiğinizde oluşturulan sabit bağımsız değişkenlerin yalnızca bir kopyasıdır. Bu, söz konusu Paketlerde yapılan değişikliklerinarguments
veya diğerOnDestinationChangedListener
örneklerine sonraki erişimlerde yansıtılmayacağı anlamına gelir. (I676f5)
Hata Düzeltmeleri
- Navigasyon
2.5.2
'dan: Dinamik Gezinme artık diğer modüllerdeki Etkinlik hedeflerini bu modüllere gitmeden önce düzgün bir şekilde yüklemeyi deniyor. (Ia2c16, b/240292838) - Gezinme
2.5.2
bölümünde: Navigasyon, aynı hedefe gidilirken velaunchSingleTop
işareti doğru olarak ayarlandığında artık Fragment örneğinin yerini alacak. (I5a2f1, b/237374580) - Gezinme
2.5.2
bölümünde: Yeni açılan başlangıç hedefiyle üst öğe paylaşan çift iç içe yerleştirilmiş grafiğe gitmenin neden olduğuIllegalStateException
sorunu düzeltildi. (I9f7cb, b/243778589)
Sürüm 2.5
Sürüm 2.5.3
24 Ekim 2022
androidx.navigation:navigation-*:2.5.3
yayınlandı. Sürüm 2.5.3 bu kayıtları içerir.
Hata Düzeltmeleri
Crossfade
için oluşturulabilecek bir hedef olmadığındaNavHost
artık birNoSuchElementException
hedefine neden olmayacak. Şimdi sadece beste atlanacak. (Ieb46e, b/253299416)- Bir hedef arka yığından çıkarıldığında kayıtlı Oluşturma durumunun (ör.
rememberSaveable
kullanımlarının) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)
Sürüm 2.5.2
7 Eylül 2022
androidx.navigation:navigation-*:2.5.2
yayınlandı. Sürüm 2.5.2 bu kayıtları içerir.
Hata Düzeltmeleri
- Dinamik Gezinme artık diğer modüllere gitmeden Etkinlik hedeflerini düzgün şekilde yüklemeyi deniyor. (Ia2c16, b/240292838)
- Gezinme özelliği artık aynı hedefe gidilirken ve
launchSingleTop
işaretini doğru olarak ayarlarken Fragment örneğinin yerini alacaktır. (I5a2f1, b/237374580) - Yeni açılan başlangıç hedefiyle bir üst öğeyi paylaşan, iç içe yerleştirilmiş çift grafiğe gidilmesinden kaynaklanan
IllegalStateException
düzeltildi. (I9f7cb, b/243778589)
Bağımlılık Güncellemesi
2.5.2
gezinmesi artık1.5.2
Parçasına bağlı. (aosp/2178734)
Sürüm 2.5.1
27 Temmuz 2022
androidx.navigation:navigation-*:2.5.1
yayınlandı. Sürüm 2.5.1 bu kayıtları içerir.
Hata Düzeltmeleri
Navigation Safe Args
,Bundle
içine kaydedilen özel bağımsız değişken türleri kullanılırken, oluşturulan sınıflarda artık desteği sonlandırma uyarılarına neden olmayacak. (Id86ed, b/237725966)
Bağımlılık Güncellemeleri
- Gezinme kitaplığı artık Yaşam Döngüsü
2.5.1
'ne bağlıdır. (Ib4451) - Gezinme kitaplığı artık
1.5.1
etkinliğine bağlıdır. (I3efe8) - Gezinme kitaplığı artık Parça
1.5.1
'ya bağlıdır. (I56177)
Sürüm 2.5.0
29 Haziran 2022
androidx.navigation:navigation-*:2.5.0
yayınlandı. Sürüm 2.5.0 bu kayıtları içerir.
2.4.0'dan sonraki önemli değişiklikler
- CreationExtras Integration (Oluşturma Ekstraları Entegrasyonu) -
Navigation
, artık Lifecycle2.5.0
'ınCreationExtras
aracılığıyla durum bilgisizViewModelProvider.Factory
sağlayabilir.
Navigasyon Güvenli Aramaları
Navigation Safe Args
,Android Gradle Plugin
bağımlılığını7.0.4
tabanlı olacak şekilde yükseltti ve7.0
tarihinden önce AGP sürümleri için uyumluluğu azalttı.- appId ad alanı yerine build.gradle özelliği için destek eklendi.
Diğer Değişiklikler
visibleEntries
API artık deneysel değildir veNavController
göre şu anda hedefi görünür olan tüm girişleri almak için bir işlev sağlar.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.navigation:navigation-*:2.5.0-rc02
yayınlandı. 2.5.0-rc02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme Oluşturma
NavHost
kullanılırken alt hedefler arasında hızlı geçişin neden olduğu kilitlenme düzeltildi. (I3979a, b/234054916) applicationId
içermeyen birapplicationIdSuffix
ve ad alanı kullanıldığında veyaapplicationId
ile ad alanı farklı olduğundaNavigation SafeArgs
artık kilitlenmeyecek. (I754b1, b/233119646)NavArgument
artık bağımsız değişkenin dahili değerlerini gösteren özel birtoString()
işlevine sahip. (I900a8)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.navigation:navigation-*:2.5.0-rc01
yayınlandı. 2.5.0-rc01 sürümü bu kayıtları içerir.
Yeni Özellikler
<deeplink>
öğelerininnavigation.xml
dosyanızdaki<activity>
öğelerinin içine yerleştirilmesine karşı uyarıda bulunan yeni bir hata analizi kuralı eklendi.(Ic15a5, b/178403185)
Hata Düzeltmeleri
NavHost
veDialogHost
alanlarındaki composable kapsamlar artık beklenen sırada imha ediliyor. Diğer bir ifadeyle, iç composabled'lar dış composable'lardan önce atılıyor. (I157e6)- Navigation SafeArgs artık önbellekte yeniden konumlandırılabilmesi için
ArgumentsGenerationTask
içindePathSensitivity.RELATIVE
kullanıyor. Bu, önbellek girişinin artık bir CI derlemesinden yerel derlemeye yeniden kullanılabileceği anlamına gelir. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetector
hata analizi kuralı,getBackStackEntry()
çağrısını çevreleyenremember
çağrısının birNavBackStackEntry
nesnesini anahtar olarak geçirmesini sağlayacak şekilde güncellendi.(Ib7081, b/227382831)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.navigation:navigation-*:2.5.0-beta01
yayınlandı. 2.5.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
DialogNavigator
, birdismiss()
çağrısı yürütürken artıkpopWithTransition
kullanıyor. Bu değişiklik,dialog
hedefindeViewModel
kullanıldığında sistemi geri kullanarak veya iletişim kutusu dışına dokunarak iletişim kutusunu kapatırkenIllegalStateException
sorununa yol açan yarış durumunu düzeltir. (Id7376, b/226552301)
Bağımlılık Güncellemeleri
- Navigasyon artık Yaşam Döngüsü
2.5.0-beta01
'ne dayalı. Birden fazla arka grup kullanılırken,NavHost
birincil olmayan bir alt gezinme sekmesinde başka birNavHost
içine yerleştirilirken birIllegalStateException
düzeltilir.
Sürüm 2.5.0-alpha04
6 Nisan 2022
androidx.navigation:navigation-*:2.5.0-alpha04
yayınlandı. Sürüm 2.5.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
visibleEntries
artık deneme aşamasında değil. (I4829f, b/225394514)
Hata Düzeltmeleri
- NavHost, hangi girişlerin oluşturulacağını belirlemek için artık
NavController
içindekivisibleEntries
öğesini kullanıyor. Bu, iç içe yerleştirilmiş NavHost kullanılırken içNavHost
artık düzgün bir şekilde canlandırılacağı anlamına gelir. (I4ba2b, b/225394514) NavController
tarafından sağlananvisibleEntries
StateFlow
artık geçerli Yaşam Döngüsü durumu yerine girişin maksimum Yaşam Döngüsü durumunu temel alıyor. Bu,navController
öğesinin ana makine yaşam döngüsü BAŞLANGIÇ değerinin altına düşse bile görünür durumdaki bütünlerin listesinin aynı kalacağı anlamına gelir. (I9e2a8, b/225394514)SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatıldığında 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 Uris'i değer içermeyen tek bir sorgu parametresiyle 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
Navigation Safe Args
artık kilitlenmeyecek veAndroidManifest.xml
mevcut değildir. (I17ccf, b/227229815)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.navigation:navigation-*:2.5.0-alpha03
yayınlandı. 2.5.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
- Artık
ViewModel
oluşturmak içinCreationExtras
ileby navGraphViewModels
adlı iş ortağına geçebilirsiniz. (I29217, b/217618359)
Hata Düzeltmeleri
NavDeepLinks
, artık rotalara/derin bağlantı URI'larına yerleştirilmiş, kodlanmış yeni satır karakterlerini düzgün bir şekilde destekliyor. (I513d1, b/217815060)CreationExtras
artık ViewModel'leri oluşturmak içinNavBackStackEntries
ile birlikte kullanıldığında düzgün çalışacak. (I69161, b/217617710)- Navigasyon Güvenli Aramaları artık AndroidManifest'teki paket 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
yayınlandı. 2.5.0-alpha02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme
2.4.1
bölümünde:NavHostFragment
, iç içe yerleştirilmiş grafiklerle görüntüleme bağlamayı kullanırkenOnBackPressedDispatcher
özelliğini artık doğru şekilde ayarlayacak. (Ifbb51, b/214577959) - Gezinme
2.4.1
bölümünde: İç içe yerleştirilmiş birden fazlaNavGraph
üzerinden derin bağlantı kullanılıyorsa arka yığın artık düzgün şekilde ara başlangıç hedeflerini içerecektir. (I504c0, b/214383060)
Sürüm 2.5.0-alpha01
26 Ocak 2022
androidx.navigation:navigation-*:2.5.0-alpha01
yayınlandı. 2.5.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
NavBackStackEntry
artık Yaşam Döngüsü2.5.0-alpha01
kapsamında sunulan ViewModel CreationExtras ile entegre olur. (Ib9fe2, b/207012490)
Hata Düzeltmeleri
- Bir Fragment'ın
onCreate()
öğesindenby navGraphViewModels()
aracılığıyla oluşturulan birViewModel
öğesine erişiminIllegalStateException
ile başarısız olması sorunu düzeltildi. (I8a14d) NavDeepLink
'ler artık gereksiz şekilde bağımsız değişkenlerin kodunu iki kez çözmeyecektir. Bu da doğru bağımsız değişkenlerin son hedefinize aktarılacağı anlamına gelir. (I31b0a, b/210711399)
Güvenli Aramalar
- Güvenli Aramalar artık Android Gradle Eklentisi'nin 7.0.4 sürümüne bağlıdır. Bu, Navigation Safe Args hizmetinin artık Android Studio'nun 7.0'dan önceki sürümleriyle uyumlu olmayacağı, ancak artık Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle de uyumlu olacağı anlamına geliyor. (I41c88, b/213086135, b/207670704)
Sürüm 2.4.2
Sürüm 2.4.2
6 Nisan 2022
androidx.navigation:navigation-*:2.4.2
yayınlandı. 2.4.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme
2.5.0-alpha03
üzerinden desteklendi:NavDeepLinks
artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün bir şekilde desteklemektedir. (I513d1, b/217815060) - Gezinme
2.5.0-alpha03
üzerinden geri alındı: Navigation SafeArgs artık AndroidManifest'teki paket yerinebuild.gradle
içinde tanımlanan ad alanının kullanılmasını destekler. (I659ef, b/217414933) 2.5.0-alpha04
gezinme menüsünden geri alındı: Ad alanları kullanılırkenNavigation Safe Args
artık kilitlenmeyecek veAndroidManifest.xml
mevcut değildir. (I17ccf, b/227229815)- Gezinme
2.5.0-alpha04
özelliğinden geri alı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
yayınlandı. 2.4.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- İç içe yerleştirilmiş grafiklerle görünüm bağlama kullanılırken
NavHostFragment
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 arka yığın, artık düzgün şekilde ara başlangıç hedeflerini içerecektir. (I504c0, b/214383060) - Gezinme
2.5.0-alpha01
özelliğinden geri alındı:by navGraphViewModels()
aracılığıyla oluşturulan bir ViewModel'e (Fragment'ınonCreate()
) erişimindenIllegalStateException
ile başarısız olunması sorunu düzeltildi. (I8a14d) - Gezinme
2.5.0-alpha01
'ten geri alındı:NavDeepLink
'ler artık bağımsız değişkenlerin kodunu iki kez çözmez. Böylece, kodu doğru şekilde çözülmüş bağımsız değişkenler artık son hedefinize aktarılır. (I31b0a, b/210711399) - Gezinme
2.5.0-alpha01
üzerinden desteklendi: Safe Args artık Android Gradle Eklentisi'nin 7.0.4 sürümüne bağlıdır. Bu, Navigasyon Güvenli Arama'ların artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı, ancak artık Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)
Sürüm 2.4.0
Sürüm 2.4.0
26 Ocak 2022
androidx.navigation:navigation-*:2.4.0
yayınlandı. 2.4.0 sürümü bu kayıtları içerir.
2.3.0'dan sonraki önemli değişiklikler
- Tüm Navigasyon eserleri Kotlin ile yeniden yazıldı. Bu, genel öğeleri (
NavType
alt sınıfları gibi) kullanan sınıfların boş değer atanmasını artırdı. Daha önce-ktx
yapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı.-ktx
yapıları yayınlanmaya devam eder ancak tamamen boş olur. navigation-fragment
yapısı artık yeniAbstractListDetailFragment
aracılığıyla önceden oluşturulmuş iki bölmeli düzen uygulamasını içermektedir. Bu parça, örnek uygulamamızda gösterildiği gibi, liste bölmesini (alt sınıfınızın sağladığı) ve uygulaması olarakNavHostFragment
kullanan bir ayrıntı bölmesini yönetmek için birSlidingPaneLayout
kullanır.NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
değiştiğinde tetiklenen birFlow
sağlar. Bu akış,OnDestinationChangedListener
manuel olarak yönetmeye alternatif olarak kullanılabilir.- NavController artık deneysel
visibleEntries
özelliği aracılığıyla tüm görünürNavBackStackEntry
örneklerinin listesiniStateFlow
olarak alma yeteneği sunuyor. - Artık
NavType
sınıfını özel NavType'lar oluşturacak şekilde genişletmek mümkündür. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL) desteklenir. Navigasyon artık, özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek
findStartDestination()
vegetHierarchy()
API'leri sunuyor.findStartDestination()
,NavGraph
üzerindeki bir uzantı işlevidir vestartDestination
öğesinin kendisi iç içe yerleştirilmiş birNavGraph
olsa bile grafiğe gittiğinizde görüntülenen gerçek başlangıç hedefini bulur.getHierarchy()
,NavDestination
üzerinde bulunan ve belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilecek bir işlevdir.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
BottomNavigationView
alanNavigationUI
yöntemleri, bunun yerine1.4.0
Malzemesi'nde kullanıma sunulan üst sınıfı (NavigationBarView
) alacak şekilde güncellendi. Bu, söz konusu yöntemlerinNavigationRailView
ile kullanılmasına olanak tanır.XML aracılığıyla bir
<action>
öğesi şişirilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"
söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir.Safe Args artık her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturuyor. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Navigasyon Rotaları ve Kotlin DSL
Navigasyon'un önceki sürümlerinde her hedef, sabit bir tam sayı kimliğine sahipti ve bu kimlik sayesinde hedefi eşdüzey hedeflerden benzersiz bir şekilde tanımlayarak bu hedefe doğrudan veya bir işlem aracılığıyla navigate()
gerçekleştirebiliyordunuz. Bu yöntem, özellikle gezinme grafiğinizi XML'de tanımladığınızda ve otomatik olarak oluşturulmuş R.id
sabitlerini veya derleme zamanında kod oluşturmak için bu sabit değerleri kullanan Güvenli Arg'ları kullanabildiğiniz durumlarda geçerli ve kullanışlı olmaya devam etse de, bu benzersiz tam sayı sistemi, Gezinme Kotlin DSL aracılığıyla çalışma zamanında programlı olarak oluşturulan tamamen dinamik grafikleri desteklemek için gerekli olan anlamsal anlamı ve ifade gücünü yakalayamadı.
Bu sürümde, navigasyon grafiğinde bir varış noktasının rotasına göre benzersiz şekilde tanımlanmasını sağlayan yeni bir seçenek sunuluyor. Rota, hedefe giden benzersiz yolu tanımlayan bir String
'dir. Hedef kimliği kullanan tüm Kotlin DSL yöntemleri kullanımdan kaldırıldı ve bunların yerini rotayı alan eşdeğer bir API aldı.
Her rota, söz konusu hedefi tanımlayan Uri
öğesinin "yol" bölümü olarak değerlendirilmelidir (ör. home
, profile/{userId}
, profile/{userId}/friends
vb. Bir hedefin kimliği belirli bir içerik parçasıyla ilişkilendirildiğinde, bu dinamik bağımsız değişkenler dolaylı derin bağlantılarla aynı kurallara uygun şekilde rotanın bir parçası olmalıdır.
Daha önce yalnızca kimlik alan tüm NavController
API'lerinde artık String
rotasını kullanan bir aşırı yük bulunuyor. Buna navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
dahildir.
Bu durum, API'de bazı sorunlara yol açmıştır:
- Kotlin DSL'sindeki
popUpTo
Kotlin özelliği, kullanımdan kaldırılmış ve yerinipopUpToId
almıştır. getStartDestination()
API, kullanımdan kaldırılmış ve yerinigetStartDestinationId()
almıştır.
Kimliğe göre gezinmenin aksine, rotaya göre gezinmede örtülü derin bağlantılarla aynı kurallar uygulanır. İç içe yerleştirilmiş grafiklerdeki herhangi bir hedefe doğrudan gidebileceğiniz bu rotalar, her bir hedefe harici olarak görünür bir derin bağlantı eklemeden bu rotaların çok modüllü projelerde kullanılabilir olmasını sağlar.
Gezinme Oluştur
navigation-compose
yapısı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızda hedef olarak @Composable
işlevlerini kullanır.
Bu sürüm aşağıdakileri sağlar:
composable
vedialog
hedeflerini kullanarak bir Kotlin DSL kullanarak gezinme grafiğinizi oluşturmanıza olanak tanıyan birNavHost
kompozisyonunun yanı sıra Accompanist Navigation Material'dakiler gibi isteğe bağlı gezginler için destek.- Hedefler arasında geçiş için zorunlu destek. Eşlikli Gezinme Animasyonu, deneysel Compose API'leriyle giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
- Bir
Lifecycle
öğesinin her composable hedef ile kapsama alınması. Her hedef, yalnızca herhangi bir giriş geçişi bittiğindeRESUMED
durumuna ulaşır ve çıkış yapılan geçişler başladığında hemenSTARTED
düzeyine düşer. Böylece, yalnızcaLifecycle
RESUMED
olduğunda birnavigate
çağrısı tetikleyerek tümIllegalStateException
ve çoklu dokunma sorunlarından kaçınabilirsiniz. ViewModel
'in kapsamı (Yaşam Döngüsü ViewModel Compose'unviewModel()
API'si2.4.0
veya hedef düzeyde Hilt Navigation Compose1.0.0
'unhiltViewModel()
API'si aracılığıyla yapılandırma değişikliklerinden sonra dayanacak ve arka yığında yer alacak (composable içeriğiniz başka bir şekilde imha edildiğinde) ve ViewModel'inonCleared()
öğesinde bu durumla ilişkili durumun kalıcı olarak atılmasını ve temizlenmesini belirten bir sinyal sağlar.NavBackStackEntry
rememberSaveable
durumunun hedef düzeyinde kapsama alınması, bir hedefe döndüğünüzde tüm composable durumlarının otomatik olarak kaydedilip otomatik olarak geri yüklenmesini sağlar.- İşlem tamamlandıktan ve yeniden oluşturulduktan sonra
NavController
alanının ve hedefinin durumunun kaydedilmesi ve geri yüklenmesi için tam destek. - Sistem geri düğmesiyle otomatik entegrasyon.
Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve bir sonucu önceki hedeflere döndürme desteği.
Kaldırma durumuna ve
NavController
öğesiniNavHost
dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamaya izin vermek içinrememberNavController()
vecurrentBackStackEntryAsState()
içinde belirli yardımcılar oluşturun.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Daha fazla bilgi için Gezinme kılavuzuna göz atın.
Birden çok arka grup
NavController, hedef grubunun arka yığınını yönetmekten, navigate()
işlemi gerçekleştirdiğinizde arka yığına hedefler eklemekten ve popBackStack()
çağrısı yaptığınızda veya sistem geri düğmesini tetiklediğinizde kaldırmaktan sorumludur. Mevcut NavOptions
sınıfı ve gezinme grafiği XML'sindeki <action>
öğelerine entegrasyon, arka yığını kaydetmeyi ve geri yüklemeyi destekleyecek şekilde genişletilmiştir.
Bu değişiklik kapsamında onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
kapsamındaki NavigationUI
yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek herhangi bir kod değişikliği olmadan birden fazla arka yığın desteğini etkinleştirir. Gezinme Parçalarla Gezinme özelliğini kullanırken birden fazla arka plan yığınıyla entegrasyon için önerilen yöntem budur.
Durumu kaydetme ve geri yüklemeyle ilgili temel API'ler, çeşitli yüzeylerle gösterilir:
Navigasyon XML'sinde
<action>
öğesi,app:popUpTo
aracılığıyla açılan hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkilendirilen durumu geri yüklemek için artıkapp:popUpToSaveState
veapp:restoreState
boole ö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şturucudarestoreState
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, eksaveState
parametresi alansetPopUpTo()
içinsetRestoreState()
ve yeni aşırı yüklemeyi kullanabilirsiniz.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
'e yapılan programatik çağrılar artık ek birsaveState
parametresi içerebilir.popBackStack()
veyapopUpToSaveState
ile kaydedilen durumları temizlemek içinclearBackStack()
yöntemini kullanabilirsiniz.
Her durumda NavController
, gezinme hedefi kapsamındaki ViewModel
örnekleri de dahil olmak üzere her NavBackStackEntry
öğesinin durumunu kaydedip geri yükler. Navigator
API'leri, her bir Navigator
öğesinin kendi durumunu kaydetmeyi ve geri yüklemeyi desteklemesini sağlayacak şekilde güncellendi.
Davranış değişiklikleri
NavDeepLinkBuilder
, artıkcreatePendingIntent()
tarafından döndürülenPendingIntent
öğesinePendingIntent.FLAG_IMMUTABLE
ekleyerek bu API'nin Android 12 hedeflenirken beklendiği gibi çalışmasını sağlar.- Gezinme artık Yaşam Döngüsü
2.3.1
'ne bağlıdır vesetGraph()
,popBackStack()
,navigateUp()
venavigate()
adlı yöntemler,NavBackStackEntry
Lifecycle
'u@MainThread
olarak güncelleyen ve Gezinme'yi Yaşam Döngüsü2.3.0
'nde tanıtılan ana iş parçacığı yaptırımı ile uyumlu hale getiren yöntemlerdir. - Derin bağlantılar artık, gerekli tüm bağımsız değişkenlerin (varsayılan değere sahip olmayanlar)
Uri
içinde mevcut olduğunu doğruluyor. NavDeepLink
ayrıştırılan bağımsız değişkenler, artık pound işaretlerini yol segmentleri arasındaki ayırıcı olarak soru işaretleriyle aynı şekilde değerlendirerek bağımsız değişkenin pound işaretinin sonuna yayılmasını önler.- İşlem oluşturulurken, Güvenli Bağımsız Değişkenler'den oluşturulan Kotlin kodu artık varsayılan değeri olmayan bağımsız değişkenleri, parametre olarak varsayılan değerlere sahip olanlardan önce yerleştiriyor.
- Bağımsız değişkenler oluştururken, Safe Args artık varsayılan değeri olmayan parametreleri, varsayılan değerleri olanların önüne yerleştiriyor.
- Güvenli Aramalar artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda, artık
applicationIdTextResource
kullanma uyarısı almazsınız.
Bilinen sorunlar
- Gezinme
2.5.0-alpha01
özelliğinde düzeltildi: Bir Fragment'ınonCreate()
öğesindenby navGraphViewModels()
ile oluşturulan birViewModel
öğesine erişimIllegalStateException
ile başarısız olur. (b/213504272) - Gezinme
2.5.0-alpha01
özelliğinde düzeltildi: Safe Args 2.4.0, Android Gradle Plugin 7.1.0 ve sonraki sürümleriyle uyumlu değildir. (b/213086135) - İç içe yerleştirilmiş birden çok gezinme grafiğine sahip derin bağlantı, tam geri yığını doğru şekilde oluşturmaz. (b/214383060)
Sürüm 2.4.0-rc01
15 Aralık 2021
androidx.navigation:navigation-*:2.4.0-rc01
yayınlandı. 2.4.0-rc01 sürümü bu kayıtları içerir.
Davranış değişiklikleri
NavDeepLink
ayrıştırılan bağımsız değişkenler, artık diyez işaretlerini soru işaretleriyle aynı şekilde bağımsız değişkenler arasında ayırıcı olarak değerlendirecek. (I21309, b/180042703)
Hata Düzeltmeleri
- Derin bağlantılar artık yer tutucunun adıyla aynı değerlere sahip bağımsız değişkenleri yoksaymayacak. (If8017, b/207389470)
NavController
geri yüklendikten sonra, geçişler kullanılarak iç içe yerleştirilmiş bir hedef yerleştirilirkenNavController
kilitlenmeyecek. (I0f7c9, b/205021623)- Geçersiz bir
startDestination
kullanılırken hata mesajı artık varsayılan olarak başlangıç hedefinin rotası varsa varsayılan olarak ayarlanacak. (I86b9d, b/208041894)
Gezinme - Oluşturma Hata Düzeltmeleri
- Alt gezinme menüsü öğeleri kullanılarak başlangıç hedefi ile başka bir hedef arasında hızlı geçiş yapılmasından kaynaklanan olası kilitlenme düzeltildi. (Ic8976, b/208887901)
- Yapılandırma değişiklikleri veya işlem ölümünden sonra iletişim kutusu hedefi artık ekranın üst kısmına düzgün bir şekilde geri yükleniyor. (I4c0dc, b/207386169)
- İletişim kutusu kapatıldığında bir iletişim kutusunun
NavBackStackEntry
öğesindenViewModel
alma girişiminin başarısız olmasına neden olan sorun düzeltildi. (I6b96d, b/206465487) activity
hedeflerini, Gezinmeyle Yazma'nınNavHost
özelliği ile kullanırken sonsuz yeniden düzenlemelerle sonuçlanacak bir sorun giderildi. (I8f64c)- Navigation Compose'da yapılandırma değişikliği veya işlem ölümünden sonra eski etkinliğin referansının tutulduğu bir sızıntı düzeltildi. (I4efcb, b/204905432)
Güvenli Aramalar Hata Düzeltmeleri
SafeArgs
, işlem sonlandırıldıktan sonra özel ayrıştırılabilir dizileri geri yüklemeye çalışırken artık kilitlenmez. (I618e8, b/207315994)- Güvenli bağımsız değişkenlerde, boole dizilerinin
null
değerine sahip olmasına izin vermeyen bir hata düzeltildi. (I8c396, b/174787525)
Sürüm 2.4.0-beta02
3 Kasım 2021
androidx.navigation:navigation-*:2.4.0-beta02
yayınlandı. 2.4.0-beta02 sürümü bu kayıtları 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 arka yığın kullanan kodun beklendiği gibi çalışmasını sağlıyor. (Ic8807)
Davranış Değişiklikleri
- Derin bağlantı kalıpları artık enflasyon sırasında değil NavDeepLink'te geç derleniyor. Bunun sonucunda, derin bağlantılar içeren gezinme grafiklerinin artma süresi artacaktır. (b8d257, b/184149935)
Hata Düzeltmeleri
NavHost
doğrudan etkinliğinsetContent()
öğesine eklendiğinde,Lifecycle.State.STARTED
öğesine taşındıktan sonra NavBackStackEntries'inLifecycle.State.CREATED
öğesine aşağı itilmesine neden olan sorun düzeltildi. (Ia5ac1, b/203536683)- İletişim kutusu gösterilmeden önce arka yığından bir
DialogFragment
hedefinin iletişim kutusunu kapatmadığı ve hatalı iletişim kutusu kullanıcı tarafından manuel olarak kapatıldığında kilitlenmeye neden olan bir yarış durumu düzeltildi. (I687e5) - Söz konusu gezinme grafiğine aslında
navigate()
eklememiş olsanız bileNavigationUI
üzerindekionNavDestinationSelected
API'nintrue
değerini döndürmesine neden olan sorun düzeltildi. Artık hedefinhierarchy
değeri ile yalnızca geçerli hedefle ilişkiliMenuItem
öğesini seçmek içinsetupWithNavController
tarafından dahili olarak kullanılan mantığın aynısını kullanır. (I2b053)
Sürüm 2.4.0-beta01
27 Ekim 2021
androidx.navigation:navigation-*:2.4.0-beta01
yayınlandı. 2.4.0-beta01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Parçalarla Gezinme Kotlin DSL'sinin kullanılmasını daha iyi desteklemek için, kimlik kullanmaya alternatif olarak
by navGraphViewModel
öğesini bir rotayla birlikte kullanabilirsiniz. (I901e3, b/201446416)
API Değişiklikleri
visibleEntries
API şu anda deneyseldir. (I93f6f)
Hata Düzeltmeleri
- Aynı ekranlar arasında ileri ve geri gidilerek geçişler kesintiye uğradığında ViewModel'leri artık yok edilmeyecek (Id52d8, b/200817333)
- Boş değer atanabilir
NavDeepLink
bağımsız değişkenleri,NavDestination
öğelerine derin bağlantılar eklerken artık varsayılan değer gerektirmemektedir. (I5aad4, b/201320030) - Farklı Yaşam Döngülerine sahip NavBackStackEntries, artık eşit olarak kabul edilmemektedir. Bu, singleTop ile gezinme yaparken ve alt menü öğelerini yeniden seçerken NavHost'un tüm hedefleri düzgün bir şekilde yeniden oluşturacağı anlamına gelir. (I1b351, b/196997433)
onCreateListPaneView()
tarafından döndürülen liste bölmesindekilayout_width
velayout_weight
özelliklerinin yanlış işlenmesine veya yoksayılmasına neden olanAbstractListDetailFragment
sorunu düzeltildi. (f5fbf3)- İletişim kutusu hedeflerinin görsel durumu artık
DialogFragmentNavigator
durumu ile doğru şekilde senkronizedir. Bu,DialogFragment
için eşzamansızdismiss()
API'sinin manuel olarak çağrılmasının, kapatılan iletişim kutusunun üzerindeki tüm iletişim kutusu hedeflerini artık düzgün bir şekilde temizlediği anlamına gelir. Bu, iletişim kutunuzu kapatmak içinpopUpTo
veyapopBackStack()
kullandığınız durumları etkilemez. (I77ba2) AbstractAppBarOnDestinationChangedListener
,onDestinationChanged()
için artık daha net hata mesajına sahip. (Ie742d)
Sürüm 2.4.0-alfa10
29 Eylül 2021
androidx.navigation:navigation-*:2.4.0-alpha10
yayınlandı. Sürüm 2.4.0-alpha10 bu kayıtları içerir.
Yeni Özellikler
- NavController artık
visibleEntries
StateFlow (Ia964e) üzerinden görünür tümNavBackStackEntry
örneklerinin listesini alma özelliği sunuyor rememberNavController()
, Eşlikli Navigasyon Materyali gibi isteğe bağlı Gezinme Gereçleri'ni daha iyi desteklemek için iade edilenNavController
öğesine eklenecek isteğe bağlıNavigator
örnek kümesi alıyor. (I4619e)
Hata Düzeltmeleri
- Etkinlik yeniden oluşturulduğunda Dinamik Gezinme artık çökmeyecektir. (Ifa6a3, b/197942869)
- Yalnızca
NavHost
içeren composable bir hedefe geri dönüldükten sonra oluşan sistem geri düğmesiyle ilgili bir sorun düzeltildi. (3ed148, b/195668143) - SafeArgs artık
fromBundle()
vefromSavedStateHandle()
için bağımsız değişkenleri doğru parametre sırasında oluşturuyor. (I824a8, b/200059831)
Sürüm 2.4.0-alpha09
15 Eylül 2021
androidx.navigation:navigation-*:2.4.0-alpha09
yayınlandı. 2.4.0-alpha09 sürümü bu kayıtları içerir.
Yeni Özellikler
- Artık
popBackStack()
veyapopUpToSaveState
ile kaydedilen durumları temizlemek içinclearBackStack()
yöntemini kullanabilirsiniz. (I80a0f) - Artık iç içe yerleştirilmiş gezinme grafiğinizin oluşturucusuna bir bağımsız değişken ve/veya derin bağlantı listesi aktarabilirsiniz ve bunlar, ortaya çıkan grafiğe otomatik olarak eklenir. (I8a470, b/182545357)
API Değişiklikleri
navArgument
Kotlin DSL işlevi artıknavigation-compose
yerinenavigation-common
öğesinin bir parçası. Bu işlem, bu işlevi kullanmaya devam etmek için içe aktarmaların güncellenmesini gerektirir. (I1d095)
Davranış Değişiklikleri
- Bağımsız değişkenler oluştururken, Safe Args artık varsayılan değeri olmayan parametreleri, varsayılan değerleri olanların önüne yerleştiriyor. (I89709, b/198493585)
Hata Düzeltmeleri
- Gezinme Yazma'yı kullanırken NavGraphs yalnızca tüm alt öğeleri
DESTROYED
olduğundaDESTROYED
olacaktır. (I86552, b/198741720) - Boş değer atanabilir
NavDeepLink
bağımsız değişkenleri artık varsayılan değer gerektirmez. (Ia14ef, b/198689811) setGraph()
yeni bir grafikle çağrıldığında, önceki arka yığını açma davranışına ek olarak kayıtlı tüm yığınlar da temizlenir. (I97f96)launchSingleTop
kullanılırkenOnDestinationChangedListener
örneklerine vecurrentBackStackEntryFlow
örneklerine bilgi verilmemesine neden olan sorun düzeltildi. (Iaaebc)
Bağımlılık Güncellemeleri
- Gezinme menüsünü oluşturma işlevi artık Etkinlik Yazma 1.3.1'e bağlıdır. (I05829)
- Gezinme Düzeni Oluşturma artık Yaşam Döngüsü 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
yayınlandı. 2.4.0-alpha08 sürümü bu kayıtları içerir.
Yeni Özellikler
- Artık
NavType
sınıfını özel NavType'lar oluşturacak şekilde genişletmek mümkündür. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL) desteklenir. (I78440, b/196871885)
Davranış Değişiklikleri
- İşlem oluşturulurken, Güvenli Bağımsız Değişkenler'den oluşturulan Kotlin kodu artık varsayılan değeri olmayan bağımsız değişkenleri, parametre olarak varsayılan değerlere sahip olanlardan önce yerleştiriyor. (Idb697, b/188855904)
- Derin bağlantılar artık, gerekli tüm bağımsız değişkenlerin (varsayılan değere sahip olmayanlar)
Uri
içinde mevcut olduğunu doğruluyor. (#204, b/185527157)
Hata Düzeltmeleri
getBackStackEntry
vepreviousBackStackEntry
bunların içinde composable() ile birlikteremember()
kullanılması, artık arka yığında hedef olmaması gibi bir istisnaya neden olmayacak. (I75138, b/194313238)- Gezinme Oluşturma işlemi artık geri yığın bağımsız değişkenlerini değiştirirken ve
launchSingleTop=true
kullanırken düzgün şekilde yeniden oluşturur. (Iebd69, b/186392337) - 13 veya 29 hedef içeren bir grafik içeren
setGraph
aramasında artıkArrayIndexOutOfBoundsException
olmayacak. (I1a9f1, b/195171984) - SafeArgs java oluşturucu, artık Args sınıfları oluştururken lint uyarılarına neden olmamalıdır. (I1a666, b/185843837)
Harici Katkı
- 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ğruladığından emin olduğunuz için ospixd'ne 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
yayınlandı. 2.4.0-alpha07 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Gezinme Oluştur artık yapılandırma değişikliklerinden sonra ve çoklu yığın yığın özelliğini kullanırken grafikleri değiştirirken durumu düzgün bir şekilde kaydediyor. (If5a3d, b/195141957)
- Birden fazla arka yığınla gezinme oluşturma kullanılırken aynı sekmenin yeniden seçilmesi artık boş ekranla sonuçlanmaz. (I860dc, b/194925622)
NavHost
artıkNavBackStackEntry
öğelerininLifecycle.State
içindeki değişiklikleri gözlemliyor. Bu da bir parçadaNavHost
kullanmanın, boş bir ekran yerine yaşam döngüsü değiştikçe uygun bir şekilde yeniden oluşturulacağı anlamına gelir. (I4eb85, b/195864489)- Etkinliğiniz yeniden oluşturulduktan sonra (ör. yapılandırma değişikliğinden sonra)
DialogFragment
kapatıldığındaNavController
durumunun doğru şekilde güncellenmemesi sorunu düzeltildi. (Icd72b) - İletişim kutusu hedefi açmanın, NavController'ın sistem geri düğmesi işlemesini güncellememesi ve ortaya çıkacak herhangi bir geri yığını olmasa bile NavController'ın geri düğmesine müdahale etmesine neden olma sorunu giderildi. (If3b34)
- Güvenli bağımsız değişkenler artık
ViewModel
kodunuzu test etmek üzere kullanılabilecek bağımsız değişkenler için otomatik olaraktoSavedStateHandle
yöntemi oluşturuyor. (If1e2d, b/193353880)
Sürüm 2.4.0-alpha06
4 Ağustos 2021
androidx.navigation:navigation-*:2.4.0-alpha06
yayınlandı. 2.4.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
AbstractListDetailFragment
hizmetindekirequireSlidingPaneLayout()
verequireDetailPaneNavHostFragment()
yöntemleri, sırasıylagetSlidingPaneLayout()
vegetDetailPaneNavHostFragment()
olarak yeniden adlandırıldı. (I34a08)
Davranış Değişiklikleri
- Animasyonlarla (
Crossfade
gibi) gezinirken yeni hedefinLifecycle
öğesi artık yalnızca animasyon tamamlandığında yalnızcaRESUMED
değerine ulaşır. (If0543, b/172112072, b/194301889) - Gezinme Oluştur'un
NavHost
özelliği artık grafiği ilk bestenin bir parçası olarak ayarlıyor. (Ieb7be)
Hata Düzeltmeleri
- Gezinme grafiğinin son hedefi tıklandığında artık
ClassCastException
bildirimi almazsınız. (If0543, b/172112072, b/194301889) Uri
olmadan derin bağlantı eklerken ve rota ya da derin bağlantı üzerinden gezinirken oluşanNullPointerException
düzeltildi. (938a0c, b/193805425)- Gezinme Yazma'da, derin bağlantılı bir
NavBackStackEntry
öğesininRESUMED
durumuna erişememesine neden olan sorun düzeltildi. (I192c5) - Bir iletişim kutusu hedefinin açılması, NavController'ın sistem geri düğmesi işlemesini güncellememesi ve ortaya çıkacak herhangi bir arka yığını olmamasına rağmen NavController'ın geri düğmesine müdahale etmesine neden olan sorun giderildi. (aosp/1782668)
Sürüm 2.4.0-alpha05
21 Temmuz 2021
androidx.navigation:navigation-*:2.4.0-alpha05
yayınlandı. 2.4.0-alpha05 sürümü bu kayıtları içerir.
Davranış Değişiklikleri
- Gezinme Oluştur'un
NavHost
özelliği artık hedefler arasında gezinirken her zaman çapraz geçişleri kullanıyor. (I07049, b/172112072) - Artık bir NavHost'un grafiğinde değişiklik yapabilirsiniz. Grafikte aynı startDestination ve hedeflere sahip grafiklerin eşit kabul edilir ve
NavController
arka yığınını temizlemez. (I0b8db, b/175392262)
Hata Düzeltmeleri
- NavController'ın durumunda geri gelen güncellemelerin neden olduğu bir
NavBackStackEntry
öğesine eklenmişLifecycleObserver
içindenpopBackStack()
çağrılırken ortaya çıkanNoSuchElementException
düzeltildi. (I64621) AbstractListDetailFragment
artıkAbstractListDetailFragment
kullanılmadığındaSlidingPaneLayout
uygulamasının APK'nızdan tamamen çıkarılmasına izin veriyor. (I611ad)NavGraph
veNavDestination
artık eşittir yöntemini geçersiz kılar. Böylece aynı değerlere sahip iki nesne eşit olarak kabul edilir. (I166eb, b/175392262)
Sürüm 2.4.0-alpha04
1 Temmuz 2021
androidx.navigation:navigation-*:2.4.0-alpha04
yayınlandı. 2.4.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
navigation-fragment
yapısı artık yeniAbstractListDetailFragment
aracılığıyla önceden oluşturulmuş iki bölmeli düzen uygulamasını içermektedir. Bu parça, örnek uygulamamızda gösterildiği gibi, liste bölmesini (alt sınıfınızın sağladığı) ve uygulaması olarakNavHostFragment
kullanan bir ayrıntı bölmesini yönetmek için birSlidingPaneLayout
kullanır. (Iac4be, b/191276636)navigation-compose
yapısınınNavHost
'i artıkcomposable
hedefe ek olarakdialog
hedefi de desteklemektedir. Bu iletişim kutusu hedeflerinin her biri, mevcutcomposable
hedefinin üzerinde kayan bir OluşturulabilirDialog
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
öğesindekiadd
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 gerekiyor. (Ie89fc, b/172112072)- Özel
Navigator
örnekleri artıkNavigatorState
üzerindekipushWithTransaction
vepopWithTransition
API'lerini kullanarak bir hedefi eşzamansız olarak aktarabilir veya büyütebilir. Bu API'ların henüz dahil edilen gezginlerden hiçbiri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)
Davranış Değişiklikleri
NavDeepLinkBuilder
, artıkcreatePendingIntent()
tarafından döndürülenPendingIntent
öğesinePendingIntent.FLAG_IMMUTABLE
ekleyerek bu API'nin Android 12 hedeflenirken beklendiği gibi çalışmasını sağlar. (If8c52)
Hata Düzeltmeleri
<include-dynamic>
ile ilgili olarak, grafiğe iletilen bağımsız değişkenlerin, dinamik olarak eklenen grafiğe doğru şekilde iletilmemesine neden olan sorun düzeltildi. (I3e115)@null
varsayılan değerine sahipstring[]
bağımsız değişkeni kullanılarak bir hedefe gidilirken karşılaşılanNullPointerException
düzeltildi. (I1fbe8)- R8 3.1 tam modunu kullanırken karşılaşılan sorunları
düzelterek
@Navigator.Name
için ProGuard kuralları ekleyin. (I2add9, b/191654433) - Uygulamanızı
1.5.0
tarihinden önceKotlin
sürümleriyle derlediğinizde SafeArgs 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
yayınlandı. 2.4.0-alpha03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Dahil edilen bir dinamik grafiğe gitmek için iki
navigate()
çağrısının gerekmesi sorunu düzeltildi. (I7785c, b/188859835) - Gezinme
2.4.0-alpha01
özelliğinde sunulan ve üst düzey bir hedefteykensetupActionBarWithNavController()
ürününün Yukarı simgesini doğru şekilde kaldırmadığı bir regresyon düzeltildi. (I5d443, b/189868637) - Daha önce NavController'ın kök grafiği açıldıktan sonra
popBackStack()
çağrısı yapılırken oluşanIllegalStateException
düzeltildi. (I2a330, b/190265699) by navArgs()
için ProGuard kuralları artıknavigation-common
veya buna bağlı yapılar kullanılırken düzgün bir şekilde uygulanmaktadır. (I68800, b/190082521)- İlk kez geri arama aldığında
navigate()
özelliğini çağıran birOnDestinationChangedListener
, artık gittiği hedefle ikinci bir geri çağırması almaktadır. (Ie5f9e, b/190228815) - Güvenli Aramalar artık dinamik özellik modülleri ve AGP 7.0+ ile kullanıldığında kilitlenmiyor. (I69518, b/189966576)
Bilinen Sorun
- Kotlin'in eski bir sürümüne bağımlılık nedeniyle, Gradle
6.7.0
kullanılırken Güvenli AramalarUnable 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 geçiş yaparak giderilebilir. (b/190739257)
Sürüm 2.4.0-alpha02
2 Haziran 2021
androidx.navigation:navigation-*:2.4.0-alpha02
yayınlandı. 2.4.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
- Rotalar artık Etkinlik, Parça ve İletişim Kutusu hedeflerinin yanı sıra Dynamic Navigation Kotlin DSL'de desteklenmektedir. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
- Durumunuzun kaydedilmesini devre dışı bırakmanıza olanak tanımak için
NavigationUI
geçici olarak deneysel API'ler ekledi. Durumun kaydedilmesi her zaman doğru davranış olsa da kullanımdan kaldırılan kitaplıkların (yani saklanan parçalar) hâlâ kullanımları durum kaydedildiğinde desteklenemez. Bu nedenle, uygulamaların desteklenmeyen API'lerden yavaş yavaş dönüşüm gerçekleştirmesine fırsat tanır. (Idf93c) Navigasyon artık, özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek
findDestination()
vegetHierarchy()
API'leri sunuyor.findDestination()
,NavGraph
üzerinde bulunan ve grafikte bir hedef belirleyecek bir uzantı işlevidir.getHierarchy()
,NavDestination
üzerinde belirli bir hedefin başka bir hedefin hiyerarşisi içinde olup olmadığını doğrulamak için kullanılabilecek bir işlevdir.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
BottomNavigationView
alan NavigationUI yöntemleri, bunun yerineNavigationBarView
Materyali'nde sunulan üst sınıfı alacak şekilde güncellendi.1.4.0
Bu, söz konusu yöntemlerinNavigationRailView
ile kullanılmasına olanak tanır. (Ib0b36, b/182938895)XML aracılığıyla bir
<action>
öğesi şişirilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"
söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir. (I07bc1, b/178291654)
API Değişiklikleri
- Kimlik kullanan Kotlin DSL derleyicileri kullanımdan kaldırıldı (I85b42, b/188816479) (I9f58f, b/188816479)
Hata Düzeltmeleri
DialogFragmentNavigator
artıkNavigatorState.pop()
API'sini kullanarak bir iletişim kutusu sistem geri düğmesine veya dışını tıklayarak kapatıldığındaNavController
durumunu bilgilendiriyor. Böylece,NavController
durumunun her zaman Gezinme Aracı'nın durumuyla senkronize olmasını sağlıyor. (I2ead9)Navigasyon, artık
OnDestinationChangedListeners
listesionDestinationChanged
geri çağırmasıyla değiştirilirkenConcurrentModificationException
sağlamaz. (Ib1707, b/188860458)Güvenli Aramalar artık Kotlin'de yol tarifi özellikleri oluşturmaya çalışırken çökmez. (Id2416, b/188564435)
NavDestination üzerindeki setId yöntemine artık doğru şekilde
@IdRes
ek açıklaması eklenmiştir ve bu nedenle yalnızca kaynak kimliklerini kabul etmektedir. (I69b80)findNode
öğesinin int parametresi artıkresid
yerineresId
oldu. (I7711d)
Bağımlılık Güncellemesi
- Güvenli Aramalar artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda, artık
applicationIdTextResource
kullanma uyarısı almazsınız. (I6d67b, b/172824579)
Sürüm 2.4.0-alpha01
18 Mayıs 2021
androidx.navigation:navigation-*:2.4.0-alpha01
yayınlandı. 2.4.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
değiştiğinde tetiklenen birFlow
sağlar. Bu akış,OnDestinationChangedListener
manuel olarak yönetmeye alternatif olarak kullanılabilir. (I19c4a, #89, b/163947280)
Birden çok arka grup
NavController, hedef grubunun arka yığınını yönetmekten, navigate()
işlemi gerçekleştirdiğinizde arka yığına hedefler eklemekten ve popBackStack()
çağrısı yaptığınızda veya sistem geri düğmesini tetiklediğinizde kaldırmaktan sorumludur. Mevcut NavOptions
sınıfı ve gezinme grafiği XML'sindeki <action>
girişleriyle entegrasyon, arka yığının kaydedilmesini ve geri yüklenmesini destekleyecek şekilde genişletilmiştir. (b/80029773)
Bu değişiklik kapsamında onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
kapsamındaki NavigationUI
yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek herhangi bir kod değişikliği olmadan birden fazla arka yığın desteğini etkinleştirir. Gezinme Parçalarla Gezinme özelliğini kullanırken birden fazla arka plan yığınıyla entegrasyon için önerilen yöntem budur. (Ie07ca)
Durumu kaydetme ve geri yüklemeyle ilgili temel API'ler, çeşitli yüzeylerle gösterilir:
Navigasyon XML'sinde
<action>
öğesi,app:popUpTo
aracılığıyla açılan hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkilendirilen durumu geri yüklemek için artıkapp:popUpToSaveState
veapp:restoreState
boole ö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şturucudarestoreState
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, eksaveState
parametresi alansetPopUpTo()
içinsetRestoreState()
ve yeni aşırı yüklemeyi kullanabilirsiniz.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
'e yapılan programatik çağrılar artık ek birsaveState
parametresi içerebilir.
Her durumda NavController
, gezinme hedefi kapsamındaki ViewModel
örnekleri de dahil olmak üzere her NavBackStackEntry
öğesinin durumunu kaydedip geri yükler. Navigator
API'leri, her bir Navigator
öğesinin kendi durumunu kaydetmeyi ve geri yüklemeyi desteklemesini sağlayacak şekilde güncellendi.
Gezinme Oluşturma Aracı'ndaki composable
hedefleri için kullanılan ComposeNavigator
ve Parçalarla Gezinme'deki <fragment>
hedef için kullanılan FragmentNavigator
ile DynamicFragmentNavigator
, hem yeni Navigator API'lerini kullanacak, hem de kaydetme ve geri yükleme durumunu destekleyecek şekilde güncellendi.
Navigasyon Rotaları
Rota, bir hedefi benzersiz şekilde tanımlayan bir String
'dir. Daha önce yalnızca gezinme menüsünde kullanılan bu kavram, artık temel Gezinme API'lerinin bir parçası haline gelmiştir. Bu, gezinme Kotlin DSL'si ile grafiğinizi oluştururken tam sayı kimlikleri kullanmaya bir alternatif sağlar. (b/172823546)
Daha önce yalnızca kimlik alan tüm API'lerde artık String
rotasını kullanan bir aşırı yük bulunuyor. Buna navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
dahildir.
Bu durum, API'de bazı sorunlara yol açmıştır:
- Kotlin DSL'sinde
popUpTo
kotlin özelliği kullanımdan kaldırılarak yerinepopUpToId
eklendi. (I59c73, b/172823546) getStartDestination()
API, kullanımdan kaldırılmış ve yerinigetStartDestinationId()
almıştır. (I0887f, b/172823546)
Bu, gezinmenin önceki sürümlerinden Navigation Compose'a 2.4.0-alpha01
geçiş yapan geliştiriciler için, uzantı yöntemlerinde aşağıdaki içe aktarma işlemlerinin artık gerekli olmadığı ve kaldırılacağı 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ği ile değiştirildi, böylece navBackStackEntry.destination.route
doğrudan çağrılabilir.
API Değişiklikleri
- Tüm Navigasyon eserleri Kotlin ile yeniden yazıldı. Bu, genel öğeleri (
NavType
alt sınıfları gibi) kullanan sınıfların boş değer atanmasını artırdı. Daha önce-ktx
yapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı.-ktx
yapıları yayınlanmaya devam eder ancak tamamen boş olur. (b/184292145) NavDeepLinkBuilder
artık oluşturulan arka yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)DynamicNavHostFragment
için fabrika işlevlerini ekleyin (Icd515, b/175222619)NavBackStackEntry
öğesinin benzersiz kimliği, herkese açık API'si kapsamında artık kullanıma sunulmuştur. (Ie033a)NamedNavArgument
öğesininname
ileargument
alanları ve yapılandırma işlevleri artık herkese açık. (#174, b/181320559)- İlgili beste yerellerine
NavBackStackEntry
sağlayan yeniNavBackStackEntry#provideToCompositionLocals
uzantısını kullanıma sundu. (#175, b/187229439)
Güvenli Aramalar
Safe Args artık her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturuyor. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Güvenli Arg'lar, KotlinPoet
1.8.0
temel alınarak güncellendi. (#172, b/183990444)
Davranış Değişiklikleri
- Gezinme artık Yaşam Döngüsü
2.3.1
'ne bağlıdır vesetGraph()
,popBackStack()
,navigateUp()
venavigate()
adlı yöntemler,NavBackStackEntry
Lifecycle
'u@MainThread
olarak güncelleyen ve Gezinme'yi Yaşam Döngüsü2.3.0
'nde tanıtılan ana iş parçacığı yaptırımı ile uyumlu hale getiren yöntemlerdir. (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 ve
http://www.example.com/red
gibi bir derin bağlantının, enumRED
değerine sahip olsa bilewww.example.com/{color}
derin bağlantısıyla eşleştirmesine olanak tanır. (#152, b/135857840)
Oluşturma uyumluluğu
androidx.navigation:navigation-compose:2.4.0-alpha01
yalnızca Oluştur1.0.0-beta07
ve sonraki sürümlerle uyumludur.
Hata Düzeltmeleri
- Sondaki bağımsız değişken yer tutucularının, tam olarak eşleşen bir son eke sahip derin bağlantılara göre öncelikli olmasına neden olan sorun düzeltildi. (#153, b/184072811)
NavHostFragment
artık varsayılanDialogFragmentNavigator
ile aynı@Navigator.Name("dialog")
değerini kullanan özel gezginleri destekliyor. (Ib1c2c, b/175979140)- Aynı örnekle tekrar tekrar çağrılmasının soruna neden olmaması için
NavigatorProvider#addNavigator
davranışı iyileştirildi. (#176, b/187443146)
Harici Katkılar
- Her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturan Safe Args'e destek sağladığınız için simonschiller'e teşekkür ederiz. (#122, b/136967621) - Derin bağlantılardan enum bağımsız değişkenlerini büyük/küçük harfe duyarlı hale getirmediğiniz için Bradleycorn'a teşekkür ederiz. (#152, b/135857840)
- Sondaki bağımsız değişken yer tutucularının, tam olarak eşleşen bir son eke sahip derin bağlantılara göre öncelikli olması sorununu çözdüğünüz için osipxd teşekkür ederiz. (#153, b/184072811)
- Güvenli Arg'ları KotlinPoet
1.8.0
sürümünü kullanacak şekilde güncellediğiniz için tatocaster'a teşekkür ederiz. (#172, b/183990444) name
veargument
alanlarını veNamedNavArgument
yapısının yapılandırma işlevlerini herkese açık yaptığınız için jossiwolf'a teşekkür ederiz. (#174, b/181320559)NavBackStackEntry
öğesini ilgili beste yerlilerine sağlayan yeniNavBackStackEntry#provideToCompositionLocals
uzantısını tanıttığınız için jossiwolf'a teşekkür ederiz. (#175, b/187229439)NavigatorProvider#addNavigator
öğesinin aynı örnekle tekrar tekrar çağrılmasının soruna neden olmamasını sağlamak üzere iyileştirilmiş davranışı için jossiwolf'a teşekkür ederiz. (#176, b/187443146)
Gezinme Derleme Sürümü 1.0.0
Sürüm 1.0.0-alfa10
7 Nisan 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
yayınlandı. Sürüm 1.0.0-alpha10 bu kayıtları içerir.
API Değişiklikleri
NavHost
artık hedef composable'ları sarmalayan composable container'a aktarılacakModifier
öğesini kabul ediyor. (I85aca, b/175125483)
Hata Düzeltmeleri
NavHost
artık birOnBackPressedDispatcherOwner
bulunamadığında bile çalışıyor.NavHost
önizlenirken durum böyledir. (I7d8b4)- Gezinme menüsü oluşturma özelliği artık gezinme
2.3.5
özelliğine bağlı olduğundanNavHost
hedefindeBackHandler
kullanılırken oluşan bir sorun düzeltildi. (I7e63b, b/182284739)
Sürüm 1.0.0-alpha09
10 Mart 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kayıtları içerir.
API Değişiklikleri
LocalViewModelStoreOwner.current
, mevcut bileşimde birViewModelStoreOwner
kullanılıp kullanılamadığını daha iyi belirlemek için artık null özellikli birViewModelStoreOwner
döndürüyor.viewModel()
veNavHost
gibi birViewModelStoreOwner
gerektiren API'ler,ViewModelStoreOwner
ayarlanmamışsa yine de istisna oluşturur. (Idf39a)
Hata Düzeltmeleri
- Gezinmeyi Oluşturma özelliği artık Gezinme 2.3.4'e dayanmaktadır. Bu sürüm, grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlamaya yönelik düzeltmeyi içerir. (I65c24, b/177825470)
Sürüm 1.0.0-alpha08
24 Şubat 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
yayınlandı. 1.0.0-alpha08 sürümü bu kayıtları içerir.
Yeni Özellikler
NavHost
artıkLocalSavedStateRegistryOwner
CompositionLocal öğesini bu hedefinNavBackStackEntry
değeriyle doldurarakSavedStateRegistry
içine doğrudan kaydedilen tüm durumların hedefle birlikte kaydedilip geri yüklenmesini sağlar. (I435d7, b/179469431)
Sürüm 1.0.0-alpha07
10 Şubat 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
yayınlandı. 1.0.0-alpha07 sürümü bu kayıtları içerir.
Bağımlılık Güncellemeleri
- Gezinme Oluşturma,
composable
hedeflerineviewModel()
desteği sağlamak için artık Yaşam Döngüsü ViewModel Compose 1.0.0-alpha01'i kullanıyor. (I7a374) NavHost
,NavController
üzerinde ayarlananOnBackPressedDispatcher
öğesini almak için artık Activity-Compose 1.3.0-alpha01'deki yeniLocalOnBackPressedDispatcherOwner
sürümünü kullanıyor. (I65b12)
Sürüm 1.0.0-alpha06
28 Ocak 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
yayınlandı. 1.0.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
NavController
öğesine, ilişkilendirilmişNavBackStackEntry
değerini döndüren birgetBackStackEntry(route: String)
uzantısı yöntemi eklendi. (If8931)
Sürüm 1.0.0-alpha05
13 Ocak 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.
Compose 1.0.0-alpha10'a bağlı olarak güncellendi.
Sürüm 1.0.0-alpha04
16 Aralık 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
yayınlandı. Sürüm 1.0.0-alpha04 bu kayıtları içerir.
- Oluşturma
1.0.0-alpha09
ile uyumluluk için güncellendi.
Sürüm 1.0.0-alpha03
2 Aralık 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
yayınlandı. 1.0.0-alpha03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bir yapılandırma değişikliğinden veya işlem ölümü ve yeniden oluşturma sonrasında
popBackStack()
venavigateUp()
uygulamalarının çalışmaması sorunu düzeltildi. (Buz 47, b/173281473) - NavHost'unuzda iç içe yerleştirilmiş bir grafiğe gitmek artık düzgün çalışıyor. (I0948d, b/173647694)
Sürüm 1.0.0-alpha02
11 Kasım 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.
API Değişiklikleri
- Gezinme oluşturma, popUpTo ve launchSingleTop işlemlerini kullanmak için artık NavOptions'ı destekliyor (If96c3, b/171468994)
- Gezinme Oluşturma DS'de iç içe yerleştirilmiş grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rota alan bir gezinme işlevi eklendi. (I1661d)
- startDestination, NavHost (Ie620e) parametre parametreleri listesinde artık rotadan önce geliyor
- Artık rotayı NavHost composable'ın dışında başlangıç hedefi olarak kullanarak bir grafik oluşturabilirsiniz. (Iceb75)
Sürüm 1.0.0-alpha01
28 Ekim 2020
android.navigation:navigation-compose:1.0.0-alpha01
yayınlandı. 1.0.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
navigation-compose
yapısı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızda hedef olarak @Composable
işlevlerini kullanır.
Bu ilk sürüm aşağıdakileri sağlar:
- Gezinme grafiğinizi Kotlin DSL ile oluşturmanıza olanak tanıyan bir
NavHost
composable'ı. - Hedef düzeyinde yaşam döngüsü,
ViewModel
ve hatırlanan durum kapsamı. - Sistem geri düğmesiyle otomatik entegrasyon.
- Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve bir sonucu önceki hedeflere döndürme desteği.
- Kaldırma durumuna ve
NavController
öğesiniNavHost
dışındaki composable'lara (ör. alt gezinme çubuğu) bağlamaya izin vermek içinrememberNavController()
vecurrentBackStackEntryAsState()
içinde belirli yardımcılar oluşturun.
Daha fazla bilgi için Gezinme kılavuzuna göz atın.
Sürüm 2.3.5
Sürüm 2.3.5
7 Nisan 2021
androidx.navigation:navigation-*:2.3.5
yayınlandı. Sürüm 2.3.5 bu kayıtları içerir.
Yeni Özellikler
NavDeepLinkRequest
veyaUri
kullanarak gezinirken artıkKEY_DEEP_LINK_INTENT
aracılığıyla bağımsız değişkenlerden niyeti alarak sonuçtaki hedeftekiUri
, işlem ve MIME türüne erişebilirsiniz. Böylece, harici derin bağlantılar için hâlihazırda kullanılabilen işlevi yansıtabilirsiniz. (I975c3, b/181521877)
Hata Düzeltmeleri
OnBackPressedCallbacks
adlı görev dağıtıcıya, Yaşam Döngüsü Sahibi olarakNavBackStackEntry
ile birlikte, Etkinlik Yaşam DöngüsüSTOPPED
, ardındanSTARTED
(Iff94f, b/182284739) olduktan sonra düzgün şekilde müdahale edenOnBackPressedCallbacks
eklendi- Derin bağlantı alan ayrıştırma işlemi artık büyük/küçük harfe duyarlı değildir. Böylece
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 hedefin birden fazla boş olmayan varsayılan bağımsız değişkeni olduğunda ve bu hedefe giderken bu bağımsız değişkenlerin yalnızca bir alt kümesini geçersiz kıldığınızda ortaya çıkan
NullPointerException
düzeltildi. (aosp/1644827)
Bağımlılık Güncellemeleri
- Gezinme Güvenli Args Gradle Eklentisi artık Kotlin Gradle Eklentisi 1.4.31'e bağlıdır. (aosp/1661058, b/181156413)
Harici Katkı
- Derin bağlantı alan ayrıştırmasını büyük/küçük harf duyarsız hale getiren pull 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
yayınlandı. 2.3.4 sürümü bu kayıtları içerir.
Yeni Özellikler
ReferenceType
bağımsız değişkenleri, derin bağlantı URI'sının parçası olarak gönderildiğinde düzgün bir şekilde ayrıştırılabilir. Bu, hem ham tam sayı değerini hem de0x
ön ekine sahip 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 desteklemektedir. Böylece,0.0
kullanımını zorunlu kılmak yerineandroid:defaultValue="0"
kullanmanıza olanak tanır. (#117, b/173766247)
Hata Düzeltmeleri
- Navigasyon'un dinamik özellikler desteğini kullanırken takılan yükleme ilerleme durumunu düzeltme (Ib27a7, b/169636207)
setViewModelStore
veyasetLifecycleOwner
için ayarlanmış olan aynı nesne artık işlemsiz (Idf491, b/177825470) olacaktır- Safe-Args artık java kullanırken uygun yöntemlere engelleme ek açıklamaları ekliyor. (I8fbc5, b/179463137)
Harici Katkılar
ReferenceType
bağımsız değişkenlerinin, derin bağlantı URI'sının parçası olarak gönderildiğinde düzgün bir şekilde ayrıştırılabilmesi için pull isteği içinJvmName
'e teşekkür ederiz. (#127, b/179166693)app:argType=”float”
içeren bir bağımsız değişken içindefaultValue
öğesine izin verme amaçlı pull isteği için teşekkür ederiztatocaster
, artık tamsayı varsayılan 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
yayınlandı. 2.3.3 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
NavBackStackEntry
öğesi,Lifecycle
öğesiCREATED
öğesine taşınmadan önce çoğaltılırken artık kilitlenme meydana gelmez. (Ie3ba3)- Animasyon kaynak değeri
0
olan bir etkinliğe gitmeninResourceNotFoundException
neden olduğu b/171364502 sorunu düzeltildi. (I7aedb, b/176819931)
Sürüm 2.3.2
Sürüm 2.3.2
2 Aralık 2020
androidx.navigation:navigation-*:2.3.2
yayınlandı. 2.3.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
NavigationUI
ürününde,onNavDestinationSelected
ile bir<activity>
hedefi kullanıldığında Etkinlik'e gidememesine neden olan bir regresyon düzeltildi. (I22e34, b/171364502)navigation-dynamic-features-fragment
öğesinin, yeni yüklenen hedefe birden çok kez gidilmesine neden olan bir sorun düzeltildi. (aosp/1486056, b/169636207)launchSingleTop
kullanılırken varsayılan bağımsız değişkenlerinOnDestinationChangedListener
örneğine gönderilmemesine neden olan sorun düzeltildi. (I2c5cb)- İç içe yerleştirilmiş bir gezinme grafiğine gitmenin, arka yığında yeni bir grafik örneği oluşturmamasına neden olan sorun düzeltildi. (Ifc831)
navigate()
kullanımının, gezinme grafiğindeki son hedefi kaldıran birpopUpTo
ile kullanılmasının, gezinme grafiğinin kendisini arka yığından hemen bozmaması ve kaldırmaması sorunu düzeltildi. (I910a3)- Navigasyon SafeArgs artık KotlinPoet'un 1.7.2 sürümünü kullanıyor. Bu sürüm, Kotlin'in açık API modu için destek ekliyor. (I918b5)
NavHostFragment.findNavController(Fragment)
, artık Fragment hiyerarşisi ve Fragment görünüm hiyerarşisinin mevcut denetimlerine ek olarak bir DialogFragment'in kök dekor görünümünü de kontrol ediyor. Bu,FragmentScenario
veNavigation.setViewNavController()
ile Gezinme'yi kullanan iletişim kutusu parçalarını test etmenize olanak tanır. (I69e0d)
Sürüm 2.3.1
Sürüm 2.3.1
14 Ekim 2020
androidx.navigation:navigation-*:2.3.1
yayınlandı. 2.3.1 sürümü bu kayıtları içerir.
Yeni Özellikler
- Gezinme kullanıcı arayüzüne varsayılan Animator kaynakları eklendi ve varsayılan animasyon kaynakları yerine bu kaynakların kullanılması önerilir. (b/167430145)
- NavOptions artık karma kodunu geçersiz kılıyor ve eşittir yöntemlerini (b/161586466)
- Gezinme artık geçerli hedefi "Kimliği olan hedef yok" IllegalArgumentException'a dahil ediyor. Bu, geliştiricilerin hata ayıklama deneyimini iyileştirecek. (b/168311416)
Hata Düzeltmeleri
- Güvenli Anahtarlar, oluşturulan bağımsız değişken sınıfı adı 100 karakterden uzun olsa bile döndürme satırını artık sarmalamayacaktır. (b/168584987)
Bağımlılık Değişiklikleri
navigation-ui
artık DrawerLayout 1.1.1'i kullanıyor veNavigationUI
bu sayedeLOCK_MODE_LOCKED_CLOSED
veyaLOCK_MODE_LOCKED_OPEN
kullanırken bile çekmeceyi açabiliyor. (b/162253907)- Güvenli Aramalar artık KotlinPoet 1.6.0 sürümünü kullanıyor (aosp/1435911)
- Güvenli Aramalar artık AGP 4.0.1'e (aosp/1442337) bağlıdır
Sürüm 2.3.0
Sürüm 2.3.0
24 Haziran 2020
androidx.navigation:navigation-*:2.3.0
yayınlandı. 2.3.0 sürümü bu kayıtları içerir.
2.2.0'dan bu yana yapılan önemli değişiklikler
- Özellik Modülü entegrasyonu:
navigation-dynamic-features-runtime
venavigation-dynamic-features-fragment
yapıları, özellik modüllerinde tanımlanan hedeflere gitmenize olanak tanır ve gerektiğinde özellik modüllerinin yüklenmesini otomatik olarak gerçekleştirir. Daha fazla bilgi için Özellik modülleriyle gezinme bölümüne bakın. - Gezinme Testi:
navigation-testing
yapısı, geçerli hedefi ayarlamanıza ve gezinme işlemlerinden sonra arka yığını doğrulamanıza olanak tanıyan birTestNavHostController
sağlar. Daha fazla bilgi için Gezinmeyi Test Etme konusuna bakın. - Sonuç Döndürme: Gezinme arka yığınındaki her bir hedefle ilişkili
NavBackStackEntry
, artık belirli bir arka yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kaydedilmiş durum depolamak için uygun birSavedStateHandle
öğesine erişmenize olanak tanır. Daha fazla bilgi için Bir sonucu önceki Hedefe döndürme bölümüne bakın. Openable
içinNavigationUI
desteği:NavigationUI
içindeki tümDrawerLayout
kullanımları, CustomView1.1.0
'a eklenen ve DrawerLayout1.1.0
içindeDrawerLayout
tarafından uygulanan daha genelOpenable
arayüzüyle değiştirildi.- Derin bağlantılarda İşlem ve Mime Türü desteği: Derin bağlantı, daha önce kullanıma sunulan
app:uri
özelliğine ek olarakapp:action
veapp:mimeType
de desteklenecek şekilde genişletilmiştir.NavController
artık yeniNavDeepLinkRequest
sınıfıyla bu alanların herhangi bir kombinasyonunda gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest kullanarak gezinme konusuna bakın.
Bilinen Sorunlar
- Derin bağlantı işlemleri ve MIME türleri için henüz Manifest Birleşmesi desteği sunulmamaktadır. Bu çalışma tamamlanana kadar, manifest dosyanızdaki
<nav-graph>
öğesinden oluşturulan<intent-filter>
öğeleri,<data>
öğesine veya özel<action>
öğenize MIME türünü dahil etmeyecektir. Manifest dosyanıza manuel olarak uygun bir<intent-filter>
eklemeniz gerekir.
Sürüm 2.3.0-rc01
10 Haziran 2020
androidx.navigation:navigation-*:2.3.0-rc01
yayınlandı. 2.3.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bağımsız değişken içermeyen bir hedef örneğinin,
singleTop
ile içeren bağımsız değişken içeren başka bir örnekle değiştirilmesi sırasında meydana gelenNullPointerException
sorunu düzeltildi. (b/158006669) NavController
tarafından oluşturulan tümdestination is unknown
istisnaları artıkNavController
durumunu belirlemeye yardımcı olacak ek hata ayıklama bilgilerine sahiptir. (b/157764916)
Sürüm 2.3.0-beta01
20 Mayıs 2020
androidx.navigation:navigation-*:2.3.0-beta01
serbest bırakıldı. 2.3.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- İşlem tamamlandıktan sonra
NavBackStackEntry
öğesininLifecycle
öğesinin doğru şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371) setGraph()
çağrılmadan önce kaydedilenOnDestinationChangedListener
örnek, bir işlemin gerçekleşmesinden sonra geri yüklenen hedefe artık düzgün bir şekilde gönderiliyor. (b/155218371)singleTop
kullanılırkenNavBackStackEntry
artık bağımsız değişkenleri doğru şekilde güncellendi ve güncellenen bağımsız değişkenler tümOnDestinationChangeListener
örneklerine gönderildi. (b/156545508)
Bağımlılık Güncellemeleri
NavigationUI
yapısı artık CustomView1.1.0-rc01
ve DrawerLayout1.1.0-rc01
öğelerine bağlıdır. (aosp/1309696)
Sürüm 2.3.0-alpha06
29 Nisan 2020
androidx.navigation:navigation-*:2.3.0-alpha06
yayınlandı. (Sürüm 2.3.0-alpha06 bu kayıtları içerir.)
Yeni Özellikler
- Derin bağlantının kapsamı, daha önce kullanıma sunulan
app:uri
özelliğine ek olarakapp:action
veapp:mimeType
özelliklerini destekleyecek şekilde genişletildi. NavController artık yeniNavDeepLinkRequest
sınıfı aracılığıyla bu alanların herhangi bir kombinasyonunda gezinmeyi destekliyor. (b/136573074, b/135334841)
API Değişiklikleri
- Dinamik Gezinme hedefleri için Kotlin DSL desteği önemli ölçüde genişletildi. (b/148969800)
Hata Düzeltmeleri
- İç içe yerleştirilmiş 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
yayınlandı. 2.3.0-alpha05 sürümü bu kayıtları içerir.
Yeni Özellikler
<include-dynamic>
kullanılan dinamik grafik içeriyorsa, artıkapp:graphPackage
değerini belirtmenize gerek yoktur.applicationId
önekine bir noktadan sonramoduleName
son eki eklenirse varsayılan değer kullanılır.graphPackage
öğenizi özelleştirmeniz gerekirse artık${applicationId}
yer tutucusu desteklenmektedir. (b/152696768)- Gezinme Grafiği Kotlin DSL'si artık işlemler için bir
defaultArguments
Map
sunmaktadır. Bu da, Navigation XML dosyalarındaki<action>
öğelerine ilişkin varsayılan değerleri ayarlama yeteneğini yansıtmaktadır. (b/150345605)
Hata Düzeltmeleri
- Gezinme 2.2.2'de: Etkinliğinizde birden fazla
NavHostFragment
örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı yapıldığında oluşanIllegalStateException
düzeltildi. (b/147378752)
Bağımlılık güncellemeleri
- Navigasyon artık Parça
1.2.4
'a bağlıdır. (aosp/1277325) - Dinamik Gezinme artık Play Core
1.7.2
'u destekliyor. (aosp/1282257)
Sürüm 2.3.0-alpha04
18 Mart 2020
androidx.navigation:navigation-*:2.3.0-alpha04
yayınlandı. 2.3.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
- Gezinme Kotlin DSL'sinde özellik modülü etkinliği ve parça hedefleri için destek eklendi. (b/148969800)
API Değişiklikleri
DynamicExtras
sınıfı artık derleyici kalıbı kullanmamaktadır ve artık doğrudan oluşturulabilir. (aosp/1253671)DynamicActivityNavigator
, artık oluşturucusundaActivity
yerine birContext
alıyor. (aosp/1250252)
Hata Düzeltmeleri
NavigationUI
artık boş etiketleri (android:label=””
içeren bir hedef) yoksaymıyor ve başlığı doğru şekilde boş bir dize olarak ayarlıyor. (b/148679860)
Bağımlılık Güncellemeleri
- Gezinme Dinamik Özellikleri yapıları artık Play Core
1.6.5
uygulamasını temel almaktadır. (b/149556401)
Sürüm 2.3.0-alpha03
4 Mart 2020
androidx.navigation:navigation-*:2.3.0-alpha03
yayınlandı. 2.3.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
- Somut
DrawerLayout
sınıfını kullanmak yerine,AppBarConfiguration
artık CustomView1.1.0-alpha02
içinde sunulanOpenable
arayüzünü (DrawerLayout
, DrawerLayout1.1.0-alpha04
tarihinden itibaren uygulanmaktadır) kullanır. BöyleceNavigationUI
ileOpenable
öğesinin özel uygulamalarını kullanabilirsiniz. (b/129030452)
Hata Düzeltmeleri
navigation-common-ktx
ProGuard kuralları artık doğru şekilde, tümNavArgs
örnekleri yerine kullanılanNavArgs
sınıflarını koruyor. (b/150213558)
Bağımlılık değişiklikleri
- Core
1.2.0
'e olan bağımlılığı geri döndüren Navigasyon, Core1.2.0
'deki yeni API'leri temel almadığında geliştiricilerin daha yeni bir bağımlılığa geçme zorunluluğunu ortadan kaldırmak için artık Core1.1.0
ile çalışıyor.
Sürüm 2.3.0-alpha02
19 Şubat 2020
androidx.navigation:navigation-*:2.3.0-alpha02
yayınlandı. 2.3.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
NavBackStackEntry
artık belirli bir arka yığın girişiyle ilişkilendirilmesi gereken, az miktarda kaydedilmiş durumu depolamaya uygun birSavedStateHandle
dosyasına erişmenize olanak tanıyor. Örnek kullanım alanı için Bir sonuç döndürme bölümüne bakın. (b/79672220)
API Değişiklikleri
- Mevcut ve önceki hedefler için
NavBackStackEntry
almayı kolaylaştırmak amacıylagetCurrentBackStackEntry()
vegetPreviousBackStackEntry()
kullanışlı yöntemler eklendi. (b/79672220)
Hata Düzeltmeleri
navigateUp()
, uygulamanızı kendi görev yığınınızda başlatırken artık geçerli hedefin bağımsız değişkenlerini veKEY_DEEP_LINK_INTENT
öğesini önceki hedefe iletir. (b/147456890)
Bağımlılık değişiklikleri
- Navigasyon 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
yayınlandı. Sürüm 2.3.0-alpha01 bu kayıtları içerir.
Yeni özellikler
- Yeni
navigation-testing
yapısıTestNavHostController
sınıfı sağlar. Bu sınıf, Gezinmeyi test ederken mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra arka yığını doğrulamanıza olanak tanıyan örnek birNavController
kullanmaya alternatif sunar. (b/140884273) - Yeni
navigation-dynamic-features-fragment
(ve geçişli bağımlılığınavigation-dynamic-features-runtime
), özellik modüllerinden hedefleri veya tüm gezinme grafiklerini (<include-dynamic>
ile) eklemenize olanak tanır. Böylece bu hedeflere gidildiğinde isteğe bağlı özellik modüllerinin sorunsuz bir şekilde yüklenmesi sağlanır. Daha fazla bilgi için Özellik modülleriyle gezinme bölümüne bakın. (b/132170186)
Hata düzeltmeleri
- Gezinme
2.2.1
'den: Sorgu parametresi olmayan derin bağlantılar, artık sondaki{argument}
öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine tüm sorgu parametrelerini doğru bir şekilde yok sayar. (b/147447512) - Gezinme
2.2.1
bölümünde:DrawerArrowDrawable
içinnavigation-ui
ProGuard kuralları,android.enableJetifier=true
kullanılmasının zorunlu kılınmamasını sağlayacak şekilde güncellendi. (b/147610424) - Gezinme
2.2.1
bölümünde:navigation-common-ktx
modülünün,navigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine artık benzersiz bir manifest paketi adı vardır. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1
'den: Gezinme2.2.1
artık Yaşam Döngüsü ViewModel SavedState2.2.0
ve Fragment1.2.1
öğelerine 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
serbest bırakıldı. 2.2.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Etkinliğinizde birden fazla
NavHostFragment
örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken karşılaşılanIllegalStateException
düzeltildi. (b/147378752) NavigationUI
artık boş etiketleri (android:label=””
içeren bir hedef) yoksaymıyor ve başlığı doğru şekilde boş bir dize olarak ayarlıyor. Bu sürüm daha önce Gezinme 2.3.0-alpha04'te kullanıma sunulmuştur. (b/148679860)navigation-common-ktx
ProGuard kuralları artık doğru şekilde, tümNavArgs
örnekleri yerine kullanılanNavArgs
sınıflarını koruyor. Bu sürüm daha önce Gezinme 2.3.0-alpha03'te kullanıma sunulmuştur. (b/150213558
Bağımlılık güncellemeleri
- Navigasyon artık Parça
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
yayınlandı. Sürüm 2.2.1 bu kayıtları içerir.
Hata düzeltmeleri
- Sorgu parametresi olmayan derin bağlantılar, artık tüm sorgu parametrelerini sondaki
{argument}
öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksaymaktadır. (b/147447512) DrawerArrowDrawable
içinnavigation-ui
ProGuard kuralları,android.enableJetifier=true
kullanılmasının zorunlu kılınmamasını sağlayacak şekilde güncellendi. (b/147610424)navigation-common-ktx
modülü,navigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine artık benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
2.2.1
gezinmesi artık Yaşam Döngüsü ViewModel SavedState2.2.0
ve Parça1.2.1
'ya 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
yayınlandı. Sürüm 2.2.0 bu kayıtları içerir.
2.1.0'dan sonraki önemli değişiklikler
- NavBackStackEntry: Artık
NavController.getBackStackEntry()
çağırarak arka yığındaki bir hedefin veya gezinme grafiğinin kimliğini iletebilirsiniz. DöndürülenNavBackStackEntry
, söz konusu hedefi başlatmak için kullanılan bağımsız değişkenlerin yanı sıra gezinme odaklıLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülen) veSavedStateRegistryOwner
sağlar. - Yaşam Döngüsü ViewModel SavedState Entegrasyonu:
SavedStateViewModelFactory
, artıkNavController.getBackStackEntry()
veyaNavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ileby navGraphViewModels()
ya daViewModelProvider
oluşturucusu kullanılırken varsayılan fabrikadır. - Derin Bağlantılar için Sorgu Parametresi Desteği: Sorgu parametrelerine sahip derin bağlantılar artık yeniden sıralanan sorgu parametrelerini destekliyor. Varsayılan bir değere sahip olan veya null özellikli bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlı olarak kullanılabilir.
- İyileştirilmiş Animasyon Desteği:
NavHostFragment
artık Fragment 1.2.0'danFragmentContainerView
kullanıyor. Bu sayede animasyonun z sırası sorunlarını ve Parçalara gönderilen pencere eklerini düzeltiyor.
Sürüm 2.2.0-rc04
18 Aralık 2019
androidx.navigation:navigation-*:2.2.0-rc04
yayınlandı. 2.2.0-rc04 sürümü bu kayıtları içerir.
Hata düzeltmeleri
navigation-ui
tarafından kullanılan varsayılan şeffaflaştırma animasyonları,1.2.0-rc04
parçasındaki düzenlenmiş şeffaflaştırma animasyonlarıyla eşleşecek şekilde ayarlandı. (b/145769814)
Sürüm 2.2.0-rc03
4 Aralık 2019
androidx.navigation:navigation-*:2.2.0-rc03
yayınlandı. 2.2.0-rc03 sürümü bu kayıtları içerir.
Hata düzeltmeleri
- Sorgu parametreleri ve yolun son bölümü olarak bir bağımsız değişken kullanılırken, son yol bağımsız değişkeninin birden fazla karakterinin ayrıştırılmasını engelleyen derin bağlantı ayrıştırmayla ilgili bir sorun düzeltildi. (b/144554689)
- İsteğe bağlı parametrelerin
null
yerine"@null"
alacağı derin bağlantı ayrıştırmayla ilgili sorun düzeltildi. (b/141613546) NavHostFragment
,FragmentContainerView
ile kullanıldığında bir yapılandırma değişikliğinden sonra grafiği doğru şekilde geri yüklüyor. (b/143752103)
Bağımlılık değişiklikleri
- Gezinme artık uygun olduğunda
2.2.0-rc03
Yaşam Döngüsü, Yaşam Döngüsü ViewModel SavedState1.0.0-rc03
, Etkinlik1.1.0-rc03
ve1.2.0-rc03
Parçasına bağlıdır.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.navigation:navigation-*:2.2.0-rc02
yayınlandı. 2.2.0-rc02 sürümü bu kayıtları içerir.
Bağımlılık değişiklikleri
- Navigasyon artık androidx.lifecycle
2.2.0-rc02
uygulamasına bağlıdır.
Sürüm 2.2.0-rc01
23 Ekim 2019
androidx.navigation:navigation-*:2.2.0-rc01
, 2.2.0-beta01
tarihinden bu yana herhangi bir değişiklik olmadan yayınlandı. 2.2.0-rc01 sürümü bu kayıtları içerir.
Sürüm 2.2.0-beta01
9 Ekim 2019
androidx.navigation:navigation-*:2.2.0-beta01
yayınlandı. 2.2.0-beta01 sürümü bu kayıtları içerir.
Yeni özellikler
NavDestination
ve alt sınıfları, hata ayıklama sırasında daha yararlı bilgiler sağlamak için artıktoString()
politikasını geçersiz kılar. (b/141264986)
Davranış değişiklikleri
- Artık derin bağlantılar eşleştirilirken, eşleşmenin başarısız olmasına neden olmak yerine ekstra sorgu parametreleri yoksayılıyor. (b/141482822)
Hata düzeltmeleri
- Sorgu parametreleri de belirtilmişse derin bağlantı yolundaki bağımsız değişkenlerin yoksayılmasına neden olan sorun düzeltildi. (b/141505755)
Activity
üzerindekinavArgs()
Kotlin uzantısı artık ek bir öğe olmadığında daha iyi bir hata mesajı veriyor. (b/141408999)- Güvenli Aramalar oluşturulan
Directions
Java sınıfları artık varsayılan değerleri içeriyor. (b/141099045) - Güvenli Aramalar oluşturulan
Args
Java sınıfları artık varsayılan değerleri içeriyor. (b/140123727) Toolbar
kullanılırkenNavigationUI
artık iki üst düzey hedef arasında geçiş yaparken metin değişikliğine animasyon uygulamaz. (b/140848160)
Sürüm 2.2.0-alpha03
18 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha03
yayınlandı. Sürüm 2.2.0-alpha03 bu kayıtları içerir.
Davranış değişiklikleri
setGraph
çağrıldıktan sonrasetViewModelStore()
çağrılırsa artıkIllegalStateException
döndürülür. TümNavBackStackEntry
örneklerininViewModel
örnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla bu, ilk kurulumun bir parçası olarak daimaNavHost
tarafından ayarlanmalıdır. (aosp/1111821)
Hata düzeltmeleri
- Kapsamı
ViewModelStore
örneğine sahip birden fazla farklı gezinme grafiğine eklenmişViewModel
örnekleri kullanılırken oluşanConcurrentModificationException
düzeltildi. (aosp/1112257)
Sürüm 2.2.0-alpha02
5 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha02
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
- Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanan sorgu parametrelerini destekliyor. Varsayılan bir değere sahip olan veya boş atanabilen bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlı olarak kullanılabilir. (b/133273839)
- Artık
NavController.getBackStackEntry()
yöntemini çağırarak bir hedefin kimliğini veya arka taraftaki yığındaki gezinme grafiğini aktarabilirsiniz. DöndürülenNavBackStackEntry
, söz konusu hedefi başlatmak için kullanılan bağımsız değişkenlerin yanı sıra gezinme odaklıLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülen) veSavedStateRegistryOwner
sağlar. (aosp/1101691, aosp/1101710)
Hata düzeltmeleri
ViewPager2
öğesineNavHostFragment
eklemeninIllegalArgumentException
ile başarısız olması sorunu düzeltildi. (b/133640271)NavInflater
artıkgetResourceName()
öğesini gereksiz yere çağırmaktan kaçınarak enflasyon süresini %40'a kadar hızlandırıyor. (b/139213740)
Sürüm 2.2.0-alpha01
7 Ağustos 2019
androidx.navigation:navigation-*:2.2.0-alpha01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
SavedStateViewModelFactory
artıkby navGraphViewModels()
veyaNavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ileViewModelProvider
oluşturucusu kullanılırken varsayılan fabrika ayarıdır. (b/135716331)
API değişiklikleri
- Gezinme
2.1.0-rc01
bölümünde:2.1.0-alpha02
tarihinde kullanıma sunulan,NavController
tarihinde kullanımdan kaldırılangetViewModelStore()
API kaldırıldı. (aosp/1091021)
Hata düzeltmeleri
NavHostFragment
artıkFragmentContainerView
kullanıyor. Animasyonun z sıralaması sorunlarını ve Parçalara gönderilen pencere ek öğelerini düzeltiyor. (b/137310379)
Sürüm 2.1.0
Sürüm 2.1.0
5 Eylül 2019
androidx.navigation:navigation-*:2.1.0
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
2.0.0'dan sonraki önemli değişiklikler
- ViewModel'leri bir gezinme grafiğine kapsama: Artık
-ktx
kitaplıklarını veyaNavController
'a eklenengetViewModelStoreOwner()
API'yi kullanarak Kotlin kullanıcıları içinby navGraphViewModels()
özellik yetkisini kullanarak gezinme grafiği düzeyinde kapsama dahil edilen ViewModel'ler oluşturabilirsiniz. Daha fazla bilgi için Kullanıcı arayüzü ile ilgili verileri hedefler arasında paylaşma başlıklı makaleye bakın. - İletişim kutusu hedefleri: Artık
navigate
işlemi yaptığınızdaDialogFragment
gösterecek<dialog>
hedefleri oluşturabilirsiniz.NavHostFragment
, varsayılan olarak iletişim kutusu hedeflerini destekler. Daha fazla bilgi için DialogFragment'tan hedef oluşturma konusuna bakın. - URI ile gezinme: Artık bir
Uri
kullanarak, rotayı izlemek için bir hedefe eklediğiniz<deepLink>
ilenavigate
yapabilirsiniz. Daha fazla bilgi için URI kullanarak gezinme konusuna bakın. - NavHostController: Özel olarak
NavHost
oluşturmak için kullanılan API'lerNavHostController
'e taşınmıştır. Böylece, uygulamalarNavController
öğelerini barındıranLifecycleOwner
,OnBackPressedDispatcher
veViewModelStore
sağlayıcılarına bağlayabilir.
Sürüm 2.1.0-rc01
7 Ağustos 2019
androidx.navigation:navigation-*:2.1.0-rc01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
API değişiklikleri
NavController
tarihinde2.1.0-alpha02
tarihinde kullanıma sunulan, kullanımdan kaldırılmışgetViewModelStore()
API kaldırıldı. (aosp/1091021)
Sürüm 2.1.0-beta02
19 Temmuz 2019
androidx.navigation:*:2.1.0-beta02
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
2.1.0-beta01
ayında kullanıma sunulan istenmeyen jakoko bağımlılığı kaldırıldı. (b/137782950)
Sürüm 2.1.0-beta01
17 Temmuz 2019
androidx.navigation:*:2.1.0-beta01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
NavigationUI
artıksetupWithNavController()
birToolbar
veyaCollapsingToolbarLayout
ile kullanıldığında Yukarı düğmesinin kaldırılmasını animasyonla gösteriyor. (b/131403621)
Hata düzeltmeleri
findNavController()
ile aynı kapsayıcıyla birden fazla NavHostFragment kullanılırken zamanlama sorunu giderildi. (b/136021571)
Sürüm 2.1.0-alpha06
2 Temmuz 2019
androidx.navigation:*:2.1.0-alpha06
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
- NavHostFragment tarafından kullanılan
app:navGraph
özelliğinavigation-runtime
yapısına taşındı. XML yoluyla eklenebilen özel gezginler, Gezinme Düzenleyicisi'nin Ana Makine paneliyle entegrasyon sağlamak için bu özelliği kullanmalıdır. (b/133880955)
API değişiklikleri
NavController
işletim sistemindegetViewModelStore()
API'si kullanımdan kaldırıldı ve yerineViewModelStoreOwner
döndüren yenigetViewModelStoreOwner()
yöntemi geldi. (aosp/987010)<dialog>
hedefleri gibi kayan pencere hedeflerinin uygulanması, şu anda tüm<dialog>
hedeflerinin uyguladığı bir işaretçi arayüzüne (FloatingWindow
) genelleştirildi. Üst uygulama çubuğuyla etkileşimde bulunmaya yönelik NavigationUI yöntemleri artıkFloatingWindow
hedeflerini yoksayıyor. (b/133600763)
Davranış değişiklikleri
- Navigasyon artık, bir
<dialog>
hedefi kullandığınızda durumunu ekranda görülenlerle doğru şekilde senkronize ediyor. Sonuç olarak, Navigasyon artık iletişim kutusu olmayan veya etkinlik olmayan bir hedefe (ör.<fragment>
) gittiğinizde<dialog>
hedeflerini otomatik olarak gösteriyor. (b/134089818)
Hata düzeltmeleri
- Gezinme, bir derin bağlantıyı işlerken etkinliği yeniden oluştururken oluşan animasyonu artık engelleyerek görsel yanıp sönme sorununu düzeltmektedir. (b/130362979)
- İlk parça eklenirken bir Parça açılırken Gezinme arka yığınının senkronize olmamasına neden olan hata düzeltildi. (b/133832218)
Sürüm 2.1.0-alpha05
5 Haziran 2019
androidx.navigation:*:2.1.0-alpha05
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
API değişiklikleri
NavController
alan adındaki ana makineyle ilgili API'ler yeniden adlandırıldı veNavController
alt sınıfına (NavHostController
) taşındı. (aosp/966091)NavController
setHostOnBackPressedDispatcherOwner()
yöntemi,NavHostController
setOnBackPressedDispatcher()
yöntemiyle değiştirildi ve artık bu yöntemi çağırmadan öncesetLifecycleOwner()
yöntemini çağırmanızı gerektiriyor. (aosp/965409)NavHostController
artık daha öncesetHostOnBackPressedDispatcherOwner()
tarafından 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 arka yığı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
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
NavHostFragment
, sistem Geri düğmesi etkinliklerine müdahale ederkenapp:defaultNavHost
politikasını doğru şekilde uygular ve Gezinme2.1.0-alpha03
'de bir regresyonu düzeltir. b/132077777DialogFragmentNavigator
artıkpopBackStack()
venavigateUp()
işlemlerini düzgün şekilde işliyor. b/132576764- İç içe yerleştirilmiş grafikler arasında tekrar tekrar gezinirken karşılaşılan
IllegalStateException: unknown destination during restore
sorunu düzeltildi. b/131733658
Sürüm 2.1.0-alpha03
7 Mayıs 2019
androidx.navigation:*:2.1.0-alpha03
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Bilinen Sorunlar
- NavHostFragment,
app:defaultNavHost="false"
b/132077777 kullanmasına rağmen sistem Geri düğmesine müdahale etmeye devam ediyor
Yeni özellikler
- Artık
navigate
işlemi yaptığınızdaDialogFragment
gösterecek<dialog>
hedefleri oluşturabilirsiniz.NavHostFragment
, varsayılan olarak iletişim kutusu hedeflerini destekler. b/80267254 navigate
öğesini bir kaynak kimliği veyaNavDirections
örneğiyle çağırmaya ek olarak, artık doğru hedefe gitmek için bir hedefe eklediğiniz<deepLink>
öğesini kullanan birUri
üzerinden 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
NavHostFragment
içincreateFragmentNavigator()
yöntemi kullanımdan kaldırıldı ve bu yöntemin işlevi,NavHostFragment
alt sınıfını oluştururken özel Gezginlerin eklenmesi için doğru giriş noktasının olduğunu daha netleştirmek amacıyla yenionCreateNavController()
yöntemine taşındı. b/122802849NavDestination
öğesine, belirli birUri
öğesinin söz konusu hedef tarafından veyaNavGraph
durumunda, gezinme grafiğindeki herhangi bir hedef tarafından kullanılıp kullanılamayacağını kontrol etmenize olanak tanıyan birhasDeepLink()
yöntemi eklendi. b/117437718
Hata düzeltmeleri
- Varsayılan bağımsız değişkenler artık
OnDestinationChangedListener
örneğe doğru şekilde aktarılıyor. b/130630686 NavHostFragment
artıkOnBackPressedDispatcher
kullanarak sistem Geri etkinliklerine müdahale ediyor ve bir Parçaya geri dönüldükten sonra Parça yaşam döngüsü yöntemlerinde koşullu gezinme yaparken oluşan sorunu düzeltiyor. b/111598096- Güvenli Anahtarlar için
app:argType
belirtilmeyen birandroid:defaultValue=”@null”
, artık düzgün şekildestring
bağımsız değişkeni olarak değerlendiriliyor. b/129629192
Sürüm 2.1.0-alpha02
3 Nisan 2019
androidx.navigation:*:2.1.0-alpha02
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
- Artık Kotlin kullanıcıları için
by navGraphViewModels()
mülk temsilcisi aracılığıyla veyaNavController
öğesine eklenengetViewModelStore()
API'yi kullanarak gezinme grafiği düzeyinde kapsama dahil edilen ViewModel'ler oluşturabilirsiniz. b/111614463
API değişiklikleri
- Artık
<activity>
hedefineapp:targetPackage
ekleyerek eşleşen paket adını sınırlayabilirsiniz. Paketin kendi uygulama kimliğinizle kısıtlanması içinapp:targetPackage="${applicationId}"
desteği sağlar. b/110975456
Hata düzeltmeleri
<activity>
hedefleri içinandroid:name
artık enflasyon zamanında bir Sınıfa ayrıştırılmadığı için dinamik özellikler kullanılırken ClassNotFoundExceptions engelleniyor. b/124538597
Sürüm 2.1.0-alpha01
19 Mart 2019
Bu, 2.1.0
Navigasyon'un ilk alfa sürümüdür.
Bağımlılık değişiklikleri
- Navigasyon artık
androidx.core:core:1.0.1
veandroidx.fragment:fragment:1.1.0-alpha05
özelliklerine bağlı. Bu sürüm,androidx.legacy:legacy-support-core-utils:1.0.0
bağımlılığını da ortadan kaldırır. b/128632612
API Değişiklikleri
- Kaynak kimliği ve Paket ile tıklama işleyici oluşturmaya alternatif olarak yeni bir
Navigation.createNavigateOnClickListener(NavDirections)
yöntemi eklendi. b/127631752 FragmentNavigator.instantiateFragment
desteği sonlandırıldı. Varsayılan uygulama, artık Parçaları göstermek içinFragmentFactory
kullanıyor. b/119054429
Hata Düzeltmeleri
- Gezinme, bir hedefe eklenmiş bağımsız değişkenler olduğunda artık boş bir
Bundle
göndermez. Böylece,android:defaultValue="@null"
kullanılırken sorun düzelir. b/128531879 - Güvenli Aramalar artık KotlinPoet 1.1.0'a bağlı ve çok uzun paket adlarıyla ilgili bir sorunu çözüyor. b/123654948
Sürüm 2.0.0
Sürüm 2.0.0
14 Mart 2019
2.0.0
gezinme çubuğu, 2.0.0-rc02
tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.
Sürüm 2.0.0-rc02
6 Mart 2019
Gezinme 2.0.0-rc02, androidx.navigation
grup kimliğiyle yeni yapılar sağlar 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ışıyla aynıdır ve bağımlılıklarınızı yeni bağımlılıklarla eşleşecek şekilde güncellemeniz dışında, 1.0.0-rc02 sürümünden güncellemek için kodunuzda herhangi bir değişiklik yapmanız gerekmez.
Navigasyon'un 2.X sürümlerini kullanmak için projenizin AndroidX'e taşınmış olması gerekir. Gezinme 1.0'ın kararlı sürümü, Destek Kitaplığı bağımlılıklarını kullanan son sürüm olacaktır. 1.0'dan sonraki tüm geliştirmeler AndroidX'i temel alacak ve 2.0 kararlı sürümünü temel alacaktır.
AndroidX Öncesi Bağımlılıklar
Navigasyon'un AndroidX öncesi sürümleri için aşağıdaki bağımlılıkları ekleyin:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Güvenli bağımsız değişkenler için üst düzey build.gradle
dosyanıza aşağıdaki classpath yolunu 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
gezinme çubuğu, 1.0.0-rc02
tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı.
Sürüm 1.0.0-rc02
26 Şubat 2019
Bu, Navigasyon'un 1.0.0 kararlı sürümü için ikinci sürüm adayıdır. Bu sürüm çok sayıda hata düzeltmesi içermektedir.
Hata Düzeltmeleri
- Kök grafiğin b/126251695 kimliği yoksa
popBackStack()
değerinin yoksayılmasına neden olan sorun düzeltildi. navigateUp()
artıkFLAG_ACTIVITY_NEW_TASK
olmadan bir derin bağlantıyı işledikten sonra çağrıldığında uygulamanızın görevine geri gitmeyi düzgün şekilde işliyor b/126082008ActivityNavigator.applyPopAnimationsToPendingTransition
öğesinin doğru pop çıkış animasyonunun uygulanmaması sorunu giderildi b/126237567- Güvenli Args tarafından oluşturulan Kotlin kodu artık
R
sınıfıyla ilişkili paket adındain
vefun
gibi Kotlin anahtar kelimelerinin dışında düzgün şekilde çıkış yapabiliyor. b/126020455
Sürüm 1.0.0-rc01
21 Şubat 2019
Bu, Navigasyon'un 1.0.0 kararlı sürümü için sürüm adayıdır. Bu sürümde bir hata düzeltmesi yer almaktadır.
Hata Düzeltmeleri
- Parçalar ve
singleTop
gezinme işlemleri kullanılırken karşılaşılan bir sorun düzeltildi b/124294805
Sürüm 1.0.0-beta02
12 Şubat 2019
Bu sürüm bir dizi küçük iyileştirme ve önemli hata düzeltmesi içermektedir.
Yeni Özellikler
- Artık
reference
bağımsız değişkenleri için0
öğesiniandroid:defaultValue
olarak kullanabilirsiniz. b/124248602
Davranış değişiklikleri
- Tam derin bağlantı eşleşmeleri artık
.*
içeren derin bağlantılara veya bağımsız değişken eşleşmesine göre önceliklidir. b/123969518
Hata Düzeltmeleri
popBackStack()
venavigateUp
, arka yığındaki son hedef açılırken artık doğru şekildefalse
değerini döndürüyor ve1.0.0-beta01
içinde başlatılan bir regresyonu düzeltiyor. b/123933201- Gezinme, kayıtlı örnek durumunun geri yüklenmesi sırasında
ClassLoader
özelliğini artık doğru şekilde ayarlıyor. Böylece,Navigator
kayıtlı durumda veyaNavDestination
öğesine gönderilen bağımsız değişkenlerde özel sınıflar kullanılırken sorun yaşanmıyor. b/123893858 - Güvenli Aramalar oluşturulan NavArgs sınıfları, kayıtlı örnek durumundan
Parcelable[]
bağımsız değişkeni geri yüklenirken artık kilitlenmez. b/123963545 - Güvenli Arg'lar artık gereksiz oluşturulan Kotlin sınıflarını düzgün bir şekilde temizliyor. b/124120883
Sürüm 1.0.0-beta01
4 Şubat 2019
Bu, Navigasyon'un ilk beta sürümüdür. bundan sonra, kritik bir sorun olmadığı sürece Navigasyon API'sının bir sonraki sürüme kadar kararlı kalması beklenmektedir. Bu sürüm, bazı hata düzeltmeleri ve davranış değişiklikleri içeriyor.
Davranış değişiklikleri
- Gezinme artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Güvenli Anahtarlar aracılığıyla aynı şekilde ele alınmasını sağlıyor. Sonuç olarak, yalnızca
app:argType="reference"
içeren bağımsız değişkenlerin başka bir kaynağa (örneğin,@color/colorPrimary
) varsayılan değeri olabilir. Farklı birapp:argType
ile referans varsayılan değeri kullanılmaya çalışıldığında, gezinme XML dosyası ayrıştırılırken istisna oluşur. b/123551990 - Güvenli Aramalar artık Android Gradle Plugin 3.3.0'a bağlı aosp/888413
- Güvenli Aramalar artık Kotlin 1.3.20'ye bağlı aosp/888414
Hata Düzeltmeleri
- Güvenli Arg'lar artık Android Gradle Eklentisi'nin tüm sürümlerindeki kitaplık ve özellik modüllerinde kullanılabilir. b/121304903
- Tek bir
popBackStack()
işleminin, her defasında yalnızca tek bir hedef yerine bir hedefin tüm kopyalarını arka yığının üst kısmından kaldırmasına neden olan bir regresyon düzeltildi. b/123552990 FragmentNavigator
durumununNavController
durumuyla senkronizasyonunun bozulmasına ve arka yığını geri yüklemeye çalışırkenIllegalStateException
sorununa neden olması sorunu düzeltildi.b/123803044- ProGuard ile kod karartma kullanılırken
NavigationUI
ele alınan geri okunun görünmemesine neden olan sorun düzeltildi. b/123449431 - Safe Args tarafından oluşturulan kod artık
.OuterClass$InnerClass
biçimindeki statik bir iç sınıfa işaret edenapp:argType
kullanarak düzgün şekilde işliyor. b/123736741 - Safe Args tarafından oluşturulan Java kodu artık genel işlemleri ve derinlemesine 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
ürününün Güvenli Aramalar ile ilgili bir sorunu düzelten bir düzeltme sürümüdür.
Hata Düzeltmeleri
- Güvenli Arama'ların genel işlemlerle ilişkili Yol Tarifleri sınıfını içe aktaramaması sorunu düzeltildi. b/123307342
Sürüm 1.0.0-alfa10
23 Ocak 2019
Bilinen Sorunlar
- Güvenli Aramalar genel işlemlerle ilişkili Yol Tarifleri sınıfını içe aktaramıyor. b/123307342
Bu sürümde, zarar veren API değişiklikleri yer alıyor. Lütfen aşağıdaki Kırıcı Değişiklikler bölümüne bakın.
Yeni Özellikler
- Kotlin kullanıcıları artık
by navArgs()
özelliği delegesini kullanarakActivity
veyaFragment
içindeki Güvenli Arg'lar tarafından oluşturulanNavArgs
sınıfına geç kalmadan referans alabilirler. b/122603367 - Safe Args artık
androidx.navigation.safeargs.kotlin
eklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanıyor. Kotlin kodu, öncekiandroidx.navigation.safeargs
eklentisiyle hâlâ kullanılabilen oluşturucu kalıbına göre varsayılan bağımsız değişkenler ve sabit sınıflar kullanılarak yalnızca Kotlin modülleri için özel olarak oluşturulur. b/110263087
Davranış Değişiklikleri
- Eşleşen derin bağlantılar, artık en fazla eşleşen bağımsız değişkene sahip derin bağlantıya dayalı olarak değerlendirilir. b/118393029
NavController
üzerindesetGraph()
çağrısı yapıldığında arka grup sıfırlanacaktır. b/111450672- Bilinmeyen derin bağlantılar artık
IllegalStateException
tetiklemez ancak yoksayılır ve iç içe yerleştirilmiş veya birden çokNavHostFragment
ile ilgili sorunlar düzeltilir. b/121340440
Zarar Veren Değişiklikler
- Pop animasyonları bir Etkinliğe uygulamak için kullanılan
NavOptions.applyPopAnimationsToPendingTransition()
yöntemiActivityNavigator
konumuna taşındı. b/122413117 - Güvenli Bağımsız Değişkenler artık bağımsız değişken içermeyen eylemler için aynı sınıfların yinelenmesini önler. Oluşturulan NavDirections sınıflarında bağımsız değişken yöntemleri için dönüş türü artık
NavDirections
oldu. b/123233147 - Güvenli Aramalar tarafından oluşturulan Yol Tarifi sınıflarında artık bir herkese açık kurucu mevcut değildir. Yalnızca oluşturulan statik yöntemlerle etkileşime girmeniz gerekir. b/123031660
- Oluşturulan
NavDirections
sınıfındaki Güvenli Anahtarlar artık bir herkese açık kurucuya sahip değil. Yalnızca oluşturulan Yol Tarifi sınıflarındaki statik yöntemlerle oluşturulmalıdır. b/122963206 NavDirections
'getArguments()
kaynağından döndürülenBundle
artık@Nullable
yerine@NonNull
olarak işaretlendi. b/123243957
Hata Düzeltmeleri
NavDeepLinkBuilder
artık benzersiz olup olmadığını belirlemek için gönderdiğiniz bağımsız değişkenleri kullanarak birden fazla eş zamanlıPendingIntent
öğesini aynı hedef için düzgün şekilde işliyor. b/120042732NavController
, artık iç içe yerleştirilmişNavHostFragment
veya arka yığını olan başka alt Fragments kullanırkenpopBackStack()
işlemlerini doğru şekilde yürütüyor. b/122770335NavigationUI
, Yukarı düğmesinin içerik açıklamasını artık doğru şekilde ayarlıyor. b/120395362- Güvenli Aramalar tarafından oluşturulan Yol Tarifi sınıfları, bir hedefte gerçekleşen bir işlemle aynı kimliğe sahip olan genel işlemleri artık doğru şekilde işliyor. b/122962504
- Güvenli Aramalar oluşturulan
NavDirections
sınıfları,equals()
doğru döndürüldüğünde artık doğru bir şekilde eşithashCode()
değerlere sahip. b/123043662 NavHostFragment
öğesininFragmentManager
öğesinde özelFragmentTransactions
işlemi yapmaya çalışırsanızFragmentNavigator
artık daha iyi bir hata mesajı veriyor. Her zamangetChildFragmentManager()
kullanmalısınız. b/112927148
Sürüm 1.0.0-alpha09
18 Aralık 2018
Bu sürümde, zarar veren API değişiklikleri yer alıyor. Lütfen aşağıdaki Kırıcı Değişiklikler bölümüne bakın.
android.arch.navigation:navigation-testing
yapısını geliştirmeye devam etmemeyi seçtik. NavController
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ğiyle dalga geçme gibi alternatif test stratejileri kullanmanızı kesinlikle öneririz. Bu yaklaşım, AndroidDevSummit 2018'deki Tek Etkinlik konuşmasında ayrıntılı olarak ele alınmaktadır. Özellikle Navigasyon ile testlere ilişkin ek dokümanlar üzerinde çalışacağız.
Yeni Özellikler
menuCategory="secondary"
içerenMenuItem
öğeleri,NavigationUI
yöntemleriyle birlikte kullanıldığında artık arka yığını açmaz. b/120104424AppBarConfiguration
artıknavController.navigateUp()
false
döndürdüğünde çağrılacak bir yedekOnNavigateUpListener
örneği ayarlamanıza olanak tanıyor. b/79993862 b/120690961
Zarar Veren Değişiklikler
argType="reference"
ile bir<argument>
kullanıldığında, Navigasyon artık referansı ayrıştırmaz, bunun yerine ham kaynak kimliğinin kendisini sağlar. b/111736515onNavDestinationSelected()
artık varsayılan olarak gezinme grafiğinizin başlangıç noktasına geri dönüyor. Böylecesetup
yöntemleriyle tutarlılık sağlıyorlar. Geri yığının patlamasını önlemek içinMenuItem
cihazınızamenuCategory="secondary"
ekleyin. aosp/852869- Oluşturulan
Args
sınıflarınınfromBundle()
yöntemleri artık null özellikliBundle
yerine null olmayanBundle
alıyor aosp/845616
Hata Düzeltmeleri
- Bağımsız değişkenler artık derin bağlantılardan her zaman dize olarak değil, doğru
argType
ifadesiyle düzgün bir ş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ümleriyle uyumlu b/119662045
Sürüm 1.0.0-alpha08
6 Aralık 2018
Bu sürümde, zarar veren API değişiklikleri yer alıyor. Lütfen aşağıdaki Kırıcı Değişiklikler bölümüne bakın.
Yeni Özellikler
- Hedef etiketleri,
NavigationUI
yöntemleriyle kullanıldığında artık b/80267266 doğru bağımsız değişkeniyleandroid:label
içindeki{argName}
örneği otomatik olarak değiştirecek - Navigasyon artık Destek Kitaplığı 28.0.0'ı kullanıyor b/120293333
Zarar Veren Değişiklikler
OnNavigatedListener
,OnDestinationChangedListener
b/118670572 olarak yeniden adlandırıldıOnDestinationChangedListener
, artık aosp/837142 bağımsız değişkenlerininBundle
kadarını da iletirapp:clearTask
veapp:launchDocument
özellikleri ile bunlarla ilişkili yöntemler kaldırıldı. Arka yığınınızdaki tüm hedefleri kaldırmak için grafiğinizin köküyle birlikteapp:popUpTo
kodunu kullanın. b/119628354ActivityNavigator.Extras
artıkBuilder
kalıbı kullanıyor veIntent.FLAG_ACTIVITY_
işareti ayarlama özelliğini aosp/828140 ekliyor.NavController.onHandleDeepLink
,handleDeepLink
aosp/836063 olarak yeniden adlandırıldıNavOptions
,NavInflater
,NavDeepLinkBuilder
veAppBarConfiguration
gibi alt sınıflandırmaya yönelik olmayan birçok sınıf ve yöntemfinal
aosp/835681 hale getirilmiştir.- 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
FragmentNavigator
konumuna taşındı. Bu sayede,FragmentFactory
öğesine Parça oluşturma yetkisi vermek daha kolay hale geldi. b/119054429 NavGraphNavigator
oluşturucu artıkContext
aosp/835340 kabul etmiyor- NavigatorProvider artık bir arayüz yerine bir sınıftır.
getNavigatorProvider()
tarafından döndürülenNavigatorProvider
işlevinde değişiklik yapılmadı. aosp/830660 NavDestination.navigate()
kaldırıldı. Bunun yerineNavigator
üzerindennavigate()
numaralı telefonu arayın. aosp/830663Navigator
öğesinin önemli ölçüde yeniden düzenlenmesi,OnNavigatorNavigatedListener
ihtiyacını ortadan kaldırdı ve bunun yerinenavigate
öğesinin, gidilenNavDestination
öğesini döndürmesini sağladı.Navigator
örnekleri artıkNavController
cihazına pop etkinlik gönderemez. Geri düğmesine basılmasını engellemek venavController.popBackStack()
numaralı telefonu aramak içinOnBackPressedCallback
kullanmayı düşünün. aosp/833716
Hata Düzeltmeleri
popUpTo
artık hedef,<navigation>
öğesi olduğunda tutarlı bir şekilde çalışıyor b/116831650- İç içe yerleştirilmiş grafikler kullanıldığında
IllegalArgumentException
hatasına yol açan çeşitli hatalar düzeltildi b/118713731 b/113611083 b/113346925 b/113305559 <activity>
hedeflerinindataPattern
özelliği artıktoString()
b/120161365 çağrısı yaparak Dize olmayan bağımsız değişkenlerdeki bağımsız değişkenleri doldurur
Güvenli Aramalar
- Güvenli Arg'lar, Enum değerleri dahil olmak üzere Serialize edilebilir nesneleri destekler. Sıralama türleri
sınıf adı olmadan enum sabit değerini kullanarak varsayılan bir değer ayarlayabilir
(ör.
app:defaultValue="READ"
) b/111316353 - Güvenli Aramalar, desteklenen tüm türlerdeki dizileri destekler b/111487504
- Güvenli Arg'lar artık kaynak dizinlerinin alt klasörlerini yok sayıyor b/117893516
- Güvenli Aramalar, uygun durumlarda
@Override
ek açıklamaları ekler b/117145301
Sürüm 1.0.0-alpha07
29 Ekim 2018
Yeni Özellikler
- Yeni bir AppBarConfiguration sınıfı, hangi hedeflerin üst düzey hedef olarak kabul edildiğini özelleştirmenize olanak tanır. Ayrıntılar için güncellenen belgelere göz atın. b/117333663
- Artık grafiğinizin başlangıç hedefine bağımsız değişkenler aktarabilirsiniz b/110300470
- Derin bağlantılar artık nokta, kısa çizgi ve artı işareti içeren özel şemaları destekliyor. b/112806402
Zarar Veren Değişiklikler
navigation-testing-ktx
modülü,navigation-testing artifact
içine eklendi ve artık yayınlanmayacak.navigation-testing
yapısı artık Kotlin standart kitaplığına bağımlıdır. API, Kotlin kurallarıyla daha tutarlı olacak şekilde değiştirilmiştir ancak Java'da yazılan testler için kullanmaya devam edebilirsiniz.- Meta veri manifestinde kayıtlı gezinme grafikleri artık desteklenmemektedir. 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 bir şekilde uyguluyor. b/117145284
- Özel gezginler kullanılırken yapılandırma değişikliklerinden sonra ortaya çıkan kilitlenme düzeltildi. b/110763345
Güvenli Aramalar
- Güvenli bağımsız değişkenlerin artık Android Gradle Eklentisi 3.2.1'e sabit bir bağımlılığı vardır. b/113167627
- Artık iç sınıflar için yol tarifi oluşturulabilir. b/117407555
- <include> grafiğine Yol Tarifi oluşturmayla ilgili sorun giderildi. 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 b/79665225 desteklenmektedir. Daha fazla bilgi için Gezinme Mimarisi Bileşeniyle gezinme uygulama bölümüne bakın.
NavigationView
içinde bir öğe seçildiğinde b/112158843 içeren tüm alt sayfalar kapatılır.
API Değişiklikleri
- Kisursuz Değişiklik: Gezgin
navigate()
yöntemi artık birNavigator.Extras
parametresi alıyor. - NavController'ın
getGraph()
yöntemi artıkNonNull
b/112243286 oldu
Hata Düzeltmeleri
NavigationUI.setupWithNavController()
, b/111961977 tek tek hedeflerden görüntülemeyle kullanıldığında görüntüleme sızdırmaz.onSaveState()
adlı gezgin artık yalnızca bir kez b/112627079 olarak adlandırılıyor
Güvenli Aramalar
- b/79871405 Navigasyon hedefi Yol Tarifi sınıfları, mevcut olması halinde artık üstlerinin Yol Tarifi sınıfının kapsamını genişletiyor
- Directions ve Args sınıfları artık yararlı bir
toString()
uygulamasına sahip b/111843389
Sürüm 1.0.0-alpha05
10 Ağustos 2018
Hata Düzeltmeleri
- Hatalı arka grup davranışına neden olan hatayı düzeltin. b/111907708
- Oluşturulan Arg sınıflarının
equals()
tanesindeki bir hata düzeltildi. b/111450897 - Güvenli Aramalar'daki bir derleme hatasını düzeltin. b/109409713
- Kaynak tanımlayıcılardan Java adlarına dönüşümü düzeltin b/111602491
- Safe Args eklentisinde null değer alabilmeyle ilgili hata mesajları düzeltildi.
- Eksik null değer ek açıklamaları ekleyin.
Sürüm 1.0.0-alpha04
19 Temmuz 2018
1.0.0-alpha04
gezinmesi ve ilişkili Safe Args gradle eklentisinde çok sayıda API değişikliği, davranış değişikliği ve hata düzeltmesi bulunur.
API / Davranış Değişiklikleri
- NavHostFragment, geçerli Fragment öğesini her zaman birincil gezinme parçası olarak ayarlar ve böylece dış NavController b/111345778 açılmadan önce alt parça yöneticilerinin başlatılmasını sağlar.
Güvenli Aramalar
- Kusursuz Değişiklik:
app:type
, ConstraintLayout 2.0.0-alpha1 b/111110548 gibi diğer kitaplıklarla çakışmaları önlemek içinapp:argType
olarak değiştirildi - Güvenli Aramalar'dan gelen hata mesajları artık b/111534438 tıklanabilir
- Args sınıfları artık
NonNull
özelliklerinin aslında boş b/111451769 olmadığını doğruluyor - NavDirections ve Args tarafından oluşturulan b/111455455 b/111455456 sınıflarına
NonNull
ek açıklamaları eklendi
Hata Düzeltmeleri
- Parça hedefine derin bağlantı kurulduktan sonra sistem geri düğmesiyle ilgili bir sorun düzeltildi b/111515685
Sürüm 1.0.0-alpha03
12 Temmuz 2018
1.0.0-alpha03
gezinmesi ve ilişkili Safe Args gradle eklentisinde çok sayıda API değişikliği, davranış değişikliği ve hata düzeltmesi bulunur.
API / Davranış Değişiklikleri
- Araç Çubuğu için NavigationUI.setupWithNavController yöntemi eklendi b/109868820
- CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
- popBackStack() artık geri yığın boş olduğunda veya belirtilen hedef kimliği arka yığında olmadığında b/110893637 yanlış değerini döndürüyor
- FragmentNavigator, FragmentManager durumunu kaydettikten sonra artık gezinme işlemlerini yok sayıyor ve "OnSaveInstanceState sonrası bu işlemi gerçekleştiremiyor" istisnalarını atlıyor b/110987825
Güvenli Aramalar
- Kırıcı Değişiklik: İşlem ve bağımsız değişken adlarındaki alfasayısal olmayan karakterler, ilgili NavDirections yöntem adlarında büyük/küçük harf kullanımıyla değiştirilecek
- Örneğin
DemoController.index
,setDemoControllerIndex
b/79995048 olur. - Örneğin
action_show_settings
,actionShowSettings
b/79642240 olur.
- Örneğin
- Hatalı Değişiklik: Bağımsız değişkenler artık varsayılan olarak boş olmayan kabul edilmektedir. Dize ve ayrıştırılabilir bağımsız değişkenlerde boş değerlere izin vermek için
app:nullable="true"
b/79642307 öğesini ekleyin - Artık
app:type="long"
öğesini defaultValues değerleriyle "123L" b/79563966 biçiminde kullanabilirsiniz. app:type
için tam nitelikli bir sınıf adı kullanılarak ayrıştırılabilir bağımsız değişkenler artık desteklenmektedir. Yalnızca varsayılan değer desteklenir:"@null"
b/79563966- Args sınıfları artık
equals()
vehashCode()
b/79642246 değerlerini uyguluyor - Safe Args eklentisi artık b/80036553 kütüphane projelerine uygulanabilir
- Safe Args eklentisi artık b/110011752 adlı özellik projelerine uygulanabilir
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 karşılaşılan sorunlar düzeltildi b/110178671
- b/109909461 grafiğindeki ilk hedefle
setPopUpTo
kullanılırken karşılaşılan sorunlar düzeltildi - Tüm
app:defaultValue
değerlerinin b/110710788 Dizesi olarak iletilmesiyle ilgili sorun düzeltildi. - Android Gradle Eklentisi 3.2 Beta 01 ile birlikte sunulan aapt2, artık b/79874119 Navigasyon XML dosyalarındaki her
android:name
özelliği için saklama kuralları ekliyor. - Varsayılan FragmentNavigator b/110900142 değiştirilirken bellek sızıntısı düzeltildi.
Sürüm 1.0.0-alpha02
7 Haziran 2018
Davranış Değişiklikleri
FragmentNavigator
artıksetReorderingAllowed(true)
kullanıyor. b/109826220Gezinme artık derin bağlantı URL'lerinden ayrıştırılan bağımsız değişkenlerin URLDecode'unu açıyor. b/79982454
Hata Düzeltmeleri
Parça yaşam döngüsü yöntemlerinden gezinme çağrılırken bir
IllegalStateException
sorunu düzeltildi. b/79632233Gezinme özelliği, animasyonlar kullanılırken titremeyi düzeltmek için artık Destek Kitaplığı 27.1.1'i kullanmaktadır. b/80160903
Alt parça olarak defaultNavHost="true" kullanılırken
IllegalArgumentException
düzeltmesi. b/79656847NavDeepLinkBuilder kullanılırken bir
StackOverflowError
düzeltildi. b/109653065İç içe yerleştirilmiş grafiğe geri dönülürken karşılaşılan
IllegalArgumentException
sorunu düzeltildi. b/80453447launchSingleTop
kullanılırken çakışan Parçalarla ilgili sorun düzeltildi. b/79407969Gezinme artık iç içe yerleştirilmiş grafikler için doğru sentetik arka yığını oluşturmaktadır. b/79734195
NavigationUI artık iç içe yerleştirilmiş bir grafiği
MenuItem
olarak kullanırken doğru öğeyi vurgulayacak. b/109675998
API Değişiklikleri
NavOptions
kapsamındaki işlemler ve ilişkili API içinclearTask
özelliği kullanımdan kaldırıldı. b/80338878NavOptions
kapsamındaki işlemler ve ilişkili API içinlaunchDocument
özelliği kullanımdan kaldırıldı. b/109806636
Sürüm 1.0.0-alpha01
8 Mayıs 2018
Gezinme, uygulama içi gezinme oluşturmak için bir çerçeve sağlar. Bu ilk sürüm: 1.0.0-alpha01
.