Navigasyon
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
11 Aralık 2024 | 2.8.5 | - | - | 2.9.0-alpha04 |
Bağımlılıkları beyan etme
Gezinme bağımlılığı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.4" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.4" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
Projenize Safe Args eklemek için üst düzey build.gradle
dosyanıza aşağıdaki classpath
öğesini ekleyin:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.8.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.4" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Ayrıca, mevcut iki eklentiden birini de uygulamanız gerekir.
Java veya karma Java ve Kotlin modüllerine uygun Java dil kodu oluşturmak için bu satırı uygulamanızın veya modülünüzün build.gradle
dosyasına ekleyin:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatif olarak, yalnızca Kotlin modüllerine uygun Kotlin kodu oluşturmak için şunları ekleyin:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX'e Taşıma bölümünde belirtildiği gibi, gradle.properties
dosyanızda android.useAndroidX=true
olmalıdır.
Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx dokümanlarını inceleyin.
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 2.9
Sürüm 2.9.0-alpha04
11 Aralık 2024
androidx.navigation:navigation-*:2.9.0-alpha04
yayınlanır. 2.9.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Daha önce yalnızca
reified
yöntemleriyle erişilebilen güvenli API türleri ör.composable<YourScreen>
artık doğrudan birKClass
örneği alan yeniden oluşturulmamış sürümlere sahiptir.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
Aşağıdaki tabloda, yeniden oluşturulmuş ve KClass API'leri verilmiştir.
somutlaştırılmış | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
API Değişiklikleri
- Tür güvenliği için Kotlin'e özgü
NavGraph.setStartDestination
aşırı yükleme, Java kaynaklarından gizlenir. (Ic640c, b/364634035)
Hata Düzeltmeleri
- Gezinme
2.8.5
bölümünde: Geri yığını 1 girişe indirirseniz ve aynı karede bir sistem geri düğmesi tetiklenirseNavHost
'ınPredictiveBackHandler
içinde istisna atma sorunu düzeltildi. (I1a429, b/375343407) - Gezinme
2.8.5
bölümünde: Bir grafiğinstartDestination
güncellenirkenNavDestination
NullPointerException
düzeltildi. (I99421, b/361560785)
Sürüm 2.9.0-alpha03
13 Kasım 2024
androidx.navigation:navigation-*:2.9.0-alpha03
yayınlanır. 2.9.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Gezinme türü güvenliği artık değer sınıflarını rota olarak veya rotanın bağımsız değişken türü olarak desteklemektedir. (I9344a, b/374347483)
Hata Düzeltmeleri
NavBackStackEntry
'ye bağlı birLifecycleObserver
, barındıranLifecycleOwner
(içerdiği Aktivite veya Fragment gibi) yaşam döngüsü durumunu değiştirdiğinde arka yığınta bir değişiklik tetiklediğinde ortaya çıkabilecek birConcurrentModificationException
düzeltildi. (Ia9494)
Sürüm 2.9.0-alpha02
30 Ekim 2024
androidx.navigation:navigation-*:2.9.0-alpha02
yayınlanır. 2.9.0-alpha02 sürümü bu taahhütleri içerir.
Harici Katkı
- Yeni ortak
NavController.handleDeepLink(request: NavDeepLinkRequest)
yöntemi. Teşekkür ederiz Konstantin Tskhovrebov. (I3e228)
Sürüm 2.9.0-alpha01
16 Ekim 2024
androidx.navigation:navigation-*:2.9.0-alpha01
yayınlanır. 2.9.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Özel Gezginler artık hedeflerini
SupportingPane
arayüzünü uygulayan olarak işaretleyebilir. Bu,NavController
'ye bu hedeflerin diğer hedeflerle birlikte gösterileceğini belirtir. Bu arayüz kullanılarak örneğin aynı anda birden fazla hedefRESUMED
olabilir. (Id5559) - Gezinme
2.8.3
bölümünde:@Serializable
ile doğru şekilde ek açıklama eklenmemiş, tür açısından güvenli rotaları belirlemeye yardımcı olmak içinnavigation-common
,navigation-runtime
venavigation-compose
modülleri için yeni dil bilgisi denetimleri eklendi. Bu kontrol tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Gezinme
2.8.3
bölümünde:@Keep
ile doğru şekilde ek açıklama eklenmemiş Enum bağımsız değişkenleri içeren tür açısından güvenli rotaları belirlemeye yardımcı olmak içinnavigation-common
,navigation-runtime
venavigation-compose
modülleri için yeni lint kontrolleri eklendi. Bu kontrol tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Davranış Değişiklikleri
- Daha önce
DESTROYED
olan birNavController
'yi kullanmaya çalışmak artıkIllegalStateException
'ye neden olur. (I520da, b/369616172)
Hata Düzeltmeleri
- Enum sınıfı bulunamadı istisnası, Enum sınıfının sıkıştırılmış derlemelerde silinmesi ihtimaline karşı
@Keep
ek açıklamasının kullanılmasını önerecek şekilde güncellendi. (I90e79, b/358137294)
Bilinen Sorunlar
Navigation 2.8.*
sürümünde eklenen yeni lint kurallarıyla ilgili bir sorun vardır. Bu sorun, Android Gradle Plugin 8.4 ve sonraki sürümlerde lint çalıştırmaya çalışırkenObsolete custom lint check
hatasına neden olur. (b/368070326, b/371463741)
Sürüm 2.8
Sürüm 2.8.5
11 Aralık 2024
androidx.navigation:navigation-*:2.8.5
yayınlanır. 2.8.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Geri yığını 1 girişe düşürür ve aynı karede bir sistem geri işlemi tetiklerseniz
NavHost
'ünPredictiveBackHandler
içinde istisna atma sorunu düzeltildi. (I1a429, b/375343407) - Bir grafiğin
startDestination
özelliği güncellenirkenNavDestination
NullPointerException
sorunu düzeltildi. (I99421, b/361560785) - Gezinme Oluşturma kullanılırken ve mevcut animasyonun sona erdiği karede gezinme çağrısı yapılırken beklenmedik bir ölçek animasyonuna neden olan sorun düzeltildi. (I26cb1, b/353294030)
NavBackStackEntry
'ye bağlı birLifecycleObserver
, barındıranLifecycleOwner
(ör. içeren etkinlik veya parça) yaşam döngüsü durumunu değiştirdiğinde arka yığınta bir değişiklik tetiklediğinde ortaya çıkabilecek birConcurrentModificationException
düzeltildi. (Ia9494)
Sürüm 2.8.4
13 Kasım 2024
androidx.navigation:navigation-*:2.8.4
yayınlanır. 2.8.4 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Navigasyon
2.9.0-alpha03
: Gezinme türü güvenliği artık rota olarak veya bir rotanın bağımsız değişken türü olarak değer sınıfını destekliyor (I9344a, b/374347483)
Hata Düzeltmeleri
- Gezinme
2.9.0-alpha01
bölümünde: Daha önceDESTROYED
olan birNavController
'ı kullanmaya çalışmak artıkIllegalStateException
'e neden olur. (I520da, b/369616172)
Sürüm 2.8.3
16 Ekim 2024
androidx.navigation:navigation-*:2.8.3
yayınlanır. 2.8.3 sürümü bu taahhütleri içerir.
Yeni Özellikler
@Serializable
ile doğru şekilde ek açıklama eklenmemiş, tür açısından güvenli olmayan yolları belirlemeye yardımcı olmak içinnavigation-common
,navigation-runtime
venavigation-compose
modülleri için yeni lint kontrolleri eklendi. Bu kontrol tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)@Keep
ile doğru şekilde ek açıklama eklenmemiş Enum bağımsız değişkenleri içeren tür açısından güvenli rotaları belirlemeye yardımcı olmak içinnavigation-common
,navigation-runtime
venavigation-compose
modülleri için yeni lint kontrolleri eklendi. Bu kontrol tümNavGraphBuilder
veNavDeepLinkBuilder
uzantı işlevlerine uygulanır. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Hata Düzeltmeleri
Navigation 2.8.*
sürümünde eklenen yeni lint kurallarının, Android Gradle eklentisi 8.4 ve sonraki sürümlerde lint çalıştırmaya çalışırkenObsolete custom lint check
hatasına neden olduğu sorun düzeltildi. (I1be3d, b/368070326, b/371463741)
Bilinen Sorunlar
- Gezinme lint'i, Lint 16 (AGP 8.7) veya sonraki sürümlerle lint çalıştırmaya çalışırken Eski özel lint kontrolü hatası verir. (b/371926651)
Sürüm 2.8.2
2 Ekim 2024
androidx.navigation:navigation-*:2.8.2
yayınlanır. 2.8.2 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Gezinme Türü Güvenliği artık özel
NavType
gerektirmedenDouble
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
veList<Double>?
içeren Serializable sınıflarını desteklemektedir. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Hata Düzeltmeleri
- Gezinme, bir rotanın bağımsız değişkenini
NavType
ile eşleyemediğinde gösterilen hata mesajı iyileştirildi. Yeni hata mesajı, bağımsız değişken adını, bağımsız değişkenin tam nitelikli adını ve rotanın tam nitelikli adını içerir. (Id8416, b/346264232)
Sürüm 2.8.1
18 Eylül 2024
androidx.navigation:navigation-*:2.8.1
yayınlanır. 2.8.1 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Tür güvenliği olan API'leri kullanarak
popBackStack
yapmaya çalışırken yeniden oluşturulmuş sınıf türü alanpopBackStack
işlevinin kullanılmasını sağlamak için yeni bir lint kuralı eklendi. (Ief161, b/358095343)
Hata Düzeltmeleri
- Gezinme için artık
NavGraph
'ninstartDestination
parametresine iletilen rotanın, zorunlu tüm bağımsız değişkenlerin değerlerini (boş olmayan ve varsayılan değeri olmayan bağımsız değişkenler dahil) içermesi gerekir. (I18e74, b/362594265) - Gezinme için güvenli bağımsız değişkenler, "null" değerlerinin ayrıştırılıp pakete olduğu gibi depolanacağı şekilde, null olmayan dizeler için destek ekledi. Bu, "null" değerlerinin null nesnesi olarak ayrıştırıldığı mevcut davranıştan farklıdır. Bu değişiklik yalnızca boş olmayan dize türleri için geçerlidir. Boş bırakılabilir dizeler değişmez. (I08b4a, b/348936238)
NavDestination
'lere artık hedefe açıkça eklenen derin bağlantılar dışında derin bağlantı oluşturulamaz. Bu, yalnızca bir dize rotası alan navigate işlev aşırı yüklemesini kullanarak bir hedefin rotasına gideceğiniz anlamına da gelir. Bu, potansiyel olarak korunan bir hedefe derin bağlantı oluşturmayı mümkün kılan bir güvenlik açığını düzeltir. (Ie30e6)
Bağımlılık Güncellemesi
- Gezinme Güvenli Arg'leri artık Kotlin 2.X yerine Kotlin 1.9.24'ü temel aldığından geliştiricilerin güncelleme yapması gerekmez. (a4129a)
- Gezinme E-posta Yaz'ı artık E-posta Yaz
1.7.2
'a bağlıdır.
2.8.0 sürümü
4 Eylül 2024
androidx.navigation:navigation-*:2.8.0
yayınlanır. 2.8.0 sürümü bu taahhütleri içerir.
2.7.0 sürümünden beri yapılan önemli değişiklikler
Gezinme Kotlin DSL Tür Güvenliği
- Navigasyon artık tür güvenliğine sahip nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizde hedefleri tanımlamanıza olanak tanımak için Kotlin Serialization'i kullanarak Kotlin DSL (Navigation Compose tarafından kullanılır) için tür güvenliği sağlar:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Daha fazla bilgi için Gezinme Oluşturma Toplantı Türü Güvenliği blog yayınını inceleyin.
Gezinme Oluşturma Tahmini Geri
- Gezinme Oluşturma, artık compose-animation'daki yeni
SeekableTransitionState
API'leri aracılığıyla tahmini uygulama içi geri özelliğini destekliyor. Bu sayede, tamamlanmış hareketle işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce geri hareketini kullanarak özel geçişinizle önceki hedefi görebilirsiniz.
Gezinme Parçası Kompoziti
- Navigasyon XML dosyalarınıza birleştirilebilir hedefler eklemenize olanak tanıyan
NavHostFragment
içinComposableNavHostFragment
alternatifi içeren yeni birnavigation-fragment-compose
yapı eklendi. Hercomposable
hedefi, tam nitelikli adı her hedefteandroid:name
özelliği olarak kullanılan, üst düzey, bağımsız değişken içermeyen bir@Composable
yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayıcı bir parça oluşturulur.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Diğer Değişiklikler
- Gezinme Oluştur artık Oluştur 1.7.0 sürümüne bağlıdır.
- Gezinme artık liste, diziler, haritalar gibi koleksiyona dayalı bağımsız değişkenler için
NavType<T>
alt sınıfı olan yeni birCollectionNavType<T>
sınıfı sağlar. VarsayılanNavType
dizilerinin tümü (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
veStringArrayType
) artık bu yeni sınıftan devralınır. NavType
artık Int, String, Boole, Float ve Long listeleri için yerleşik destek sunmaktadır.
Sürüm 2.8.0-rc01
21 Ağustos 2024
androidx.navigation:navigation-*:2.8.0-rc01
yayınlanır. 2.8.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Üst düzey Enum sınıflarını tür güvenli bağımsız değişkenler olarak ilettiğinizde yaşanan gezinme kilitlenmesini düzeltin. (I0ba76, b/358137294)
- Navigasyon 2.8 artık SDK 34 ile doğru şekilde çalışıyor ve AndroidX kitaplıklarının geri kalanıyla birlikte 2.9 sürümü yayınlanana kadar SDK 35'e geçmeyecek. (b/358798728)
Sürüm 2.8.0-beta07
7 Ağustos 2024
androidx.navigation:navigation-*:2.8.0-beta07
yayınlanır. 2.8.0-beta07 sürümü bu taahhütleri içerir.
Bilinen Sorunlar
- b/358137294 nedeniyle, yalnızca başka bir sınıfa yerleştirilmiş Enums'ler hazır olarak desteklenir. Üst düzey enum'ler sonraki sürümde desteklenecek.
Hata Düzeltmeleri
- Yinelenen veya paylaşılan hedeflere giderken navigasyon, grafikteki mevcut konumdan en yakın eşleşen hedefe gitmeye öncelik verir. (Ic89a4, b/352006850)
- Güvenli bağımsız değişkenlerde gezinme için yeni bir
NavType.EnumType
eklendi. Bu,Enum
türlerinin artık özelNavType
'lara ihtiyaç duymadığı anlamına gelir.Enum
'ninSerialName
özelliğinin varsayılan tam nitelikli ad olması gerektiğini unutmayın. (I66d22, b/346475493) - Güvenli bağımsız değişkenlerde gezinme özelliğine
Int?
,Long?
,Float?
,Boolean?
veEnum<*>?
dahil olmak üzere boş değer atanabilen bağımsız değişken türleri için yerleşik destek eklendi. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) NavGraph
'ye iletilenstartDestination
rotasıstartDestination.route
ile tam olarak eşleşirseNavGraph
'ninstartDestination
işlevi artık varsayılan bağımsız değişken değerlerini kullanır. (I13762, b/354046047)
Sürüm 2.8.0-beta06
24 Temmuz 2024
androidx.navigation:navigation-*:2.8.0-beta06
yayınlanır. 2.8.0-beta06 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
WrongStartDestinationType
lint kontrollerinin, iletilen sınıf türünde Companion nesnelerini kontrol etmemesi ve bu nedenle lint'in hatayı algılayamamasına neden olan sorun düzeltildi. (I92b09)
Sürüm 2.8.0-beta05
10 Temmuz 2024
androidx.navigation:navigation-*:2.8.0-beta05
yayınlanır. 2.8.0-beta05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- İç içe yerleştirilmiş
NavGraphs
'ler aynıstartDestination
rotasını paylaştığındasingleTop
navigasyon kilitlenme sorununu düzeltin. (I17b94, b/294408596)
Sürüm 2.8.0-beta04
26 Haziran 2024
androidx.navigation:navigation-*:2.8.0-beta04
yayınlanır. 2.8.0-beta04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Navigasyon, artık yol bağımsız değişkenlerinde boş dizelerle gezinmeyi desteklemektedir. (Ic5dbd, b/339481310)
- Doğrudan sınıf alanlarında
@Serializable(with =...)
aracılığıyla tanımlanan özel serileştiriciler için hata mesajını, bunun şu anda desteklenmeyen bir özellik olduğunu açıkça belirtecek şekilde iyileştirin. (I052b0, b/341319151) SavedStateHandleFactory
test API'si artık Android dışı testlerde kullanılabilir ancak Robolectric'in Bundle'larla bağımsız değişken ayrıştırmayı desteklemesi gerekir. (I76cdc, b/340966212)- Oluşturma işleminde Tür Güvenli Gezinme kullanılarak işlem sona erdikten sonra uygulama devam ettirilirken durum geri yüklemeyle ilgili kilitlenme düzeltildi. (Ia8f38, b/341801005)
- Gezinme Oluşturma'da, Tahmini Geri Hareketi iptal edildikten sonra kullanıcının geri döndüğü
NavBackStackEntry
'nin hiçbir zamanRESUMED
yaşam döngüsü durumuna geri dönmemesi sorunu düzeltildi. Bu, geri dönen hedefin bir atıştan sonra yerine anında gelmemesi yerine doğru şekilde animasyonla geri gelmesini de sağlar. (I97a0c, b/346608857) - Gezinme Oluşturma ile Tahmini Geri özelliği kullanıldığında, açılan hedef artık doğru z-sırasını alır ve gelen hedefin üstünde doğru şekilde animasyonlu olarak gösterilir. (I2077b, b/345993681)
Sürüm 2.8.0-beta03
12 Haziran 2024
androidx.navigation:navigation-*:2.8.0-beta03
yayınlanır. 2.8.0-beta03 sürümü bu taahhütleri içerir.
API Değişiklikleri
CollectionNavType
sınıfında yeni bir soyutemptyCollection()
yöntemi var. Bağımsız değişken olarak iletilen boş bir koleksiyonu işlemek için bunu geçersiz kılın. (Ie4d84, b/341723133)
Hata Düzeltmeleri
- Nihai çıkışların Uri kodlamalı olması gerektiğini vurgulamak için
NavType.serializeAsValue
veserializeAsValues
ile ilgili dokümanlar eklendi. (Ida6bd, b/344943214) toRoute<T>
işlevi, boşCollectionNavType
bağımsız değişkeniyle çağrılırken kilitlenme sorunu düzeltildi. Boş birCollectionNavType
ile gezinirken çıkış bağımsız değişkeni, Serializable sınıfınızda tanımlanan varsayılan değer veya varsayılan değer yoksaemptyCollection()
'ın döndürdüğü değer olur. (I84158, Id630f, b/342672856)
Sürüm 2.8.0-beta02
29 Mayıs 2024
androidx.navigation:navigation-*:2.8.0-beta02
yayınlanır. 2.8.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NavBackStackEntry.toRoute
, boş değer atanabilir özel birNavType
ile kullanıldığındaClassCastException
kilitlenme sorunu düzeltildi. (I1c29b, b/342239473)- Mevcut hedeften kimlik aracılığıyla erişilemeyen bir geri yığın girişini geri yüklemeye çalışırken ortaya çıkan gezinme geri yığın durumu geri yükleme sorunları düzeltildi. Rotalar kimliklerle desteklendiğinden, rotalarla oluşturulan hedefler de etkilendi. Bu, aynı temel soruna sahip
clearBackStack()
çağrısının neden olduğu kilitlenmeyi de düzeltir. (I423c3, b/339908057)
Sürüm 2.8.0-beta01
14 Mayıs 2024
androidx.navigation:navigation-*:2.8.0-beta01
yayınlanır. 2.8.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
SavedStateHandle.toRoute()
artık özel bağımsız değişken türleri için birtypeMap
parametresi alıyor. (Ie39fb, b/339026523)- Kotlin Serializable nesnesinden
SavedStateHandle
oluşturmak içinnavigation-testing
API'sine bir test API'si eklendi. (Id4867, b/339080702)
Hata Düzeltmeleri
- Gezinme Kotlin DSL işlevleri için eksik parametre dokümanları eklendi. (I26a36)
Sürüm 2.8.0-alpha08
1 Mayıs 2024
androidx.navigation:navigation-*:2.8.0-alpha08
yayınlanır. 2.8.0-alpha08 sürümü bu taahhütleri içerir.
Gezinme Oluşturma'da Safe Args
- Navigation Compose ve Kotlin Serialization'e dayalı Navigation Kotlin DSL kullanıcıları için derleme zamanında tür güvenliğini destekleme çalışmaları tamamlandı ve daha önce deneysel olan API'ler artık kararlı. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Bu işlev, tür açısından güvenli nesneler ve veri sınıfları aracılığıyla gezinme grafiğinizde hedefler tanımlamanıza olanak tanımak için Kotlin Serileştirme'yi kullanır:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Daha fazla bilgi için Gezinme Oluşturma Toplantı Türü Güvenliği blog yayınını inceleyin.
Yeni Özellikler
navigation-fragment-compose
yapı artıkComposableFragment
içindeki birleştirilebilir yöntemlere yerel birLocalFragment
bileşimi sağlar. (If35e5)NavType
artık Int, String, Boole, Float ve Long listeleri için yerleşik destek sunmaktadır. (I4b6dd, Ia914c, b/188693139)
Sürüm 2.8.0-alpha07
17 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha07
yayınlanır. 2.8.0-alpha07 sürümü bu taahhütleri içerir.
Yeni Özellikler
Navigasyon XML dosyalarınıza
composable
hedefi eklemenize olanak tanıyanNavHostFragment
içinComposableNavHostFragment
alternatifi içeren yeni birnavigation-fragment-compose
yapı taşı ekler. Hercomposable
hedefi, tam nitelikli adı her hedefteandroid:name
özelliği olarak kullanılan, üst düzey, bağımsız değişken içermeyen bir@Composable
yöntemi olarak ifade edilmelidir. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için kapsayıcı bir parça oluşturulur. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
API Değişiklikleri
- Kotlin Serialization'e dayalı bir yaklaşım kullanarak Navigation Compose'de Safe Args desteği devam etti. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
ek açıklamasıyla işaretlenmiştir. Bu ek açıklama, gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında kaldırılacaktır. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Sürüm 2.8.0-alpha06
3 Nisan 2024
androidx.navigation:navigation-*:2.8.0-alpha06
yayınlanır. 2.8.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Kotlin Serialization'e dayalı bir yaklaşım kullanarak Navigation Compose'de Safe Args desteği kullanıma sunuldu. Bu API'ler tamamlanmamıştır ve
ExperimentalSafeArgsApi
ek açıklamasıyla işaretlenmiştir. Bu ek açıklama, gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında kaldırılacaktır. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Hata Düzeltmeleri
NavHost
artık varsayılan contentAlignment bağımsız değişkeni olarakAlignment.TopStart
değerini kullanır. Bu,AnimatedContent
için varsayılan değerle uyumlu hale getirir ve merkez geçişinden beklenmedik bir ölçeklenmeyle ilgili bazı örnekleri düzeltir. (I09e72, b/330111602)- Gezinme Oluştur kullanılırken tahmini geri hareketi parmağınızla kaydırdığınızda
NavHost
artık hemen sonlandırmak yerine özel geçişi doğru şekilde tamamlayacak. (I99017, b/327292110)
Sürüm 2.8.0-alpha05
20 Mart 2024
androidx.navigation:navigation-*:2.8.0-alpha05
yayınlanır. 2.8.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık
NavGraph
'ninstartDestination
işlevinedefaultValue
'ye gerek kalmadan doğrudanstartDestination
yolunda bağımsız değişkenler iletebilirsiniz. Bu durum, iç içe yerleştirilmişNavGraph
startDestinations
için de geçerlidir. (I0e0b5, b/109505019, b/188693139)
API Değişiklikleri
- Liste, diziler ve 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 tüm
NavType
dizileri (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
veStringArrayType
) artıkCollectionNavType
türüne (Idcf79, b/188693139) sahip NavType
artık aynı türdeki iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açıkvalueEquals
API'si sağlıyor. (I6cb97, b/327229511)
Hata Düzeltmeleri
- Derin bağlantılardaki sorgu parametreleri artık dize tabanlı
NavTypes
için geçerli değerler olarak bağımsız değişken adının etrafında küme parantezi şeklindeki değerlere (ör.{argName}
) izin veriyor. Bu, bu tür bir değerin tüm türler için geçersiz (veya değer yok) olarak kabul edildiği bir sorunu düzeltir. (I18302, b/327274038) navigate
veyapopBackStack
gibi rotaları destekleyenNavController
işlevleri artıkNavTypes
dizisi bağımsız değişkenleriyle doldurulan rotaları düzgün şekilde eşleştirebilir. (Iea805, b/327229511)
Sürüm 2.8.0-alpha04
6 Mart 2024
androidx.navigation:navigation-*:2.8.0-alpha04
yayınlanır. 2.8.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık
composable
ve/veyanavigation
işlevlerinin başlatılması kapsamında tanımlayarak Gezinme Oluştur'da geçişleriniz içinSizeTranform
değerini belirtebilirsiniz. (I91062, b/296912651)
Hata Düzeltmeleri
- Oluşturma Gezinme menüsündeki
NavHost
simgesinin, Sistem Geri tuşu hareket olmadan kullanıldığında geçişi düzgün şekilde göstermemesi sorunu düzeltildi. (Iceeae, b/325998468)
Sürüm 2.8.0-alpha03
21 Şubat 2024
androidx.navigation:navigation-*:2.8.0-alpha03
yayınlanır. 2.8.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
NavBackStackEntry.savedStateHandle
, zaten ana iş akışında olması gereken kodu kullandığından artık@MainThread
olarak işaretlenmiştir. (Ibb988, b/299523245)
Hata Düzeltmeleri
- Gezinme bölümünde, ilişkili girişin
ViewModel
özelliğinin kayıtlı durumda olmadığı içinNavGraph
ViewModel'lerin çok erkenDESTROYED
olmasına neden olan bir sorun düzeltildi. (Ib6bb7, b/317581849)
Bağımlılık Güncellemesi
- Gezinme E-posta Yazma özelliği artık Compose 1.7.0-alpha03 sürümüne bağlıdır.
Sürüm 2.8.0-alpha02
7 Şubat 2024
androidx.navigation:navigation-*:2.8.0-alpha02
yayınlanır. 2.8.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Gezinme Oluşturma, artık compose-animation'daki yeni
SeekableTransitionState
API'leri aracılığıyla tahmini uygulama içi geri özelliğini destekliyor. Bu sayede, tamamlanmış hareketle işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce özel geçişinizle önceki hedefi görmek için geri hareketini kullanabilirsiniz. (I8b8e9)
Sürüm 2.8.0-alpha01
24 Ocak 2024
androidx.navigation:navigation-*:2.8.0-alpha01
yayınlanır. 2.8.0-alpha01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bir hedefte birden fazla
saveState
çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk durumun geri yüklenebildiğ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 şekilde görüntülenmemesine neden olan bir sorun düzeltildi. (#636, b/316676794)
Bağımlılık Güncellemesi
- Gezinme Oluştur özelliği artık beklenmedik bir ölçek animasyonuna neden olabilecek bir sorunun Oluştur
1.7.0-alpha01
tarafından düzeltilmesine bağlıdır. (b/297258205)
Harici Katkı
- Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcılarını kullanırken dize olmayan bağımsız değişkenlerle ilgili görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.
Sürüm 2.7.7
Sürüm 2.7.7
7 Şubat 2024
androidx.navigation:navigation-*:2.7.7
yayınlanır. 2.7.7 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme
2.8.0-alpha01
'den geri bağlandı: Tek birNavBackStackEntry
üzerinde birden fazlasaveState()
çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk kaydedilen durumun geri yüklenebildiğiBackStackState
sızıntısı düzeltildi. (I598b0, b/309559751) - Gezinme
2.8.0-alpha01
'den geri bağlandı: 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 şekilde görüntülenmemesine neden olan sorun düzeltildi. (#636, b/316676794)
Harici Katkı
- Uygulama çubuklarının başlığını doldurmak için
NavigationUI
yardımcılarını kullanırken dize olmayan bağımsız değişkenlerle ilgili görüntüleme sorununu düzelttiği için SimonMarquis'e teşekkür ederiz.
2.7.6 sürümü
2.7.6 sürümü
13 Aralık 2023
androidx.navigation:navigation-*:2.7.6
yayınlanır. 2.7.6 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NavGraph
equals()
işlevi artık yalnızca çağıran grafiğin değil, diğer grafiğin düğümlerini de doğru şekilde dikkate alıyor. Bu işlem, farklı kimliklere sahip düğümlere sahip grafiklerin artık eşit olarak değerlendirilmemesini sağlar (I401cb, b/311414915)
Sürüm 2.7.5
Sürüm 2.7.5
1 Kasım 2023
androidx.navigation:navigation-*:2.7.5
yayınlanır. 2.7.5 sürümü bu taahhütleri içerir.
Performans İyileştirmeleri
- İki grafiğin karşılaştırılmasıyla ilgili performans (hem zaman hem de tahsis sayısı açısından) önemli ölçüde iyileştirildi. Bu, yeni grafiği mevcut grafikle dahili olarak karşılaştıran
setGraph
gibi çağrıların çok daha hızlı olduğu ve atlanan kare sayısının daha az olduğu anlamına gelir. Bu iyileştirmeye yol açan ayrıntılı analiz için Michał Z'ye teşekkür ederiz. (I6ad62) NavHost
artık güncellenmiş durumu okumak için ikinci geçişi beklemek yerine ilk kompozisyon geçişinde başlangıç hedefini oluşturacak. (I439a7, b/304852206)
Hata Düzeltmeleri
setGraph
işlevini tam olarak aynı grafikle birden fazla kez çağırırsanız ve grafiğinizde iki hedefi birbirine bağlayan bir işlem varsa geri yığınınızın açılmasına neden olan sorun düzeltildi. (Ieaed7)- Hızlı bir şekilde gidilen ve kapatılan iletişim kutuları artık
NavController.visibleEntries
listesine eklenmeyecek. (I67586, b/287969970) - Bir giriş oluşturulduktan sonra yapılandırma değişikliği yapıldığında,
saveState
yanlışsa girişinViewModel
artık düzgün şekilde temizlenecek. (Idf242, b/298164648) - Yapılandırma değişikliğinden veya
setGraph
çağrısından önce arka yığın tamamen boşsaNavController
'ün aynı derin bağlantıyı birden fazla kez işleyebildiği vesetGraph
'a yalnızca gelen Intent'teFLAG_ACTIVITY_NEW_TASK
işareti ayarlandığında çağrıldığı bir sorun düzeltildi. (I73c7f)
Bağımlılık Güncellemeleri
- Parçalarla gezinme artık Fragment 1.6.2'yi kullanıyor. Bu sayede,
clearBackStack
çağrılırken iç içe yerleştirilmiş parçalarınViewModel
örneklerinin temizlenmediği bir sorun düzeltildi.
2.7.4 sürümü
2.7.4 sürümü
4 Ekim 2023
androidx.navigation:navigation-*:2.7.4
yayınlanır. 2.7.4 sürümü bu taahhütleri içerir.
Yeni Özellikler
popBackStack
'te bulunan destekle eşleşecek şekilde, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe geri dönmek içinpopUpTo
'te bağımsız değişkenlerle rota kullanma desteği eklendi. (I731f4, b/299255572)
Hata Düzeltmeleri
popUpTo
ile bir gezinmenin başka bir gezinmeyle kesintiye uğratılmasınınFragmentNavigator
'un kilitlenmesine neden olduğu sorun düzeltildi. (I3c848, b/301887045)- Sistem geri tuşuna basıldığında
currentDestination
'ün, görüntülenen Fragment ile eşleşecek şekilde doğru şekilde güncellenmemesine neden olan sorun düzeltildi. (Id0d6c, b/289877514) DialogFragment
yaşam döngüsü, üzerindeki iletişim kutusu kapatıldığında artık uygun şekildeRESUMED
durumuna geçecektir. (I88f0d, b/301811387)
Sürüm 2.7.3
Sürüm 2.7.3
20 Eylül 2023
androidx.navigation:navigation-*:2.7.3
yayınlanır. 2.7.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Parçalarla gezinme özelliğinde,
visibleEntries
listesinin yanlış girişler içermesine neden olan bir sorun düzeltildi. (I5caa9, b/288520638) - Yüzen pencere hedefinin (ör.
Dialogs
,Bottomsheets
vb.) hiçbir zamanRESUMED
yaşam döngüsü geri çağırması almamasına neden olan bir sorun düzeltildi. (I3b866, b/287505132)
Sürüm 2.7.2
Sürüm 2.7.2
6 Eylül 2023
androidx.navigation:navigation-*:2.7.2
yayınlanır. 2.7.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme artık Yaşam Döngüsü
2.6.2
'ne bağlıdır. Bu sayede,rememberSaveable
ile Gezinme Oluşturma'nınNavHost
bileşeni arasındaki etkileşim düzeltilerek hedeflerinrememberSaveable
durumu veViewModel
'e ait tümSavedStateHandle
örnekleri, işlem sona erip yeniden oluşturulduktan sonra düzgün şekilde geri yüklenir. (b/298059596, b/289436035) - Gezinme Oluştur'da birden fazla iletişim kutusunun aynı anda gösterildiği durumlarda, kısmen gizlenen iletişim kutularının (ör. en üstteki iletişim kutusu değil)
STARTED
durumu yerineCREATED
yaşam döngüsü durumunda olması sorunu düzeltildi. (aosp/2728520, b/289257213) - Gezinme Oluştur'da aynı anda birden fazla iletişim kutusu gösterilirken en üstteki iletişim kutusunun kapatılması durumunda, yeni en üstteki iletişim kutusunun
RESUMED
'e doğru şekilde geçmek yerineSTARTED
yaşam döngüsü durumunda takılmasına neden olan bir sorun düzeltildi. (aosp/2629401, b/286371387) - Navigation Safe Args, artık gerçekten yürütülmüyorsa görevini hevesle başlatmaz. (I0e385, b/260322841)
Bağımlılık Güncellemesi
- Gezinme için Oluştur özelliği artık Oluştur 1.5.1 sürümüne 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ınlanır. 2.7.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Oluştur özelliğiyle gezinirken
Scaffold
kullanıldığındaLifecycle.State.DESTROYED
ViewModel
öğesine erişmeye çalışırken hata alınmasına neden olan sorun düzeltildi. (I1dc11, b/268422136)
2.7.0 sürümü
2.7.0 sürümü
9 Ağustos 2023
androidx.navigation:navigation-*:2.7.0
yayınlanır. 2.7.0 sürümü bu taahhütleri içerir.
2.6.0 sürümünden beri yapılan önemli değişiklikler
Eşlik edenden animasyonlar
AnimatedContent
artık kararlı olduğu için Eşlik Eden Gezinme Animasyonu'ndaki kodu Gezinme Oluşturma'ya geri taşıyabildik.
Bu, AnimatedNavHost
'te bulunan özel geçişleri ayarlamayla ilgili tüm desteğin NavHost
'te doğrudan desteklendiği anlamına gelir.
Accompanist gezinme animasyonunda başka bir değişiklik yapılmayacaktır. Yakında, bu aracın desteğini sonlandıracağız. Ayrıca, gezinme oluşturma aracına geri dönmeyle ilgili yol gösterici bilgiler de sunacağız. Ancak bu, taşıma rehberinin tam tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha
) zaten kullanıyorsanız başka API değişikliği gerekmeyecek. (b/197140101)
Hata Düzeltmeleri
- Gezinme Oluşturma'daki NavHost, etkinlik DURDURULDuktan ve DEVAM ETTİRİLDİKTEN sonra bile sistem geri çağrılarını artık doğru şekilde durduruyor. (Icb6de, b/279118447)
Bağımlılık Güncellemeleri
- Gezinme artık
1.1.0
'ten itibaren1.5.0
Oluştur'a bağlıdır.
Sürüm 2.7.0-rc01
26 Temmuz 2023
androidx.navigation:navigation-*:2.7.0-rc01
yayınlanır. 2.7.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NavHost
kapsamında oluşturulanEnterTransition
veExitTransition
lambdalarının,NavHost
bileşimden kaldırıldıktan sonra bile bellekte kalabilmesine neden olan sorun düzeltildi. (I893d0)
Bilinen Sorunlar
- Navigation 2.6.x'te, popUpTo ile gezinirken
IllegalArgumentException
'e neden olabilecek bir sorun vardır. Burada önerilen tavsiyeye benzer şekilde grafiğinizi yeniden yapılandırarak bu istisnayı önleyebilirsiniz. (b/287133013)
Sürüm 2.7.0-beta02
28 Haziran 2023
androidx.navigation:navigation-*:2.7.0-beta02
yayınlanır. 2.7.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme Yazma, artık
popUpTo
seçeneğiyle gezinme özelliğini kullanan özel geçişler için doğru z-sırasını kullanıyor.(/Ib1c3a, b/285153947)
Sürüm 2.7.0-beta01
7 Haziran 2023
androidx.navigation:navigation-*:2.7.0-beta01
yayınlanır. 2.7.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme'deki
Activity
STOPPED
veRESUMED
olduktan sonra bileNavHost
, sistem geri çağrılarını artık doğru şekilde durduruyor. (Icb6de, b/279118447)
Sürüm 2.7.0-alpha01
24 Mayıs 2023
androidx.navigation:navigation-*:2.7.0-alpha01
yayınlanır. 2.7.0-alpha01 sürümü bu taahhütleri içerir.
Eşlik edenden animasyonlar
AnimatedContent
artık kararlı olduğu için Eşlik Eden Gezinme Animasyonu'ndaki kodu Gezinme Oluşturma'ya geri taşıyabildik.
Bu, AnimatedNavHost
'te bulunan özel geçişleri ayarlamayla ilgili tüm desteğin NavHost
'te doğrudan desteklendiği anlamına gelir.
Accompanist gezinme animasyonunda başka bir değişiklik yapılmayacak ve yakında bu özelliğin desteği sonlandırılacak. Ayrıca, gezinme oluşturma özelliğine geri geçişle ilgili yol gösterici bilgiler de sağlanacak. Ancak bu, taşıma rehberinin tam tersi olacak ve en son Accompanist alfa sürümünü (0.31.2-alpha
) zaten kullanıyorsanız başka API değişikliği gerekmeyecek. (b/197140101)
Hata Düzeltmeleri
- Gezinme
2.6.0-rc02
bölümünde: Parçalarda gezinmeyle ilgili bir sorun düzeltildi. Bu sorunda,popUpTo
ile gezinirken ve bir parçayı görünümünü yeniden oluşturmadan arka yığından çıkarırken sistem geri tuşunun çalışmaması sorunu yaşanıyordu. (Ieb8d4, b/281726455)
Bağımlılık Güncellemeleri
- Gezinme artık Oluştur
1.5.0-beta01
'a bağlıdır.
2.6.0 sürümü
2.6.0 sürümü
7 Haziran 2023
androidx.navigation:navigation-*:2.6.0
yayınlanır. 2.6.0 sürümü bu taahhütleri içerir.
2.5.0 sürümünden beri Gezinme'de yapılan önemli değişiklikler
NavBackStackEntry
'ninarguments
ve birOnDestinationChangedListener
'ye iletilenarguments
artık yalnızca hedefe gittiğinizde oluşturulan değiştirilemez bağımsız değişkenlerin bir kopyasıdır. Bu, bu paketlerde yapılan değişikliklerinarguments
veya diğerOnDestinationChangedListener
örneklerine yapılan sonraki erişimlerde yansıtılmayacağı anlamına gelir.NavDeepLink
artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek yinelenen sorgu parametreleri desteklenebiliyor.NavType
artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor.NavType
'ün özel alt sınıfları artık bir değeri dize olarak serileştirmek içinserializeAsValue
'ü geçersiz kılabilir. Bu sayede hem serileştirme hem de seri bozma (parseValue
aracılığıyla) tamamenNavType
sınıfında kapsanabilir.StringType
artık belirli birString
üzerindeUri.encode
'ı çağırmak için bu yöntemi geçersiz kılıyor.
2.5.0 sürümünden bu yana Gezinme Oluşturma'da yapılan önemli değişiklikler
NavHost
ile bir bileşeni önizlerken artık varsayılan olarak NavGraph'ınstartDestination
değeri gösterilir.NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
artık kısmen veya tamamen doldurulmuş bağımsız değişkenleri olan tüm rotaları destekliyor. Bağımsız değişkenlerin, girişin bağımsız değişkenleriyle tam olarak eşleşmesi gerektiğini unutmayın.navDeepLink
Kotlin DSL'sini kullanarak boş birNavDeepLink
oluşturmaya çalışmak artık derin bağlantıların geçerli olması için bir uri, işlem ve/veya mimetype gerektiğini belirten bir lint uyarısıyla sonuçlanacaktır.
2.5.0 sürümünden bu yana, Fragment'lerle gezinme özelliğinde yapılan önemli değişiklikler
NavHostFragment
artık sistem geri düğmesinin kendisini durdurmuyor. Bu, temelFragmentManager
'ün sistem geri gönderme işlemini gerçekleştirmesine olanak tanır. Bu,1.7.0-alpha01
ve sonraki sürümlerin Android U cihazlarda uygulama içi tahmini geri animasyonu sağlamasına olanak tanır.- Gezinme'yi Fragment ile kullanırken
FragmentManager
'un arka yığınına bir Fragment ekleyenFragmentTransaction
işlemini manuel olarak yapmaya çalışmak artık birIllegalArgumentException
hatası oluşturur. Parçaları her zamannavigate()
API üzerinden eklemeniz gerekir. - Bir gezinme XML dosyasının etkinlik öğesindeki
app:data
veapp:dataPattern
özelliklerinde yer tutucu olarak tam${applicationId}
dizesi kullanıldığında, yer tutucu, şişirme işleminin ardından bağlamınpackageName
ile otomatik olarak doldurulur. FragmentNavigator
artıkNavBackStackEntries
'da gezinirken ve pop-up'ları açarken geçiş API'lerini kullanıyor. Bu,NavBackStackEntry
Lifecycle
'nin artık sonLifecycle.State
'sini taşımadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir.DialogFragmentNavigator
artıkNavBackStackEntries
'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu,NavBackStackEntry
Lifecycle
'nin artıkDESTROYED
'a taşınmadan önceDialogFragment
Lifecycle
'ninDESTROYED
'a taşınmasını bekleyeceği anlamına gelir.NavHostFragment
artıkNavController
'u yalnızcaonCreate()
'den sonra değil,NavHostFragment
FragmentManager
'ye eklendikten hemen sonra da almanıza olanak tanır.- Gezinme'nin dinamik özellik modülleri için desteği artık ayrıntılı Play Feature Delivery kitaplığına bağlıdır.
- Gezinme Güvenli Arg'leri artık Android Gradle Eklentisi 7.3.0 sürümüne bağlıdır. Bu, artık yalnızca 7.3.0 ve sonraki sürümlerle uyumlu olduğu anlamına gelir.
2.5.0 sürümünden bu yana NavigationUI'de yapılan önemli değişiklikler
- Bir gezinme grafiğinin kimliği
AppBarConfiguration
'e aktarılırken (ör.Menu
aracılığıyla),NavigationUI
artık grafikteki her varış noktasını yanlış bir şekilde üst düzey varış noktası olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç varış noktasını üst düzey varış noktası olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmemiştir. Aynı işlev,AppBarConfiguration
üzerindeki yeniisTopLevelDestination
işlevi aracılığıyla kendi kodunuzda da kullanılabilir. - Üst uygulama çubuğuyla çalışmak için
NavigationUI
'dakisetupWithNavController
entegrasyonları artıkandroid:label
'inizde bulunanReferenceType
bağımsız değişkenleri içinR.string
değerlerini otomatik olarak oluşturulan kaynak tam sayı değerini döndürmek yerine dize değerlerine ayrıştıracak. NavigationUI
artık seçili birMenuItem
üzerinden gezinmediğinde günlükler sağlar.
Sürüm 2.6.0-rc02
24 Mayıs 2023
androidx.navigation:navigation-*:2.6.0-rc02
yayınlanır. 2.6.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
popUpTo
ile gezinirken ve bir fragmanın görünümünü yeniden oluşturmadan arka yığıntan çıkarırken sistem geri tuşunun çalışmayı durdurmasına neden olan, Fragmanlarda gezinmeyle ilgili bir sorun düzeltildi. (Ieb8d4, b/281726455)
Sürüm 2.6.0-rc01
10 Mayıs 2023
androidx.navigation:navigation-*:2.6.0-rc01
yayınlanır. 2.6.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
onResume()
yaşam döngüsü geri çağırma işlevindepopUpTo
ile gezinme aracılığıyla bir parçanın kaldırılmasınınIllegalStateException
'ye neden olduğu, parçalarla gezinme özelliğiyle ilgili bir sorun düzeltildi. (I21884, b/279644470)
Sürüm 2.6.0-beta01
19 Nisan 2023
androidx.navigation:navigation-*:2.6.0-beta01
yayınlanır. 2.6.0-beta01 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavBackStackEntry
artık özeltoString
uygulaması sunuyor. (Iff00b)
Hata Düzeltmeleri
- Gezinme'yi Fragment ile kullanırken
FragmentManager
'un arka yığınına bir Fragment ekleyenFragmentTransaction
işlemini manuel olarak yapmaya çalışmak artık birIllegalArgumentException
hatası oluşturur. Parçaları her zamannavigate()
API üzerinden eklemeniz gerekir. (I6d38e) - Bir giriş ekleyen bir
navigate
ve aynı karede bu girişi kaldıran birpopBackStack
olduğunda, arka yığınta ortaya çıkan en üst giriş artık tutarlı bir şekildeRESUMED
Lifecycle.State
'e geri döner. (Id8067, b/276495952)
Sürüm 2.6.0-alpha09
5 Nisan 2023
androidx.navigation:navigation-*:2.6.0-alpha09
yayınlanır. 2.6.0-alpha09 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Geçersiz rota kontrolleri düzeltildi. Bu doğrultuda, bir
NavDestination
boş olmayanNavArgument
içeriyorsa bu hedefin rotası, boş olmayanNavArgument
ile aynı adlı bağımsız değişkenler için yer tutucular içermelidir. (Ic62bf, b/274697949) - Gezinme işleminde,
Action/MimeType
ile eşleşenNavDestination
tarafından zorunlu tutulan ve boş olmayan birNavArgument
eksikseAction/MimeType
tabanlı derin bağlantı gezinmeleri artık başarısız olur. (Ibfa17, b/271777424) NavController
, önceki grafikle aynı rotaya ve hedeflere sahip bir grafik ayarlarken artık mevcut grafik düğümlerini ve arka yığın hedeflerini yeni örneklerle düzgün bir şekilde değiştiriyor. Bu, gezinme oluşturma modunda durumu kaydetmedenonLaunchSingleTop
kullanıldığında oluşan kilitlenmeyi düzeltir. Bu, kök grafik derlemeleriyle ilişkili hedeflere gidilirken ve yanlış geri yığın oluşturulurken ortaya çıkan hatayı da düzeltir. (I5bc58, b/275258161, b/275407804)
Sürüm 2.6.0-alpha08
22 Mart 2023
androidx.navigation:navigation-*:2.6.0-alpha08
yayınlanır. 2.6.0-alpha08 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavHostFragment
artıkNavController
'u yalnızcaonCreate()
'den sonra değil,NavHostFragment
FragmentManager
'ye eklendikten hemen sonra da almanıza olanak tanır. (Ic6382, b/220186282)
Hata Düzeltmeleri
- Boş olmayan bir bağımsız değişken içeren iç içe yerleştirilmiş bir grafiği açarken oluşan
NullPointerException
hatası düzeltildi. (6b3581, b/249988437) popUpTo
ile gezinme yaptıktan sonra sistem geri tuşunu kullandığınızdaNavController
durumunun doğru girişe gelmesini sağlayabilirsiniz. (I3a8ec, b/270447657)FragmentNavigator
artık geri yığını sistem geri veyapopBackStack()
aracılığıyla açtığında ve işlem, parça için efekt kullanıp kullanmadığında girişleri düzgün şekilde açıyor. (I81bdf)- Gezinme menüsünü kullanmadan
FragmentNavigator
'aFragmentManager
fragman eklemek artık kilitlenmeye neden olmayacak. (b17204, b/274167493)
Bağımlılık Güncellemeleri
- Gezinme artık Yaşam Döngüsü
2.6.1
'ne bağlıdır. (586fe7) - Gezinme artık SavedState
1.2.1
değerine bağlıdır. (078e4e) - Gezinme artık ProfileInstaller
1.3.0
'a bağlıdır. (512f0c)
Sürüm 2.6.0-alpha07
8 Mart 2023
androidx.navigation:navigation-*:2.6.0-alpha07
yayınlanır. 2.6.0-alpha07 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Rota alan
getBackStackEntry
,popBackStack
,clearBackStack
API varyantları artık null değer alabilecek bağımsız değişkenler ve null değer alabilecek sorgu parametreleri içeren rota kalıplarını kabul ediyor (I22294, b/269302500) NavController
içindenclearBackStack()
çağrıldığında, temizlenen geri yığınıyla ilişkili parça yöneticisinde kayıtlı durumun temizlenmemesi sorunu düzeltildi. (Ic1cce, b/271190202)- Sekmeler arasında Sistem geri tuşunu kullanırken
BottomNavigationView
içindeki yanlışMenuItem
öğesinin vurgulanmasına neden olan 2.6.0-alpha06 sürümündeki bir gerileme düzeltildi. (I634f6, b/270447657) - 2.6.0-alpha06 sürümünde,
Animation
'ler kullanılırkenNavBackStackEntry
'lerin DEVAM EDEN durumuna taşınmamasına neden olan gerileme düzeltildi. (Ib3589, b/269646882)
Sürüm 2.6.0-alpha06
22 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha06
yayınlanır. 2.6.0-alpha06 sürümü bu taahhütleri içerir.
Yeni özellikler
NavHost
ile bir bileşeni önizlerken artık varsayılan olarak NavGraph'ınstartDestination
değeri gösterilir. (I2b89f)
API Değişiklikleri
- Tüm
NavController
navigate
aşırı yüklemeleri artık ana iş parçacığında çağrılmalarını sağlamak için@MainThread
ile ek açıklamaya sahiptir. (I2c0b0, b/263427111)
Hata Düzeltmeleri
- Dinamik Fragment Gezinme kullanılırken gezinmeye çalışırken kilitlenme sorunu düzeltildi. (I3ee29, b/268360479)
- Sistem geri düğmesi aracılığıyla başka bir parçaya gidildiğinde alt çubuğun seçili öğeyle güncellenmemesi sorunu düzeltildi (If559f, b/269044426)
Bilinen Sorunlar
- Gezinme, Fragment ile kullanıldığında
Animation
API'leri kullanılırkenNavBackStackEntry
'nin yaşam döngüsüRESUMED
'e ulaşamıyor. (b/269646882) - Parçalarla gezinme kullanılırken ve
BottomNavigation
ile gezinirken birden fazla giriş içeren bir geri yığınını geri yüklemeye çalışırsanızBottomMenuItem
doğru şekilde güncellenmez. (b/270447657) - Gezinme, parçalarla birlikte kullanıldığında, durum geri yüklendikten sonra
NavBackStackEntry
Lifecycle
, parçasıDESTROYED
olduğundaDESTROYED
değerini almaz . (b/270610768)
Sürüm 2.6.0-alpha05
8 Şubat 2023
androidx.navigation:navigation-*:2.6.0-alpha05
yayınlanır. 2.6.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
artık kısmen veya tamamen doldurulmuş bağımsız değişkenleri olan tüm rotaları destekliyor. Bağımsız değişkenlerin, girişin bağımsız değişkenleriyle tam olarak eşleşmesi gerektiğini unutmayın. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
artıkNavBackStackEntries
'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu,NavBackStackEntry
Lifecycle
'nin artık sonLifecycle.State
'sini taşımadan önce giriş ve çıkış parçası özel efektlerinin tamamlanmasını bekleyeceği anlamına gelir. (I3cb19, b/238686802)DialogFragmentNavigator
artıkNavBackStackEntries
'e giderken ve pop-up'ı açarken geçiş API'lerini kullanıyor. Bu,NavBackStackEntry
Lifecycle
'nin artıkDESTROYED
'a taşınmadan önceDialogFragment
Lifecycle
'ninDESTROYED
'a taşınmasını bekleyeceği anlamına gelir. (I53ee5, b/261213893)
API Değişiklikleri
NavigatorState
artıkNavigator
'lerinNavBackStackEntries
'ı araLifecycle.State
'lere taşımasına olanak tanımak içinprepareForTransition
API'yi sağlıyor. (I42c21, b/238686802)- Artık
NavGraphNavigator
veyaComposeNavigator
ile ilişkili arka yığınabackstack
mülkü aracılığıyla erişebilirsiniz.ComposeNavigator
artık bir gezinme veyapopBackStack
işlemini yürütenNavBackStackEntry
öğesini tamamlandı olarak işaretlemek içinonTransitionComplete()
geri çağırma işlevini de gösterir. (I02062, I718db, b/257519195)
Hata Düzeltmeleri
push/popWithTransition
API'leri kullanılırken ve giriş zaten işlenirken Gezgin durumu artık hiçbir işlem yapmaz. (Iadbfa, b/261213893)launchSingleTop
, iç içe yerleştirilmiş birNavGraph
ile kullanıldığında, orijinal hedeftenstartDestination
'ye kadar olan tüm hedefler yalnızca arka yığının üst kısmına düzgün şekilde eklenir. (Id4bea, b/253256629)- Gezinme,
launchSingleTop
işareti doğru olarak ayarlanmışken aynı hedefe giderken artıkDialogFragment
örneğini doğru şekilde değiştirecek. (I45b5a, b/149572817) - Gezinme SafeArgs, tam olarak 19 karakter uzunluğunda bağımsız değişkenler kullanıldığında artık derleme hatasına neden olmaz. (Id60bc, b/257110095)
Sürüm 2.6.0-alpha04
9 Kasım 2022
androidx.navigation:navigation-*:2.6.0-alpha04
yayınlanır. 2.6.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavType
'ün özel alt sınıfları artık bir değeri dize olarak serileştirmek içinserializeAsValue
'ü geçersiz kılabilir. Bu sayede hem serileştirme hem de seri bozma (parseValue
aracılığıyla) tamamenNavType
sınıfında kapsanabilir.StringType
artık belirli birString
üzerindeUri.encode
'ı çağırmak için bu yöntemi geçersiz kılıyor. (Ie5213, b/247637434)NavigationUI
artık seçili birMenuItem
üzerinden gezinmediğinde günlükler sağlar. (I2af5a, b/247730357)
Hata Düzeltmeleri
- Gezinme derin bağlantıları artık grafik başlatılırken değil, yavaşça ayrıştırılır. Bu da uygulamanın başlangıçtaki performansını artırabilir. (Iab0ab)
- Varsayılan bağımsız değişkenleri boş olan bir hedefe derin bağlantı oluşturduktan sonra yukarı gezinme nedeniyle oluşan kilitlenme düzeltildi. (I51c24, b/243183636)
Bağımlılık Güncellemesi
- Gezinme'nin dinamik özellik modülleri için desteği artık ayrıntılı Play Feature Delivery kitaplığına bağlıdır. (Ib4ddc)
- Gezinme Güvenli Arg'leri artık Android Gradle Eklentisi 7.3.0 sürümüne bağlıdır. Bu nedenle, artık yalnızca 7.3.0 ve sonraki sürümlerle uyumludur. (I47e49)
Sürüm 2.6.0-alpha03
24 Ekim 2022
androidx.navigation:navigation-*:2.6.0-alpha03
yayınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme
2.5.3
tarihinden itibaren:Crossfade
'nin oluşturabileceği bir hedef olmadığındaNavHost
artıkNoSuchElementException
'e neden olmayacak. Artık kompozisyon atlanır. (Ieb46e, b/253299416) - Gezinme
2.5.3
bölümünde: Bir hedef arka yığıntan çıkarıldığında, kaydedilen Oluştur durumunun (ör.rememberSaveable
kullanımları) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)
Bağımlılık Güncellemeleri
- Gezinme artık
1.5.4
parçasına bağlıdır. (Icd424)
Sürüm 2.6.0-alpha02
5 Ekim 2022
androidx.navigation:navigation-*:2.6.0-alpha02
yayınlanır. 2.6.0-alpha02 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
- Bir gezinme grafiğinin kimliği
AppBarConfiguration
'e aktarılırken (ör.Menu
aracılığıyla),NavigationUI
artık grafikteki her varış noktasını yanlış bir şekilde üst düzey varış noktası olarak işaretlemek yerine yalnızca söz konusu gezinme grafiğinin başlangıç varış noktasını üst düzey varış noktası olarak kabul eder. Tek bir hedefin kimliğini iletme davranışı değişmez. Aynı işlev,AppBarConfiguration
üzerindeki yeniisTopLevelDestination
işlevi aracılığıyla kendi kodunuzda da kullanılabilir. (Ie936e, b/238496771)
Hata Düzeltmeleri
navigation:navigation-fragment
bileşeni artık1.5.2
parça sürümüne bağlıdır. (I00ba4)- Seçilen menü öğesi, iletişim kutusu gibi bir
FloatingWindow
hedefine gidildiğinde artık güncellenmez. (I4cde8, b/240308330)
Sürüm 2.6.0-alpha01
7 Eylül 2022
androidx.navigation:navigation-*:2.6.0-alpha01
yayınlanır. 2.6.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Üst uygulama çubuğuyla çalışmak için
NavigationUI
'dakisetupWithNavController
entegrasyonları artıkandroid:label
'inizde bulunanReferenceType
bağımsız değişkenleri içinR.string
değerlerini otomatik olarak oluşturulan kaynak tam sayı değerini döndürmek yerine dize değerlerine ayrıştıracak. (I5f803, b/167959935) NavDeepLink
artık diziler için varsayılan değerleri destekliyor. Bu sayede, bağımsız değişkenin dizi türüyle eşlenecek yinelenen sorgu parametreleri desteklenebiliyor.NavType
artık iki ayrıştırılmış değeri birleştirmek için geçersiz kılınabilen bir varsayılan yöntem de içeriyor. (Id68c3, b/209977108)- Bir gezinme XML dosyasının etkinlik öğesindeki
app:data
veapp:dataPattern
özelliklerinde yer tutucu olarak tam${applicationId}
dizesi kullanıldığında, yer tutucu, şişirme işleminin ardından bağlamınpackageName
ile otomatik olarak doldurulur. (Iaabde, b/234223561) navDeepLink
Kotlin DSL'sini kullanarak boş birNavDeepLink
oluşturmaya çalışmak artık derin bağlantıların geçerli olması için bir uri, işlem ve/veya mimetype gerektiğini belirten bir lint uyarısıyla sonuçlanacaktır. (I08d2f, b/154038883)
API Değişiklikleri
android:label="{arg}"
biçimindeki bağımsız değişkenleri içeren dinamik etiketleri dize olarak ayrıştırmak için yeni birNavDestination
uzantı işlevi eklendi.R.string
değerlerini dize değerlerine ayırarakReferenceType
bağımsız değişkenlerini destekler. (I07d89, b/236269380)
Davranış Değişiklikleri
- NavBackStackEntry'nin
arguments
veOnDestinationChangedListener
'a iletilenarguments
artık yalnızca hedefe gittiğinizde oluşturulan ve değiştirilemeyen bağımsız değişkenlerin bir kopyasıdır. Bu, bu paketlerde yapılan değişikliklerinarguments
veya diğerOnDestinationChangedListener
örneklerine yapılan sonraki erişimlerde yansıtılmayacağı anlamına gelir. (I676f5)
Hata Düzeltmeleri
- Gezinme
2.5.2
bölümünde: Dinamik Gezinme artık diğer modüllerdeki etkinlik hedeflerine gitmeden önce bunları düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838) - Gezinme
2.5.2
: Gezinme, aynı hedefe giderken velaunchSingleTop
işaretini doğru olarak ayarlarken artık Fragment örneğini düzgün bir şekilde değiştirecek. (I5a2f1, b/237374580) - Gezinme
2.5.2
bölümünde: Yeni bir pop-up başlangıç hedefiyle üst öğeyi paylaşan çift iç içe yerleştirilmiş bir grafiğe gidildiğinde oluşanIllegalStateException
hatası düzeltildi. (I9f7cb, b/243778589)
Sürüm 2.5
Sürüm 2.5.3
24 Ekim 2022
androidx.navigation:navigation-*:2.5.3
yayınlanır. 2.5.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Crossfade
'nin oluşturabileceği bir hedef olmadığındaNavHost
artıkNoSuchElementException
'ye neden olmaz. Artık kompozisyon atlanır. (Ieb46e, b/253299416)- Bir hedef arka yığıntan çıkarıldığında, kaydedilen Oluştur durumunun (ör.
rememberSaveable
kullanımları) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)
Sürüm 2.5.2
7 Eylül 2022
androidx.navigation:navigation-*:2.5.2
yayınlanır. 2.5.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Dinamik Gezinme artık diğer modüllerdeki etkinlik hedeflerine gitmeden önce bunları düzgün şekilde yüklemeye çalışıyor. (Ia2c16, b/240292838)
- Gezinme, aynı hedefe giderken ve
launchSingleTop
işaretini doğru olarak ayarlayarak artık Fragment örneğini düzgün bir şekilde değiştirecek. (I5a2f1, b/237374580) - Yeni açılan bir başlangıç hedefiyle üst öğeyi paylaşan çift iç içe yerleştirilmiş bir grafiğe gidildiğinde ortaya çıkan
IllegalStateException
sorunu düzeltildi. (I9f7cb, b/243778589)
Bağımlılık Güncellemesi
- Gezinme
2.5.2
artık1.5.2
fragmanına bağlıdır. (aosp/2178734)
Sürüm 2.5.1
27 Temmuz 2022
androidx.navigation:navigation-*:2.5.1
yayınlanır. 2.5.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Navigation Safe Args
,Bundle
içine kaydedilen özel bağımsız değişken türleri kullanıldığında artık oluşturulan sınıflarda desteği sonlandırılma uyarılarına neden olmayacak. (Id86ed, b/237725966)
Bağımlılık Güncellemeleri
- Navigasyon kitaplığı artık Yaşam Döngüsü
2.5.1
'ne bağlıdır. (Ib4451) - Gezinme kitaplığı artık Etkinlik
1.5.1
'e bağlıdır. (I3efe8) - Gezinme kitaplığı artık
1.5.1
Fragmanı'na bağlıdır. (I56177)
2.5.0 sürümü
29 Haziran 2022
androidx.navigation:navigation-*:2.5.0
yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.
2.4.0 sürümünden beri yapılan önemli değişiklikler
- CreationExtras Entegrasyonu:
Navigation
artık Lifecycle2.5.0
'inCreationExtras
özelliği aracılığıyla durum bilgisi olmayan birViewModelProvider.Factory
sağlayabilir.
Gezinme SafeArgs
Navigation Safe Args
,Android Gradle Plugin
bağımlılığını7.0.4
'ye dayalı olacak şekilde yükseltti ve7.0
'den önceki AGP sürümleriyle uyumluluğu sonlandırdı.- applicationId yerine build.gradle ad alanı özelliğinin kullanılması için destek eklendi.
Diğer Değişiklikler
visibleEntries
API artık deneysel değildir ve hedefiNavController
'a göre şu anda görünür olan tüm girişleri almak için bir işlev sağlar.
Sürüm 2.5.0-rc02
15 Haziran 2022
androidx.navigation:navigation-*:2.5.0-rc02
yayınlanır. 2.5.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme Oluştur
NavHost
kullanılırken alt hedefler arasında hızlı geçiş yapılmasından kaynaklanan kilitlenme düzeltildi. (I3979a, b/234054916) Navigation SafeArgs
,applicationId
içermeyen birapplicationIdSuffix
ve ad alanı kullanıldığında veyaapplicationId
ile ad alanı farklı olduğunda artık kilitlenmeyecek. (I754b1, b/233119646)NavArgument
artık bağımsız değişkenin dahili değerlerini gösteren özel birtoString()
işlevine sahiptir. (I900a8)
Sürüm 2.5.0-rc01
11 Mayıs 2022
androidx.navigation:navigation-*:2.5.0-rc01
yayınlanır. 2.5.0-rc01 sürümü bu taahhütleri içerir.
Yeni Özellikler
navigation.xml
dosyanızda<deeplink>
öğelerinin<activity>
öğelerinin içine yerleştirilmesine karşı uyarıda bulunmak için yeni bir lint kuralı eklendi.(Ic15a5, b/178403185)
Hata Düzeltmeleri
NavHost
veDialogHost
içindeki derlenebilir kapsamlar artık beklenen sırada kaldırılıyor. Yani iç derlenebilirler, dış derlenebilirlerden önce kaldırılıyor. (I157e6)- Navigasyon SafeArgs, önbelleğin taşınabilir olmasına izin vermek için artık
ArgumentsGenerationTask
içindePathSensitivity.RELATIVE
kullanır. Bu sayede önbelleğe alınmış giriş, artık CI derlemesinden yerel derlemeye yeniden kullanılabilir. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetector
lint kuralı,getBackStackEntry()
çağrısını çevreleyenremember
çağrısının anahtar olarak birNavBackStackEntry
nesnesi de iletmesini sağlamak için güncellendi.(Ib7081, b/227382831)
Sürüm 2.5.0-beta01
20 Nisan 2022
androidx.navigation:navigation-*:2.5.0-beta01
yayınlanır. 2.5.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
DialogNavigator
artıkdismiss()
çağrısı yaparkenpopWithTransition
kullanıyor. Bu,dialog
içindeViewModel
kullanırken ortaya çıkan ve sistem geri tuşunu kullanarak veya iletişim kutusunun dışına dokunarak çıkmak için iletişim kutusunu kapatırkenIllegalStateException
'ye neden olan bir yarış durumunu düzeltir. (Id7376, b/226552301)
Bağımlılık Güncellemeleri
- Gezinme artık yaşam döngüsüne
2.5.0-beta01
bağlıdır. Bu sayede, birden fazla geri yığın kullanılırken birincil olmayan bir alt gezinme sekmesinde birNavHost
'yi başka birNavHost
içine yerleştirirkenIllegalStateException
düzeltilir.
Sürüm 2.5.0-alpha04
6 Nisan 2022
androidx.navigation:navigation-*:2.5.0-alpha04
yayınlanır. 2.5.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
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
öğesindekivisibleEntries
öğesine bağlıdır. Bu, iç içe yerleştirilmiş NavHost kullanıldığında içNavHost
'ün artık düzgün bir şekilde kaybolacağı anlamına gelir. (I4ba2b, b/225394514) NavController
tarafından sağlananvisibleEntries
StateFlow
, artık mevcut yaşam döngüsü durumu yerine girişin maksimum yaşam döngüsü durumunu temel alıyor. Bu,navController
öğesinin ana makine yaşam döngüsü BAŞLATILDI'nın altına düşse bile görünür girişlerin listesinin aynı kalacağı anlamına gelir. (I9e2a8, b/225394514)SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatılmış olsa bileCreationExtras
kullanımını destekliyor. Ek bilgiler sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)NavDeepLink
artık değer içermeyen tek bir sorgu parametresi içeren Uri'leri ayrıştırabilir. (I0efe8, b/148905489)- Boş dize artık derin bağlantılarda geçerli bağımsız değişken olarak kabul edilir. (I70a0d, b/217399862)
Navigation Safe Args
, ad alanları kullanılırken veAndroidManifest.xml
mevcut değilken artık kilitlenmeyecek. (I17ccf, b/227229815)
Sürüm 2.5.0-alpha03
23 Şubat 2022
androidx.navigation:navigation-*:2.5.0-alpha03
yayınlanır. 2.5.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Artık
ViewModel
oluşturmak içinCreationExtras
değeriniby navGraphViewModels
'a iletebilirsiniz. (I29217, b/217618359)
Hata Düzeltmeleri
NavDeepLinks
artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060)CreationExtras
, ViewModel oluşturmak içinNavBackStackEntries
ile birlikte kullanıldığında artık düzgün şekilde çalışacaktır. (I69161, b/217617710)- Gezinme Güvenli Arg'leri artık AndroidManifest'teki paket yerine
build.gradle
içinde tanımlanan ad alanını kullanmayı destekliyor. (I659ef, b/217414933)
Sürüm 2.5.0-alpha02
9 Şubat 2022
androidx.navigation:navigation-*:2.5.0-alpha02
yayınlanır. 2.5.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme
2.4.1
bölümünden: Görüntü bağlama özelliği, iç içe yerleştirilmiş grafiklerle kullanıldığındaNavHostFragment
artıkOnBackPressedDispatcher
değerini doğru şekilde ayarlar. (Ifbb51, b/214577959) - Gezinme
2.4.1
bölümünde: Birden fazla iç içe yerleştirilmişNavGraph
aracılığıyla derin bağlantı oluşturulurken geri yığın artık ara başlangıç hedeflerini düzgün şekilde içerecek. (I504c0, b/214383060)
Sürüm 2.5.0-alpha01
26 Ocak 2022
androidx.navigation:navigation-*:2.5.0-alpha01
yayınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavBackStackEntry
artık Yaşam Döngüsü2.5.0-alpha01
kapsamında kullanıma sunulan ViewModel CreationExtras ile entegre edilebilir. (Ib9fe2, b/207012490)
Hata Düzeltmeleri
- Bir Fragment'in
onCreate()
öğesindenby navGraphViewModels()
aracılığıyla oluşturulan birViewModel
öğesine erişilirkenIllegalStateException
hatası alınmasına neden olan sorun düzeltildi. (I8a14d) NavDeepLink
s artık args'in kodunu gereksiz yere iki kez çözmeyecek. Bu, artık doğru args'lerin nihai hedefinize iletildiği anlamına geliyor. (I31b0a, b/210711399)
Safe Args
- Güvenli Arg'ler artık Android Gradle Eklentisi 7.0.4 sürümüne bağlıdır. Bu, Gezinme Güvenli Arg'lerinin artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı ancak Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)
Sürüm 2.4.2
Sürüm 2.4.2
6 Nisan 2022
androidx.navigation:navigation-*:2.4.2
yayınlanır. 2.4.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme
2.5.0-alpha03
özelliğinden geriye aktarıldı:NavDeepLinks
artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün şekilde destekliyor. (I513d1, b/217815060) - Navigasyon
2.5.0-alpha03
'ten geriye bağlandı: Navigasyon SafeArgs artık AndroidManifest'teki paket yerinebuild.gradle
içinde tanımlanan ad alanının kullanılmasını destekliyor. (I659ef, b/217414933) - Navigasyon
2.5.0-alpha04
'ten geri bağlandı:Navigation Safe Args
, ad alanları kullanılırken veAndroidManifest.xml
mevcut değilken artık kilitlenmeyecek. (I17ccf, b/227229815) - Gezinme
2.5.0-alpha04
özelliğinden geriye aktarıldı: Boş dize artık derin bağlantılarda geçerli bağımsız değişken olarak kabul edilir. (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ınlanır. 2.4.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Görüntü bağlama özelliği, iç içe yerleştirilmiş grafiklerle kullanıldığında
NavHostFragment
artıkOnBackPressedDispatcher
değerini doğru şekilde ayarlar. (Ifbb51, b/214577959) - Birden fazla iç içe yerleştirilmiş
NavGraph
üzerinden derin bağlantı oluşturulurken arka yığın artık ara başlangıç hedeflerini düzgün şekilde içerecek. (I504c0, b/214383060) - Gezinme
2.5.0-alpha01
'den geri bağlandı: Bir Fragment'inonCreate()
bölümündenby navGraphViewModels()
aracılığıyla oluşturulan bir ViewModel'e erişilirkenIllegalStateException
hatası alınmasıyla ilgili sorun düzeltildi. (I8a14d) - Gezinme
2.5.0-alpha01
'den geri bağlandı:NavDeepLink
artık gereksiz yere bağımsız değişkenleri iki kez kod çözmüyor. Bu, düzgün şekilde kod çözülmüş bağımsız değişkenlerin artık nihai hedefinize iletildiği anlamına geliyor. (I31b0a, b/210711399) - Navigasyon
2.5.0-alpha01
'dan geriye bağlandı: Güvenli Arg'ler artık Android Gradle Eklentisi 7.0.4 sürümüne bağlıdır. Bu, Gezinme Güvenli Arg'lerinin artık 7.0 öncesi Android Studio sürümleriyle uyumlu olmayacağı ancak Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu olacağı anlamına gelir. (I41c88, b/213086135, b/207670704)
Sürüm 2.4.0
Sürüm 2.4.0
26 Ocak 2022
androidx.navigation:navigation-*:2.4.0
yayınlanır. 2.4.0 sürümü bu taahhütleri içerir.
2.3.0 sürümünden beri yapılan önemli değişiklikler
- Tüm gezinme yapıları Kotlin'de yeniden yazıldı. Bu sayede, genel sınıfların (
NavType
alt sınıfları gibi) boşluk kabul etme özelliği iyileştirildi.-ktx
yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı.-ktx
yapıları yayınlanmaya devam eder ancak tamamen boştur. navigation-fragment
yapıları artık yeniAbstractListDetailFragment
aracılığıyla iki bölmeli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu fragmanda, bir liste bölmesini (alt sınıfınızın sağladığı) yönetmek için birSlidingPaneLayout
ve örnek uygulamamızda görüldüğü gibi uygulama olarak birNavHostFragment
kullanan bir ayrıntı bölmesi kullanılır.NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
değiştiğinde yayınlanan birFlow
sağlar. Bu akış,OnDestinationChangedListener
'ü manuel olarak yönetmenin alternatifi olarak kullanılabilir.- NavController artık deneysel
visibleEntries
mülkü aracılığıyla tüm görünürNavBackStackEntry
örneklerinin listesiniStateFlow
olarak alma olanağı sunar. - Artık özel NavTypes oluşturmak için
NavType
sınıfını genişletebilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL aracılığıyla) desteklenir. Gezinme artık özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek
findStartDestination()
vegetHierarchy()
API'leri sağlıyor.findStartDestination()
,NavGraph
'daki bir uzantı işlevidir.startDestination
kendisi iç içe yerleştirilmiş birNavGraph
olsa bile grafiğe gittiğinizde gösterilecek gerçek başlangıç hedefini bulur.getHierarchy()
,NavDestination
üzerinde belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen bir işlevdir.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
BottomNavigationView
alanNavigationUI
yöntemleri,1.4.0
materyalinde tanıtılanNavigationBarView
üst sınıfını alacak şekilde güncellendi. Bu sayede bu yöntemlerNavigationRailView
ile kullanılabilir.Bir
<action>
öğesi XML aracılığıyla şişirilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"
söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir.Güvenli bağımsız değişkenler artık her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturur. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Gezinme Rotaları ve Kotlin DSL
Gezinme'nin önceki sürümlerinde, her hedefin sabit bir tam sayı kimliğine sahip olması gerekirdi. Bu kimlik, hedefi kardeş hedeflerden benzersiz şekilde tanımlar ve doğrudan veya bir işlem aracılığıyla bu hedefe navigate()
yapmanıza olanak tanır. Bu yöntem, özellikle gezinme grafiğinizi XML'de tanımladığınız ve otomatik olarak oluşturulan R.id
sabitlerini veya Safe Args'i (derleme sırasında kod oluşturmak için bu sabitleri kullanır) kullanabileceğiniz durumlarda geçerli ve yararlı olmaya devam etmektedir. Ancak bu benzersiz tam sayı sistemi, Navigation Kotlin DSL aracılığıyla çalışma zamanında programatik olarak oluşturulan tamamen dinamik grafikleri desteklemek için gereken anlamsal anlamı ve ifade gücünü yakalamamıştır.
Bu sürümde, bir hedefi navigasyon grafiğinde rotasına göre benzersiz şekilde tanımlamak için yeni bir seçenek sunulmaktadır. Rota, bir hedefe giden benzersiz yolu tanımlayan bir String
öğesidir. Hedef kimliği alan tüm Kotlin DSL yöntemlerinin desteği sonlandırıldı ve bu yöntemler, rota alan eşdeğer bir API ile değiştirildi.
Her rota, ilgili hedefi tanımlayan bir Uri
öğesinin "path" kısmı olarak değerlendirilmelidir. Örneğin: home
, profile/{userId}
, profile/{userId}/friends
vb. Bir hedefin kimliği belirli bir içerikle ilişkilendirildiğinde bu dinamik bağımsız değişkenler, örtülü derin bağlantılar ile aynı kurallara uyarak rotanın bir parçası olmalıdır.
Eskiden yalnızca kimlik alan tüm NavController
API'lerinin artık bir rota String
alan aşırı yüklemesi vardır. Buna navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
dahildir.
Bu durum API'ler açısından bazı sonuçlara yol açmıştır:
- Kotlin DSL'deki
popUpTo
Kotlin özelliğinin desteği sonlandırıldı vepopUpToId
özelliğinin desteğine geçildi. getStartDestination()
API'si,getStartDestinationId()
API'si lehine kullanımdan kaldırıldı.
Kimliğe göre gezinmenin aksine, rotaya göre gezinme, örtülü derin bağlantılar ile aynı kuralları izler. Bu sayede, herhangi bir iç içe yerleştirilmiş grafikteki herhangi bir hedefe doğrudan gidebilirsiniz. Böylece, her hedefe harici olarak görünür bir derin bağlantı eklemeden bu rotaların çok modüllü projelerde kullanılabilmesini sağlayabilirsiniz.
Gezinme Oluştur
navigation-compose
yapı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable
işlevlerini kullanır.
Bu sürümde şunlar sağlanır:
composable
vedialog
hedeflerini kullanarak navigasyon grafiğinizi Kotlin DSL aracılığıyla oluşturmanıza olanak tanıyan birNavHost
bileşeni ve Refakatçi Navigasyon Materyali'ndekiler gibi isteğe bağlı Gezginler için destek.- Hedefler arasında geçiş için zorunlu destek. Eşlik Eden Gezinme Animasyonu, deneysel Oluşturma API'lerini kullanarak giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
- Her bir derlenebilir hedef için
Lifecycle
kapsamı. Her hedef, yalnızca giriş geçişleri sona erdiğindeRESUMED
durumuna ulaşır ve çıkış geçişleri başladığında hemenSTARTED
durumuna düşer. Böylece, yalnızcaLifecycle
RESUMED
olduğunda birnavigate
çağrısı tetikleyerek tümIllegalStateException
ve çoklu dokunma sorunlarını önleyebilirsiniz. ViewModel
kapsamı (hedef düzeyde Lifecycle ViewModel Compose2.4.0
'inviewModel()
API'si veya Hilt Navigation Compose1.0.0
'inhiltViewModel()
aracılığıyla) yapılandırma değişikliklerinden etkilenmeyen ve arka yığınta bulunan (Composable içeriğiniz başka bir şekilde kaldırıldığında) bir kapsam sağlar ve ViewModel'inonCleared()
bölümünde, buNavBackStackEntry
ile ilişkili durumun kalıcı olarak kaldırıldığını ve temizlendiğini belirten bir sinyal gönderir.rememberSaveable
durumunun hedef düzeyinde kapsamı, bir hedefe geri döndüğünüzde tüm derlenebilir durumun otomatik olarak kaydedilip geri yüklenmesini sağlar.- İşlem sona erdikten ve yeniden oluşturulduktan sonra
NavController
ve hedefinin durumunu kaydetme ve geri yükleme için tam destek. - Sistem geri düğmesiyle otomatik entegrasyon.
Parametreleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere bir sonuç döndürme desteği.
Yükseltme durumuna izin vermek ve
NavController
'ıNavHost
dışındaki bileşenlere (alt gezinme çubuğu gibi) bağlamak içinrememberNavController()
vecurrentBackStackEntryAsState()
'te belirli yardımcılar oluşturun.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Daha fazla bilgi için Gezinme oluşturma kılavuzuna bakın.
Birden fazla geri yığın
NavController, hedeflerin arka yığınını yönetmekten, navigate()
yaptığınızda hedefleri arka yığına eklemekten ve popBackStack()
'ı çağırdığınızda veya sistem geri düğmesini tetiklediğinizde bunları kaldırmaktan sorumludur. Mevcut NavOptions
sınıfı ve gezinme grafiği XML'indeki <action>
öğeleriyle entegrasyon, geri yığınının kaydedilmesini ve geri yüklenmesini desteklemek için genişletildi.
Bu değişiklik kapsamında, onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
'in NavigationUI
yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükler. Böylece, herhangi bir kod değişikliği yapmadan birden fazla geri yığın desteği sağlanır. Navigasyon'u Fragment'lerle kullanırken birden fazla arka yığınla entegrasyon için önerilen yöntem budur.
Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler çeşitli platformlar üzerinden sunulur:
Gezinme XML'inde
<action>
öğesi artıkapp:popUpTo
aracılığıyla açılan tüm hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkili durumu geri yüklemek içinapp:popUpToSaveState
veapp:restoreState
'nin doğru/yanlış özelliklerini kullanabilir:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL'depopUpTo
oluşturucuyarestoreState
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ştururkensetRestoreState()
vesetPopUpTo()
için yeni aşırı yükleme yöntemini kullanarak ek birsaveState
parametresi alabilirsiniz.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
için programatik çağrılar artık ek birsaveState
parametresi içerebilir.popBackStack()
veyapopUpToSaveState
ile kaydedilen tüm durumları temizlemek içinclearBackStack()
yöntemini kullanabilirsiniz.
Her durumda NavController
, gezinme hedefi kapsamlı ViewModel
örnekleri dahil olmak üzere her NavBackStackEntry
örneğinin durumunu kaydedip geri yükler. Navigator
API'leri, her Navigator
'ın kendi durumunu kaydetme ve geri yükleme özelliğini desteklemesi için güncellendi.
Davranış değişiklikleri
NavDeepLinkBuilder
artıkcreatePendingIntent()
tarafından döndürülenPendingIntent
değerinePendingIntent.FLAG_IMMUTABLE
değerini ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlıyor.- Navigasyon artık Lifecycle
2.3.1
'e bağlıdır veNavBackStackEntry
Lifecycle
öğesini güncelleyen yöntemleri (setGraph()
,popBackStack()
,navigateUp()
venavigate()
)@MainThread
olarak işaretleyerek Navigasyon'u Lifecycle2.3.0
'de kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirir. - Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar)
Uri
içinde bulunduğunu doğrular. NavDeepLink
ayrıştırılmış bağımsız değişkenler artık soru işaretleriyle aynı şekilde, yol segmentleri arasında ayırıcı olarak pound işaretlerini dikkate alır. Bu sayede, bağımsız değişkenin pound işaretine sığması önlenir.- Safe Args'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değeri olmayan bağımsız değişkenleri parametre olarak varsayılan değeri olan bağımsız değişkenlerden önce yerleştiriyor.
- Safe Args, artık bağımsız değişkenler oluştururken varsayılan değeri olmayan parametreleri varsayılan değeri olan parametrelerden önce yerleştiriyor.
- Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda,
applicationIdTextResource
kullanmayla ilgili uyarıyı artık almayacaksınız.
Bilinen sorunlar
- Gezinme
2.5.0-alpha01
bölümünde düzeltildi: Bir parçanınonCreate()
bölümündenby navGraphViewModels()
aracılığıyla oluşturulan birViewModel
'a erişildiğindeIllegalStateException
hatası oluşur. (b/213504272) - Gezinme
2.5.0-alpha01
bölümünde düzeltildi: Safe Args 2.4.0, Android Gradle Eklentisi 7.1.0 ve sonraki sürümlerle uyumlu değildir. (b/213086135) - Birden fazla iç içe yerleştirilmiş gezinme grafiğiyle derin bağlantı oluşturmak, tam geri yığınını doğru şekilde oluşturmaz. (b/214383060)
Sürüm 2.4.0-rc01
15 Aralık 2021
androidx.navigation:navigation-*:2.4.0-rc01
yayınlanır. 2.4.0-rc01 sürümü bu taahhütleri içerir.
Davranış değişiklikleri
NavDeepLink
ayrıştırılmış bağımsız değişkenler artık bağımsız değişkenler arasındaki ayırıcı olarak soru işaretleriyle aynı şekilde pound işaretlerini dikkate alır. (I21309, b/180042703)
Hata Düzeltmeleri
- Derin bağlantılar artık yer tutucunun adıyla aynı değere sahip bağımsız değişkenleri yoksayacaktır. (If8017, b/207389470)
NavController
,NavController
geri yüklendikten sonra geçişler kullanılarak iç içe yerleştirilmiş bir hedef açarken artık kilitlenmeyecek. (I0f7c9, b/205021623)- Geçersiz bir
startDestination
kullanıldığında gösterilen hata mesajı, artık varsayılan olarak başlangıç hedefinin rotasını (varsa) gösterir. (I86b9d, b/208041894)
Gezinme Compose Hata Düzeltmeleri
- Alt gezinme menüsü öğeleri kullanılarak başlangıç hedefi ile başka bir hedef arasında hızlı geçiş yapılmasından kaynaklanan olası kilitlenme düzeltildi. (Ic8976, b/208887901)
- Yapılandırma değişiklikleri veya işlem sona erdikten sonra iletişim kutusu hedefi artık ekranın üst kısmında düzgün şekilde geri yüklenmektedir. (I4c0dc, b/207386169)
- İletişim kutusu kapatıldığında iletişim kutusunun
NavBackStackEntry
öğesindenViewModel
öğesi alınmaya çalışılırken başarısız olma sorunu düzeltildi. (I6b96d, b/206465487) - Gezinme Oluşturma'nın
NavHost
özelliğiyleactivity
hedefleri kullanılırken sonsuz yeniden oluşturma işlemine neden olan bir sorun düzeltildi. (I8f64c) - Yapılandırma değişikliği veya işlem sona erdikten sonra eski etkinliğin referansını tutmaya devam eden Gezinme Oluşturma özelliğindeki bir sızıntı düzeltildi. (I4efcb, b/204905432)
Safe Args Hata Düzeltmeleri
SafeArgs
, işlem sona erdikten sonra özel paketlenebilir dizileri geri yüklemeye çalışırken artık kilitlenmiyor. (I618e8, b/207315994)- safe args parametresinde, boole dizilerinin
null
değerine sahip olmasına izin vermeyen bir hata düzeltildi. (I8c396, b/174787525)
Sürüm 2.4.0-beta02
3 Kasım 2021
androidx.navigation:navigation-*:2.4.0-beta02
yayınlanır. 2.4.0-beta02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Hem açık hem de örtük derin bağlantıların işlenmesi artık başka bir grafiğe gidildiğinde otomatik olarak
saveState
işaretini ekler. Bu sayedeNavigationUI.setupWithNavController
gibi kodların ve birden fazla geri yığın kullanan kodların beklendiği gibi çalışması sağlanır. (Ic8807)
Davranış Değişiklikleri
- Derin bağlantı kalıpları artık şişirme sırasında değil, NavDeepLink'te üşengeç olarak derleniyor. Bu sayede, derin bağlantılar içeren gezinme grafiklerinin şişirme süresi iyileşir. (b8d257, b/184149935)
Hata Düzeltmeleri
NavHost
doğrudan etkinliğinsetContent()
'ına eklendiğinde NavBackStackEntries'inLifecycle.State.STARTED
'a taşındıktan sonraLifecycle.State.CREATED
'e itilmesiyle ilgili sorun düzeltildi. (Ia5ac1, b/203536683)- İletişim kutusu gösterilmeden önce arka yığıntan bir
DialogFragment
hedefinin kaldırılmasının, iletişim kutusunu kapatmaması ve hatalı iletişim kutusu kullanıcı tarafından manuel olarak kapatıldığında kilitlenmeye neden olması sorunu düzeltildi. (I687e5) NavigationUI
'dakionNavDestinationSelected
API'sinin, söz konusu gezinme grafiğinenavigate()
etmeseniz biletrue
döndürdüğü sorun düzeltildi. Artık hedefinhierarchy
değerini kullanarak yalnızca geçerli hedefle ilişkiliMenuItem
değerini seçmek içinsetupWithNavController
tarafından dahili olarak kullanılan mantığı kullanır. (I2b053)
Sürüm 2.4.0-beta01
27 Ekim 2021
androidx.navigation:navigation-*:2.4.0-beta01
yayınlanır. 2.4.0-beta01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık Kotlin DSL'yi Fragment'lerle kullanmayı daha iyi desteklemek için kimlik kullanmaya alternatif olarak bir rotayla
by navGraphViewModel
kullanabilirsiniz. (I901e3, b/201446416)
API Değişiklikleri
visibleEntries
API şu anda deneyseldir. (I93f6f)
Hata Düzeltmeleri
- Aynı ekranlar arasında ileri geri gidilerek geçişler kesintiye uğradığında ViewModel'ler artık yok edilmeyecektir (Id52d8, b/200817333)
- Boş bırakılabilen
NavDeepLink
bağımsız değişkenleri,NavDestination
'lara derin bağlantı eklerken artık varsayılan değer gerektirmez. (I5aad4, b/201320030) - Artık farklı yaşam döngülerine sahip NavBackStackEntries eşit kabul edilmiyor. Bu, NavHost'ın singleTop ile gezinirken ve alt menü öğelerini yeniden seçerken tüm hedefleri düzgün şekilde yeniden oluşturacağı anlamına gelir. (I1b351, b/196997433)
onCreateListPaneView()
tarafından döndürülen liste bölmesindelayout_width
velayout_weight
özelliklerinin yanlış şekilde işlenmesine ya da yoksayılmasına neden olanAbstractListDetailFragment
sorunu düzeltildi. (f5fbf3)- İletişim kutusu hedeflerinin görsel durumu artık
DialogFragmentNavigator
'ün durumuyla doğru şekilde senkronize edilir. Bu,DialogFragment
için asenkrondismiss()
API'yi manuel olarak çağırmanın artık kapatılmış olan iletişim kutusunun üzerindeki tüm iletişim kutusu hedeflerini düzgün şekilde temizlediği anlamına gelir. Bu durum, iletişim kutusunu kapatmak içinpopUpTo
veyapopBackStack()
kullandığınız durumları etkilemez. (I77ba2) AbstractAppBarOnDestinationChangedListener
artıkonDestinationChanged()
için daha net hata mesajları sunuyor. (Ie742d)
Sürüm 2.4.0-alpha10
29 Eylül 2021
androidx.navigation:navigation-*:2.4.0-alpha10
yayınlanır. 2.4.0-alpha10 sürümü bu taahhütleri içerir.
Yeni Özellikler
- NavController artık
visibleEntries
StateFlow (Ia964e) aracılığıyla tüm görünürNavBackStackEntry
örneklerini alma olanağı sunar. rememberNavController()
artık eşlik eden gezinme materyalindeki gibi isteğe bağlı gezginleri daha iyi desteklemek için döndürülenNavController
öğesine eklenecek isteğe bağlı birNavigator
örneği grubu alır. (I4619e)
Hata Düzeltmeleri
- Etkinlik yeniden oluşturulduğunda Dinamik Gezinme artık kilitlenmeyecek. (Ifa6a3, b/197942869)
- Sistem geri düğmesiyle ilgili, yalnızca
NavHost
içeren bir derlenebilir hedefe geri döndükten sonra ortaya çıkan bir sorun düzeltildi. (3ed148, b/195668143) - SafeArgs artık
fromBundle()
vefromSavedStateHandle()
için bağımsız değişkenleri doğru parametre sırasına göre oluşturuyor. (I824a8, b/200059831)
Sürüm 2.4.0-alpha09
15 Eylül 2021
androidx.navigation:navigation-*:2.4.0-alpha09
yayınlanır. 2.4.0-alpha09 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık
popBackStack()
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şkenler ve/veya derin bağlantılar listesi iletebilirsiniz. Bu bağımsız değişkenler ve derin bağlantılar, oluşturulan grafiğe otomatik olarak eklenir. (I8a470, b/182545357)
API Değişiklikleri
navArgument
Kotlin DSL işlevi artıknavigation-compose
yerinenavigation-common
'in bir parçasıdır. Bu işlevi kullanmaya devam etmek için içe aktarma işlemlerini güncellemeniz gerekir. (I1d095)
Davranış Değişiklikleri
- Safe Args, artık bağımsız değişkenler oluştururken varsayılan değeri olmayan parametreleri varsayılan değeri olan parametrelerden önce yerleştiriyor. (I89709, b/198493585)
Hata Düzeltmeleri
- Gezinme Oluşturma kullanılırken NavGraph'lar yalnızca tüm alt öğeleri
DESTROYED
olduğundaDESTROYED
olur. (I86552, b/198741720) - Boş bırakılabilen
NavDeepLink
bağımsız değişkenleri için artık varsayılan değer gerekmez. (Ia14ef, b/198689811) setGraph()
işlevinin yeni bir grafikle çağrılması, artık önceki geri yığını gösterme davranışına ek olarak kayıtlı tüm geri yığınları da temizleyecektir. (I97f96)launchSingleTop
kullanılırkenOnDestinationChangedListener
örnekleri vecurrentBackStackEntryFlow
'un bilgilendirilmediği sorun düzeltildi. (Iaaebc)
Bağımlılık Güncellemeleri
- Gezinme E-posta Yaz özelliği artık Etkinlik E-posta Yaz 1.3.1 sürümüne bağlıdır. (I05829)
- Gezinme Derlemesi artık Lifecycle ViewModel Derlemesi
2.4.0-beta01
'ne bağlıdır. (Ib86a3)
Sürüm 2.4.0-alpha08
1 Eylül 2021
androidx.navigation:navigation-*:2.4.0-alpha08
yayınlanır. 2.4.0-alpha08 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık özel NavTypes oluşturmak için
NavType
sınıfını genişletebilirsiniz. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Grafiği Kotlin DSL aracılığıyla) desteklenir. (I78440, b/196871885)
Davranış Değişiklikleri
- Safe Args'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değeri olmayan bağımsız değişkenleri parametre olarak varsayılan değeri olan bağımsız değişkenlerden önce yerleştiriyor. (Idb697, b/188855904)
- Derin bağlantılar artık gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar)
Uri
içinde bulunduğundan emin olur. (#204, b/185527157)
Hata Düzeltmeleri
- composable() içinde
getBackStackEntry
vepreviousBackStackEntry
'unremember()
ile birlikte kullanılması artık arka yığınta hedef olmadığı için istisna oluşturmayacaktır. (I75138, b/194313238) - Gezinme Oluşturma, yığın bağımsız değişkenlerini geri değiştirip
launchSingleTop=true
kullanıldığında artık düzgün şekilde yeniden oluşturuyor. (Iebd69, b/186392337) - 13 veya 29 hedef içeren bir grafikle
setGraph
'i aradığınızda artıkArrayIndexOutOfBoundsException
olmayacaktır. (I1a9f1, b/195171984) - SafeArgs Java oluşturucu artık Args sınıfları oluştururken lint uyarılarına neden olmayacak. (I1a666, b/185843837)
Harici Katkı
- Derin bağlantıların, gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar)
Uri
içinde bulunduğundan emin olmasını sağlayan ospixd'ye teşekkürler. (#204, b/185527157)
Sürüm 2.4.0-alpha07
18 Ağustos 2021
androidx.navigation:navigation-*:2.4.0-alpha07
yayınlanır. 2.4.0-alpha07 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gezinme Oluşturma, yapılandırma değişikliklerinden sonra ve birden fazla geri yığın özelliği kullanılırken grafikler değiştirilirken durumu artık düzgün şekilde kaydediyor. (If5a3d, b/195141957)
- Birden fazla geri yığınıyla gezinme oluşturma özelliği kullanılırken aynı sekmenin yeniden seçilmesi artık boş ekranla sonuçlanmayacak. (I860dc, b/194925622)
NavHost
artıkNavBackStackEntry
'lerinLifecycle.State
alanındaki değişiklikleri gözlemliyor. Bu, bir fragmandaNavHost
kullanılmasının artık yaşam döngüsü değiştikçe boş ekranla sonuçlanmak yerine düzgün şekilde yeniden oluşturulacağı anlamına geliyor. (I4eb85, b/195864489)- Bir
DialogFragment
'ü kapatmanın, etkinliğinizi yeniden oluşturduktan sonra (ör. yapılandırma değişikliğinden sonra)NavController
durumunu doğru şekilde güncellememesine neden olan sorun düzeltildi. (Icd72b) - Bir iletişim kutusu hedefinin açılmasının, NavController'ın sistem geri düğmesi işlemesini güncellememesine neden olduğu ve bu durumun, açılacak geri yığını olmamasına rağmen NavController'ın geri düğmesini durdurmasına neden olabileceği sorun düzeltildi. (If3b34)
- Safe-args artık
ViewModel
kodunuzu test etmek için kullanılabilecektoSavedStateHandle
parametreler için otomatik olarak bir yöntem oluşturur. (If1e2d, b/193353880)
Sürüm 2.4.0-alpha06
4 Ağustos 2021
androidx.navigation:navigation-*:2.4.0-alpha06
yayınlanır. 2.4.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
AbstractListDetailFragment
'dekirequireSlidingPaneLayout()
verequireDetailPaneNavHostFragment()
yöntemleri sırasıylagetSlidingPaneLayout()
vegetDetailPaneNavHostFragment()
olarak yeniden adlandırıldı. (I34a08)
Davranış Değişiklikleri
- Animasyonlarla gezinirken (
Crossfade
gibi), yeni hedefinLifecycle
artık yalnızca animasyon tamamlandığındaRESUMED
'ye ulaşır. (If0543, b/172112072, b/194301889) - Gezinme Oluştur'un
NavHost
işlevi artık grafiği ilk kompozisyonun parçası olarak ayarlar. (Ieb7be)
Hata Düzeltmeleri
- Bir gezinme grafiğinin son hedefini göstermek artık
ClassCastException
hatası oluşturmuyor. (If0543, b/172112072, b/194301889) Uri
olmadan derin bağlantı ekleyip rota veya derin bağlantı üzerinden gezinirken ortaya çıkan birNullPointerException
düzeltildi. (938a0c, b/193805425)- Derin bağlantılı bir
NavBackStackEntry
öğesininRESUMED
durumuna ulaşamamasına neden olan Navigasyon Oluşturma'daki bir sorun düzeltildi. (I192c5) - Bir iletişim kutusu hedefinin açılmasının, NavController'ın sistem geri düğmesi işleyişini güncellememesine neden olduğu ve bu durumun, açılacak geri yığını olmamasına rağmen NavController'ın geri düğmesini durdurmasına yol açabileceği bir sorun düzeltildi. (aosp/1782668)
Sürüm 2.4.0-alpha05
21 Temmuz 2021
androidx.navigation:navigation-*:2.4.0-alpha05
yayınlanır. 2.4.0-alpha05 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
- Gezinme Oluşturma'nın
NavHost
özelliği artık hedefler arasında gezinirken her zaman geçiş efektleri kullanır. (I07049, b/172112072) - Artık bir NavHost'un grafiğinde değişiklik yapabilirsiniz. Grafikte aynı startDestination ve hedeflere sahip grafikler eşit kabul edilir ve
NavController
arka yığınını temizlemez. (I0b8db, b/175392262)
Hata Düzeltmeleri
- NavController'ın durumundaki yeniden giren güncellemelerden kaynaklanan bir
NavBackStackEntry
'a bağlı birLifecycleObserver
içindenpopBackStack()
çağrılırkenNoSuchElementException
hatası düzeltildi. (I64621) AbstractListDetailFragment
artıkAbstractListDetailFragment
kullanılmadığındaSlidingPaneLayout
'nin APK'nızdan tamamen kaldırılmasına izin veriyor. (I611ad)NavGraph
veNavDestination
artık eşittir yöntemini geçersiz kılıyor. Böylece, aynı değerlere sahip iki nesne eşit olarak kabul edilir. (I166eb, b/175392262)
Sürüm 2.4.0-alpha04
1 Temmuz 2021
androidx.navigation:navigation-*:2.4.0-alpha04
yayınlanır. 2.4.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
navigation-fragment
yapıları artık yeniAbstractListDetailFragment
aracılığıyla iki bölmeli düzenin önceden oluşturulmuş bir uygulamasını içeriyor. Bu fragmanda, bir liste bölmesini (alt sınıfınızın sağladığı) yönetmek için birSlidingPaneLayout
ve örnek uygulamamızda görüldüğü gibi uygulama olarak birNavHostFragment
kullanan bir ayrıntı bölmesi kullanılır. (Iac4be, b/191276636)navigation-compose
yapısını içerenNavHost
, artıkcomposable
hedeflerine ek olarakdialog
hedeflerini de desteklemektedir. Bu iletişim kutusu hedeflerinin her biri, mevcutcomposable
hedefinin üzerinde yüzen bir KompozitDialog
içinde gösterilir. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
API Değişiklikleri
NavigatorState
içindekiadd
işlevi,push
olarak yeniden adlandırıldı.add()
için yapılan tüm mevcut çağrıların push() olarak değiştirilmesi gerekir. (Ie89fc, b/172112072)- Özel
Navigator
örnekleri artık bir hedefi asenkron olarak göndermek veya pop up olarak göstermek içinNavigatorState
'dakipushWithTransaction
vepopWithTransition
API'lerini kullanabilir. Bu API'lerin henüz dahil edilen gezginlerden hiçbiri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)
Davranış Değişiklikleri
NavDeepLinkBuilder
artıkcreatePendingIntent()
tarafından döndürülenPendingIntent
değerinePendingIntent.FLAG_IMMUTABLE
değerini ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlıyor. (If8c52)
Hata Düzeltmeleri
- Grafiğe iletilen bağımsız değişkenlerin dinamik olarak dahil edilen grafiğe doğru şekilde iletilmediği
<include-dynamic>
ile ilgili sorun düzeltildi. (I3e115) - Varsayılan değeri
@null
olan birstring[]
bağımsız değişkeni kullanılarak bir hedefe giderkenNullPointerException
hatası düzeltildi. (I1fbe8) - R8 3.1 tam modu kullanırken ortaya çıkan sorunları düzeltmek için
@Navigator.Name
için ProGuard kuralları ekleyin. (I2add9, b/191654433) - Uygulamanızı
1.5.0
öncesiKotlin
sürümleriyle derlediğinizde SafeArgs artık hata vermeyecektir. (Icd1ff, b/190739257)
Sürüm 2.4.0-alpha03
16 Haziran 2021
androidx.navigation:navigation-*:2.4.0-alpha03
yayınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Dahil edilen dinamik bir grafiğe gitmek için iki
navigate()
çağrısının gerekli olduğu sorun düzeltildi. (I7785c, b/188859835) - Üst düzey bir hedefteyken
setupActionBarWithNavController()
'ın Yukarı simgesini düzgün şekilde kaldıramamasına yol açan Gezinme2.4.0-alpha01
özelliğinde ortaya çıkan bir gerileme düzeltildi. (I5d443, b/189868637) - Daha önce NavController'ın kök grafiğini açtıktan sonra
popBackStack()
çağrılırken oluşanIllegalStateException
hatası düzeltildi. (I2a330, b/190265699) by navArgs()
için ProGuard kuralları artıknavigation-common
veya ona bağlı öğeler kullanılırken düzgün şekilde uygulanıyor. (I68800, b/190082521)- Geri çağırma aldığında ilk kez
navigate()
'u çağıran birOnDestinationChangedListener
, artık gittiği hedefi içeren ikinci bir geri çağırma alır. (Ie5f9e, b/190228815) - Safe Args, dinamik özellik modülleri ve AGP 7.0 ve sonraki sürümlerle kullanıldığında artık kilitlenmiyor. (I69518, b/189966576)
Bilinen Sorun
- Kotlin'in eski bir sürümüne bağımlı olması nedeniyle, Gradle
6.7.0
kullanılırken Güvenli ParametrelerUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
hatasıyla başarısız olur. Bu sorun, Gradle 7.0'ı kullanacak şekilde güncellenerek çözülebilir. (b/190739257)
Sürüm 2.4.0-alpha02
2 Haziran 2021
androidx.navigation:navigation-*:2.4.0-alpha02
yayınlanır. 2.4.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Rotalar artık Activity, Fragment ve Dialog hedefleri için ve DynamicNavigation Kotlin DSL'de desteklenmektedir. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
, durumunuzun kaydedilmesini devre dışı bırakmanıza olanak tanımak için geçici olarak deneysel API'ler ekledi. Durumu her zaman kaydetmek doğru davranış olsa da, desteği sonlandırılan kitaplıkların (ör.tutulan parçalar) durumu kaydederken desteklenemeyecek kullanımları vardır. Bu nedenle, uygulamalar desteklenmeyen API'lerden yavaş yavaş geçiş yapabilir. (Idf93c)Gezinme artık özel NavigationUI'yi uygulamaya yardımcı olmak için kullanılabilecek
findDestination()
vegetHierarchy()
API'leri sağlıyor.findDestination()
,NavGraph
üzerinde grafik içinde bir hedefi bulmayı sağlayan bir uzantı işlevidir.getHierarchy()
, belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilenNavDestination
işlevidir.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
BottomNavigationView
alan NavigationUI yöntemleri,1.4.0
materyalinde tanıtılanNavigationBarView
üst sınıfını alacak şekilde güncellendi. Bu sayede bu yöntemlerNavigationRailView
ile kullanılabilir. (Ib0b36, b/182938895)Bir
<action>
öğesi XML aracılığıyla şişirilirken animasyon özellikleri,app:enterAnim="?attr/transitionEnter"
söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir. (I07bc1, b/178291654)
API Değişiklikleri
- Kimlik kullanan Kotlin DSL oluşturucularının desteği sonlandırıldı ve bu oluşturucular, rota kullanan oluşturucularla değiştirilmelidir (I85b42, b/188816479) (I9f58f, b/188816479)
Hata Düzeltmeleri
DialogFragmentNavigator
artık sistem geri düğmesine basılarak veya dışındaki bir yer tıklanarak bir iletişim kutusunun kapatıldığınıNavController
'ye bildirmek içinNavigatorState.pop()
API'yi kullanıyor. BöyleceNavController
durumunun her zaman Navigator'un durumuyla senkronize olmasını sağlıyor. (I2ead9)Gezinme,
onDestinationChanged
geri çağırma işlevini kullanarakOnDestinationChangedListeners
listesini değiştirirken artıkConcurrentModificationException
hatası vermiyor. (Ib1707, b/188860458)Safe Args artık Kotlin'de yön özellikleri oluşturmaya çalışırken kilitlenmiyor. (Id2416, b/188564435)
NavDestination'daki setId yöntemi artık
@IdRes
ile uygun şekilde ek açıklamaya sahip olduğundan yalnızca kaynak kimliklerini kabul eder. (I69b80)findNode
için int parametresi artıkresid
yerineresId
. (I7711d)
Bağımlılık Güncellemesi
- Safe-Args artık Android Gradle Eklentisi 4.2.0'a bağlıdır. Bu durumda,
applicationIdTextResource
kullanmayla ilgili uyarıyı artık almayacaksınız. (I6d67b, b/172824579)
Sürüm 2.4.0-alpha01
18 Mayıs 2021
androidx.navigation:navigation-*:2.4.0-alpha01
yayınlanır. 2.4.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavController
üzerindekicurrentBackStackEntryAsFlow()
yöntemi, mevcutNavBackStackEntry
değiştiğinde yayınlanan birFlow
sağlar. Bu akış,OnDestinationChangedListener
'ü manuel olarak yönetmenin alternatifi olarak kullanılabilir. (I19c4a, #89, b/163947280)
Birden fazla geri yığın
NavController, hedeflerin arka yığınını yönetmekten, navigate()
yaptığınızda hedefleri arka yığına eklemekten ve popBackStack()
çağırdığınızda veya sistem geri düğmesini tetiklediğinizde hedefleri kaldırmaktan sorumludur. Mevcut NavOptions
sınıfı ve gezinme grafiği XML'indeki <action>
girişlerine entegrasyon, geri yığının kaydedilip geri yüklenmesini desteklemek için genişletildi. (b/80029773)
Bu değişiklik kapsamında, onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ve NavigationView.setupWithNavController()
'in NavigationUI
yöntemleri artık pop-up hedeflerin durumunu otomatik olarak kaydedip geri yükler. Böylece, herhangi bir kod değişikliği yapmadan birden fazla geri yığın desteği sağlanır. Navigasyon'u Fragment'lerle kullanırken birden fazla arka yığınla entegrasyon için önerilen yöntem budur. (Ie07ca)
Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler çeşitli platformlar üzerinden sunulur:
Gezinme XML'inde
<action>
öğesi artıkapp:popUpTo
aracılığıyla açılan tüm hedeflerin durumunu kaydetmek veapp:destination
olarak iletilen hedefle ilişkili durumu geri yüklemek içinapp:popUpToSaveState
veapp:restoreState
'nin doğru/yanlış özelliklerini kullanabilir:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL'depopUpTo
oluşturucuyarestoreState
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ştururkensetRestoreState()
vesetPopUpTo()
için yeni aşırı yükleme yöntemini kullanarak ek birsaveState
parametresi alabilirsiniz.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
için programatik çağrılar artık ek birsaveState
parametresi içerebilir.
Her durumda NavController
, gezinme hedefi kapsamlı ViewModel
örnekleri dahil olmak üzere her NavBackStackEntry
örneğinin durumunu kaydedip geri yükler. Navigator
API'leri, her Navigator
'ın kendi durumunu kaydetme ve geri yükleme özelliğini desteklemesi için güncellendi.
Navigasyon Oluşturma'da composable
varış noktaları için kullanılan ComposeNavigator
ve Fragment ile Navigasyon'da <fragment>
varış noktaları için kullanılan FragmentNavigator
ve DynamicFragmentNavigator
, yeni Navigator API'lerini kullanacak ve durumu kaydetme ve geri yüklemeyi destekleyecek şekilde güncellendi.
Gezinme Rotaları
Rota, bir hedefi benzersiz şekilde tanımlayan bir String
öğesidir. Daha önce yalnızca Navigation Compose'da kullanılan bu kavram, artık temel Navigation API'lerinin bir parçası oldu. Bu, Navigation Kotlin DSL aracılığıyla grafiğinizi oluştururken tam sayı kimlikleri kullanmaya alternatif bir yöntem sunar. (b/172823546)
Eskiden yalnızca kimlik alan tüm API'ler artık bir rota String
alan aşırı yükleme işlevine sahiptir. Buna navigate()
, popBackStack()
, popUpTo()
ve getBackStackEntry()
dahildir.
Bu durum, API'ler açısından bazı sonuçlara yol açmıştır:
- Kotlin DSL'deki
popUpTo
kotlin özelliğinin desteği sonlandırıldı vepopUpToId
özelliğinin desteğine geçildi. (I59c73, b/172823546) getStartDestination()
API'si,getStartDestinationId()
API'si lehine kullanımdan kaldırıldı. (I0887f, b/172823546)
Gezinme Oluşturma'nın önceki sürümlerinden Gezinme Oluşturma 2.4.0-alpha01
'ya yükseltme yapan geliştiriciler için bu, uzantı yöntemlerinde aşağıdaki içe aktarma işlemlerinin artık gerekli olmadığı ve kaldırılması gerektiği anlamına gelir:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
KEY_ROUTE
bağımsız değişkeni, navBackStackEntry.destination.route
işlevini doğrudan çağırmanıza olanak tanıyacak şekilde NavDestination
üzerindeki route
mülküyle değiştirildi.
API Değişiklikleri
- Tüm gezinme yapıları Kotlin'de yeniden yazıldı. Bu sayede, genel sınıfların (
NavType
alt sınıfları gibi) boşluk kabul etme özelliği iyileştirildi.-ktx
yapılarının parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı.-ktx
yapıları yayınlanmaya devam eder ancak tamamen boştur. (b/184292145) NavDeepLinkBuilder
artık oluşturulan arka yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)DynamicNavHostFragment
(Icd515, b/175222619) için fabrika işlevleri eklemeNavBackStackEntry
'lerin benzersiz kimliği artık herkese açık API'lerinin bir parçası olarak kullanıma sunuldu. (Ie033a)name
veargument
alanları veNamedNavArgument
'nin yapısını bozma işlevleri artık herkese açıktır. (#174, b/181320559)- İlgili beste yerellerine
NavBackStackEntry
sağlayan yeni birNavBackStackEntry#provideToCompositionLocals
uzantısı kullanıma sunuldu. (#175, b/187229439)
Safe Args
Güvenli bağımsız değişkenler artık her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturur. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Safe Args, KotlinPoet
1.8.0
'e bağlı olacak şekilde güncellendi. (#172, b/183990444)
Davranış Değişiklikleri
- Navigasyon artık Lifecycle
2.3.1
'e bağlıdır veNavBackStackEntry
Lifecycle
öğesini güncelleyen yöntemleri (setGraph()
,popBackStack()
,navigateUp()
venavigate()
)@MainThread
olarak işaretleyerek Navigasyon'u Lifecycle2.3.0
'de kullanıma sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirir. (b/171125856) - Derin bağlantılardaki enum bağımsız değişkenlerinin ayrıştırılması artık büyük/küçük harf duyarlı değildir. Bu sayede, enum
RED
değerine sahip olsa bilehttp://www.example.com/red
gibi bir derin bağlantı,www.example.com/{color}
derin bağlantısıyla eşleşebilir. (#152, b/135857840)
Oluşturma Uyumluluğu
androidx.navigation:navigation-compose:2.4.0-alpha01
yalnızca1.0.0-beta07
ve sonraki sürümlerin yüklü olduğu Oluştur ile uyumludur.
Hata Düzeltmeleri
- Sonraki bağımsız değişken yer tutucularının, tam olarak eşleşen son ek içeren derin bağlantılara göre öncelikli olması sorunu düzeltildi. (#153, b/184072811)
NavHostFragment
artık varsayılanDialogFragmentNavigator
ile aynı@Navigator.Name("dialog")
kullanan özel Gezgin'leri destekliyor. (Ib1c2c, b/175979140)NavigatorProvider#addNavigator
işlevinin, aynı örnekle tekrar tekrar çağrılmasının soruna neden olmaması için davranışı iyileştirildi. (#176, b/187443146)
Harici Katkılar
- Her
NavArgs
sınıfı için birfromSavedStateHandle()
yöntemi oluşturan Safe Args desteğini geliştiren simonschiller'a teşekkürler. (#122, b/136967621) - Derin bağlantılardaki Enum bağımsız değişkenlerini büyük/küçük harf duyarlı olmayan şekilde ayrıştırma özelliğini eklediğiniz için teşekkürler Bradleycorn. (#152, b/135857840)
- Son bağımsız değişken yer tutucularının, tam olarak eşleşen son ek içeren derin bağlantılara göre öncelik kazandığı sorunu düzelttiği için osipxd'ye teşekkürler. (#153, b/184072811)
- Safe Args'i KotlinPoet
1.8.0
'e bağlayacak şekilde güncelleyen tatocaster'a teşekkürler. (#172, b/183990444) name
veargument
alanlarını veNamedNavArgument
'in yapısını bozma işlevlerini herkese açık hale getirdiğiniz için jossiwolf'a teşekkür ederiz. (#174, b/181320559)- İlgili beste yerellerine
NavBackStackEntry
sağlayan yeni birNavBackStackEntry#provideToCompositionLocals
uzantısı kullanıma sunduğu için jossiwolf'a teşekkür ederiz. (#175, b/187229439) NavigatorProvider#addNavigator
işlevinin aynı örnekle tekrar tekrar çağrılmasının soruna neden olmaması için davranışını iyileştiren jossiwolf'a teşekkürler. (#176, b/187443146)
Navigation Compose Sürüm 1.0.0
Sürüm 1.0.0-alpha10
7 Nisan 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
yayınlanır. 1.0.0-alpha10 sürümü bu taahhütleri içerir.
API Değişiklikleri
NavHost
artık birModifier
kabul ediyor. Bu değer, hedef derlenebilir öğeleri saran derlenebilir kapsayıcıya iletilir. (I85aca, b/175125483)
Hata Düzeltmeleri
NavHost
artıkOnBackPressedDispatcherOwner
bulunmadığında bile çalışır. Örneğin,NavHost
önizlenirken. (I7d8b4)- Gezinme Oluştur özelliği artık Gezinme
2.3.5
'e bağlıdır. Bu sayede,NavHost
hedefindeBackHandler
kullanılırken karşılaşılan bir sorun düzeltildi. (I7e63b, b/182284739)
Sürüm 1.0.0-alpha09
10 Mart 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
yayınlanır. 1.0.0-alpha09 sürümü bu taahhütleri içerir.
API Değişiklikleri
LocalViewModelStoreOwner.current
artık mevcut kompozisyondaViewModelStoreOwner
'ın kullanılıp kullanılamayacağını daha iyi belirlemek için boş bırakılabilir birViewModelStoreOwner
döndürüyor.viewModel()
veNavHost
gibiViewModelStoreOwner
gerektiren API'ler,ViewModelStoreOwner
ayarlanmasa bile istisna atar. (Idf39a)
Hata Düzeltmeleri
- Navigation Compose artık grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlama denemesine yönelik düzeltmeyi içeren Navigation 2.3.4'e bağlıdır. (I65c24, b/177825470)
Sürüm 1.0.0-alpha08
24 Şubat 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
yayınlanır. 1.0.0-alpha08 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavHost
artıkLocalSavedStateRegistryOwner
CompositionLocal'ı ilgili hedefinNavBackStackEntry
ile doldurur. Böylece, doğrudanSavedStateRegistry
'a kaydedilen tüm durumların hedefle birlikte kaydedilip geri yüklenmesini sağlar. (I435d7, b/179469431)
Sürüm 1.0.0-alpha07
10 Şubat 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
yayınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemeleri
- Navigasyon Derlemesi,
composable
hedeflerineviewModel()
desteği sağlamak için artık Lifecycle ViewModel Derlemesi 1.0.0-alpha01'i kullanıyor. (I7a374) NavHost
artıkNavController
üzerinde ayarlananOnBackPressedDispatcher
değerini almak için Activity-Compose 1.3.0-alpha01'deki yeniLocalOnBackPressedDispatcherOwner
değerini kullanıyor. (I65b12)
Sürüm 1.0.0-alpha06
28 Ocak 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
yayınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
NavController
üzerinde, ilişkiliNavBackStackEntry
değerini döndüren birgetBackStackEntry(route: String)
uzantı yöntemi eklendi. (If8931)
Sürüm 1.0.0-alpha05
13 Ocak 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.
Compose 1.0.0-alpha10'a bağlı olacak şekilde güncellendi.
Sürüm 1.0.0-alpha04
16 Aralık 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.
- Oluştur
1.0.0-alpha09
ile uyumluluk için güncellendi.
Sürüm 1.0.0-alpha03
2 Aralık 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yapılandırma değişikliği veya işlem sonlandırılıp yeniden oluşturulduktan sonra
popBackStack()
venavigateUp()
'un çalışmaması sorunu düzeltildi. (Icea47, b/173281473) - NavHost'unuzda iç içe yerleştirilmiş bir grafiğe gitme özelliği artık düzgün çalışıyor. (I0948d, b/173647694)
Sürüm 1.0.0-alpha02
11 Kasım 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Gezinme oluşturma işlevi artık popUpTo ve launchSingleTop işlemlerini kullanmak için NavOptions'ı destekliyor (If96c3, b/171468994)
- Navigasyon Oluşturma DSL'sinde iç içe yerleştirilmiş grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rota alan bir navigasyon işlevi eklendi. (I1661d)
- startDestination artık NavHost parametre listesinde rotadan önce gelir (Ie620e)
- Artık bir NavHost bileşeninin dışında başlangıç hedefi olarak rotayı kullanarak bir grafik oluşturabilirsiniz. (Iceb75)
Sürüm 1.0.0-alpha01
28 Ekim 2020
android.navigation:navigation-compose:1.0.0-alpha01
yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
navigation-compose
yapı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable
işlevlerini kullanır.
Bu ilk sürümde şunlar sağlanır:
- Kotlin DSL aracılığıyla gezinme grafiğinizi oluşturmanıza olanak tanıyan bir
NavHost
bileşeni. - Hedef düzeyinde yaşam döngüsü,
ViewModel
ve hatırlanan durumun kapsamı. - Sistem geri düğmesiyle otomatik entegrasyon.
- Parametreleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere bir sonuç döndürme desteği.
- Yükseltme durumuna izin vermek ve
NavController
'ıNavHost
dışındaki bileşenlere (alt gezinme çubuğu gibi) bağlamak içinrememberNavController()
vecurrentBackStackEntryAsState()
'te belirli yardımcılar oluşturun.
Daha fazla bilgi için Gezinme oluşturma kılavuzuna bakın.
Sürüm 2.3.5
Sürüm 2.3.5
7 Nisan 2021
androidx.navigation:navigation-*:2.3.5
yayınlanır. 2.3.5 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavDeepLinkRequest
veyaUri
kullanarak gezinirken artıkKEY_DEEP_LINK_INTENT
aracılığıyla bağımsız değişkenlerden intent'i alarak elde edilen hedeftekiUri
, işlem ve mime türüne erişebilirsiniz. Bu sayede, harici derin bağlantı için halihazırda mevcut olan işlevler yansıtılır. (I975c3, b/181521877)
Hata Düzeltmeleri
OnBackPressedCallbacks
,NavBackStackEntry
ile bir dağıtıcıya eklendi. LifecycleOwner artık etkinlik yaşam döngüsüSTOPPED
ve ardındanSTARTED
olduktan sonra geri çağrıyı düzgün bir şekilde durduruyor (Iff94f, b/182284739)- Derin bağlantı alan adı ayrıştırma işlemi artık büyük/küçük harfe duyarlı değildir. Bu sayede
www.example.com
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 yalnızca bu bağımsız değişkenlerin bir alt kümesini geçersiz kılarken söz konusu hedefe gittiğinizde ortaya çıkabilecek bir
NullPointerException
hatası düzeltildi. (aosp/1644827)
Bağımlılık Güncellemeleri
- Gezinme Güvenli Arg'leri Gradle eklentisi artık Kotlin Gradle eklentisi 1.4.31'e bağlıdır. (aosp/1661058, b/181156413)
Harici Katkı
- Derin bağlantı alan adının büyük/küçük harfe duyarlı olmayan şekilde ayrıştırılmasını sağlayan çekme isteği için
bentrengrove
'e teşekkürler. (#144, b/153829033)
2.3.4 sürümü
2.3.4 sürümü
10 Mart 2021
androidx.navigation:navigation-*:2.3.4
yayınlanır. 2.3.4 sürümü bu taahhütleri içerir.
Yeni Özellikler
ReferenceType
bağımsız değişkenleri artık derin bağlantı URI'sinin bir parçası olarak gönderildiğinde doğru şekilde ayrıştırılabilir. Bu, hem ham tam sayı değerini hem de ön ekinde0x
bulunan on altı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 destekler. Bu sayede0.0
kullanmak yerineandroid:defaultValue="0"
kullanabilirsiniz. (#117, b/173766247)
Hata Düzeltmeleri
- Gezinme'nin dinamik özellikler için desteğini kullanırken takılan yükleme ilerleme durumunu düzeltme. (Ib27a7, b/169636207)
- Halihazırda ayarlanmış olan aynı nesneyle
setViewModelStore
veyasetLifecycleOwner
çağrısı yapmak artık işlem yapmaz (Idf491, b/177825470) - Safe-Args artık Java kullanılırken uygun yöntemlere suppress ek açıklamaları ekliyor. (I8fbc5, b/179463137)
Harici Katkılar
ReferenceType
bağımsız değişkenlerinin artık derin bağlantı URI'si kapsamında gönderildiğinde düzgün şekilde ayrıştırılabilmesini sağlayan çekme isteği içinJvmName
'a teşekkür ederiz. (#127, b/179166693)app:argType=”float”
içeren bir bağımsız değişken içindefaultValue
'a izin veren çekme isteği içintatocaster
teşekkür ederiz. Artık tam sayı varsayılan değerleri desteklenmektedir. (#117, b/173766247)
Sürüm 2.3.3
Sürüm 2.3.3
27 Ocak 2021
androidx.navigation:navigation-*:2.3.3
yayınlanır. 2.3.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Lifecycle
'uCREATED
'ye taşımadan önceNavBackStackEntry
'ü açarken artık kilitlenme yaşanmıyor. (Ie3ba3)- Animasyon kaynağı değeri
0
olan bir etkinliğe gidildiğindeResourceNotFoundException
'a neden olan b/171364502 kaynaklı gerileme düzeltildi. (I7aedb, b/176819931)
Sürüm 2.3.2
Sürüm 2.3.2
2 Aralık 2020
androidx.navigation:navigation-*:2.3.2
yayınlanır. 2.3.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
NavigationUI
'te,onNavDestinationSelected
ile<activity>
hedefi kullanıldığında etkinliğe gidilemeyen bir gerileme düzeltildi. (I22e34, b/171364502)navigation-dynamic-features-fragment
'ün, yeni kurulan hedefe birden çok kez gidilmesine neden olduğu sorun düzeltildi. (aosp/1486056, b/169636207)launchSingleTop
kullanılırken varsayılan bağımsız değişkenlerinOnDestinationChangedListener
örneklerine gönderilmemesine neden olan sorun düzeltildi. (I2c5cb)- İç içe yerleştirilmiş bir gezinme grafiğine gidildiğinde arka yığınta yeni bir grafik örneğinin oluşturulmaması sorunu düzeltildi. (Ifc831)
- Bir gezinme grafiğindeki son hedefi kaldıran bir
popUpTo
ilenavigate()
kullanılmasının, gezinme grafiğinin kendisini hemen yok etmesine ve arka yığıntan kaldırmasına neden olmadığı sorun düzeltildi. (I910a3) - Navigation SafeArgs artık Kotlin'in açık API modu için destek ekleyen KotlinPoet 1.7.2 sürümünü kullanıyor. (I918b5)
NavHostFragment.findNavController(Fragment)
artık Fragment hiyerarşisi ve Fragment'in görünüm hiyerarşisindeki mevcut kontrollere ek olarak DialogFragment'in kök dekor görünümünü de kontrol ediyor. Bu sayede,FragmentScenario
veNavigation.setViewNavController()
ile gezinme kullanan iletişim kutusu parçalarını test edebilirsiniz. (I69e0d)
Sürüm 2.3.1
Sürüm 2.3.1
14 Ekim 2020
androidx.navigation:navigation-*:2.3.1
yayınlanır. 2.3.1 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Varsayılan animatör kaynakları, gezinme kullanıcı arayüzüne eklendi ve varsayılan animasyon kaynakları yerine kullanılması önerilir. (b/167430145)
- NavOptions artık karma kodu ve eşittir yöntemlerini geçersiz kılar (b/161586466)
- Gezinme, artık "No destination with ID" IllegalArgumentException (No destination with ID) hatasında mevcut hedefi içeriyor. Bu da geliştiricilerin hata ayıklama deneyimini iyileştirecektir. (b/168311416)
Hata Düzeltmeleri
- Güvenli bağımsız değişkenler, oluşturulan bağımsız değişken sınıfı adı 100 karakterden uzun olsa bile artık dönüş satırını sarmalamaz. (b/168584987)
Bağımlılık Değişiklikleri
navigation-ui
artık DrawerLayout 1.1.1'i kullanıyor. Bu sayedeNavigationUI
,LOCK_MODE_LOCKED_CLOSED
veyaLOCK_MODE_LOCKED_OPEN
kullanılırken bile çekmeceyi açabiliyor. (b/162253907)- Safe Args artık KotlinPoet 1.6.0'a (aosp/1435911) bağlıdır.
- Safe Args artık AGP 4.0.1'e (aosp/1442337) bağlıdır
Sürüm 2.3.0
Sürüm 2.3.0
24 Haziran 2020
androidx.navigation:navigation-*:2.3.0
yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.
2.2.0 sürümünden beri yapılan önemli değişiklikler
- Özellik modülü entegrasyonu:
navigation-dynamic-features-runtime
venavigation-dynamic-features-fragment
yapıları, özellik modüllerinde tanımlanan hedeflere gitmenize olanak tanır ve gerektiğinde özellik modüllerinin yüklemesini otomatik olarak yönetir. Daha fazla bilgi için Özellik modülleri ile gezinme başlıklı makaleyi inceleyin. - Gezinme Testi:
navigation-testing
yapı, gezinme işlemlerinden sonra geçerli hedefi ayarlamanıza ve geri yığınını doğrulamanıza olanak tanıyan birTestNavHostController
sağlar. Daha fazla bilgi için Gezinme deneyimini test etme başlıklı makaleyi inceleyin. - Sonuç döndürme: Gezinme geri yığınındaki her hedefle ilişkili
NavBackStackEntry
, artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durum depolamak için uygun birSavedStateHandle
erişmenize olanak tanır. Daha fazla bilgi için Sonuçları önceki hedefe döndürme başlıklı makaleyi inceleyin. NavigationUI
içinOpenable
desteği:NavigationUI
'tekiDrawerLayout
'in tüm kullanımları, CustomView1.1.0
'e eklenen ve DrawerLayout1.1.0
'teDrawerLayout
tarafından uygulanan daha genelOpenable
arayüzüyle değiştirildi.- Derin bağlantılarda işlem ve mime türü desteği: Derin bağlantı, daha önce mevcut olan
app:uri
'e ek olarakapp:action
veapp:mimeType
'i de destekleyecek şekilde genişletildi.NavController
artık yeniNavDeepLinkRequest
sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuna göre gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest'i kullanarak gezinme başlıklı makaleyi inceleyin.
Bilinen Sorunlar
- Derin bağlantı işlemleri ve MIME türleri için destek henüz Manifest Birleştirici'de sunulmamaktadır. Bu çalışma tamamlanana kadar, manifest dosyanızdaki
<nav-graph>
öğesinden oluşturulan<intent-filter>
öğeleri,<data>
öğesinde mime türünüzü veya özel<action>
öğenizi içermez. Manifestinize uygun bir<intent-filter>
manuel olarak eklemeniz gerekir.
Sürüm 2.3.0-rc01
10 Haziran 2020
androidx.navigation:navigation-*:2.3.0-rc01
yayınlanır. 2.3.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bağımsız değişken içermeyen bir hedef örneğini, bağımsız değişken içeren başka bir örnekle değiştirirken
singleTop
ile ilgili bir sorun düzeltildi.NullPointerException
(b/158006669) NavController
tarafından oluşturulan tümdestination is unknown
istisnaları artıkNavController
durumunu belirlemeye yardımcı olacak ek hata ayıklama bilgilerine sahip. (b/157764916)
Sürüm 2.3.0-beta01
20 Mayıs 2020
androidx.navigation:navigation-*:2.3.0-beta01
sürümleri yayınlanır. 2.3.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- İşlem sona erdikten sonra
NavBackStackEntry
öğesininLifecycle
değerinin düzgün şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371) setGraph()
çağrılmadan önce kaydedilenOnDestinationChangedListener
örnekleri, artık bir süreç sona erdikten sonra geri yüklenen hedefe düzgün şekilde gönderiliyor. (b/155218371)singleTop
kullanıldığındaNavBackStackEntry
'un argümanları artık doğru şekilde güncelleniyor ve güncellenen argümanlar tümOnDestinationChangeListener
örneklerine gönderiliyor. (b/156545508)
Bağımlılık Güncellemeleri
NavigationUI
yapı 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ınlanır. (2.3.0-alpha06 sürümü bu taahhütleri içerir.)
Yeni Özellikler
- Derin bağlantı, daha önce mevcut olan
app:uri
'ye ek olarakapp:action
veapp:mimeType
'yi de destekleyecek şekilde genişletildi. NavController, artık yeniNavDeepLinkRequest
sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuna göre gezinmeyi destekliyor. (b/136573074, b/135334841)
API Değişiklikleri
- Dinamik gezinme hedefleri için Kotlin DSL desteği büyük ölçüde genişletildi. (b/148969800)
Hata Düzeltmeleri
- İç içe yerleştirilmiş bir başlangıç hedefi kullanıldığında derin bağlantı isteklerinin yoksayılmasına neden olan sorun düzeltildi. (b/154532067)
Sürüm 2.3.0-alpha05
15 Nisan 2020
androidx.navigation:navigation-*:2.3.0-alpha05
yayınlanır. 2.3.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
<include-dynamic>
kullanarak dinamik grafik dahil etme için artıkapp:graphPackage
belirtmeniz gerekmez ve bir noktanın ardındanapplicationId
'emoduleName
soneki eklenerek varsayılan bir değer kullanılır.graphPackage
öğenizi özelleştirmeniz gerekiyorsa artık${applicationId}
yer tutucusu desteklenmektedir. (b/152696768)- Navigasyon Grafiği Kotlin DSL'si artık işlemler için bir
defaultArguments
Map
özelliği sunuyor. Bu özellik, Navigasyon XML dosyalarındaki<action>
öğelerinde varsayılan değerler ayarlama özelliğini yansıtıyor. (b/150345605)
Hata Düzeltmeleri
- Gezinme 2.2.2'den itibaren: Etkinliğinizde birden fazla
NavHostFragment
örneği varsa grafiğinizin başlangıç hedefine derin bağlantı oluştururken oluşan birIllegalStateException
düzeltildi. (b/147378752)
Bağımlılık güncellemeleri
- Gezinme artık
1.2.4
parçasına bağlıdır. (aosp/1277325) - Dinamik gezinme artık Play Core
1.7.2
'a bağlıdır. (aosp/1282257)
Sürüm 2.3.0-alpha04
18 Mart 2020
androidx.navigation:navigation-*:2.3.0-alpha04
yayınlanır. 2.3.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Navigasyon Kotlin DSL'sinde özellik modülü etkinliği ve parça hedefleri için destek eklendi. (b/148969800)
API Değişiklikleri
DynamicExtras
sınıfı artık bir oluşturucu kalıbı kullanmıyor ve doğrudan oluşturulabiliyor. (aosp/1253671)DynamicActivityNavigator
, artık oluşturucudaActivity
yerineContext
alıyor. (aosp/1250252)
Hata Düzeltmeleri
NavigationUI
artık boş etiketleri (ör.android:label=””
içeren bir hedef) yoksayıp başlığı doğru şekilde boş bir dize olarak ayarlıyor. (b/148679860)
Bağımlılık Güncellemeleri
- Gezinme dinamik özellikleri yapıları artık Play Core
1.6.5
'e bağlıdır. (b/149556401)
Sürüm 2.3.0-alpha03
4 Mart 2020
androidx.navigation:navigation-*:2.3.0-alpha03
yayınlanır. 2.3.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
AppBarConfiguration
artık somutDrawerLayout
sınıfına güvenmek yerine CustomView1.1.0-alpha02
'te tanıtılanOpenable
arayüzünü kullanıyor (DrawerLayout
, DrawerLayout1.1.0-alpha04
'tan itibaren bu arayüzü uyguluyor). BöyleceNavigationUI
ileOpenable
'nin özel uygulamalarını kullanabilirsiniz. (b/129030452)
Hata Düzeltmeleri
navigation-common-ktx
ProGuard kuralları artık tümNavArgs
örnekleri yerine yalnızca kullanılanNavArgs
sınıflarını doğru şekilde saklar. (b/150213558)
Bağımlılık değişiklikleri
- Gezinme, Core
1.2.0
'teki yeni API'lere bağlı olmadığında geliştiricilerin yeni bir bağımlılığa geçmesini zorunlu kılmak için Core1.2.0
'e olan bağımlılığını geri aldı ve artık Core1.1.0
'e bağlı.
Sürüm 2.3.0-alpha02
19 Şubat 2020
androidx.navigation:navigation-*:2.3.0-alpha02
yayınlanır. 2.3.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
NavBackStackEntry
artık belirli bir geri yığın girişiyle ilişkilendirilmesi gereken küçük miktarlarda kayıtlı durum depolamak için uygun birSavedStateHandle
erişmenize olanak tanır. Örnek bir kullanım alanı için Sonuç döndürme bölümüne bakın. (b/79672220)
API Değişiklikleri
- Mevcut ve önceki hedefler için
NavBackStackEntry
alımını kolaylaştırmak amacıylagetCurrentBackStackEntry()
vegetPreviousBackStackEntry()
kolaylık yöntemleri eklendi. (b/79672220)
Hata Düzeltmeleri
navigateUp()
artık uygulamanızı kendi görev yığınınızda başlatırken mevcut hedefin bağımsız değişkenlerini veKEY_DEEP_LINK_INTENT
önceki hedefe iletir. (b/147456890)
Bağımlılık değişiklikleri
- Gezinme artık Core
1.2.0
'e bağlıdır.
Sürüm 2.3.0-alpha01
5 Şubat 2020
androidx.navigation:navigation-*:2.3.0-alpha01
yayınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.
Yeni özellikler
- Yeni
navigation-testing
yapı, birTestNavHostController
sınıfı sağlar. Bu sınıf, gezinmeyi test ederken mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra geri yığınını doğrulamanıza olanak tanıyan birNavController
sahtesi kullanmaya alternatif bir yöntem sunar. (b/140884273) - Yeni
navigation-dynamic-features-fragment
(ve onun geçişli bağımlılığınavigation-dynamic-features-runtime
), özellik modüllerinden hedefleri veya gezinme grafiklerinin tamamını (<include-dynamic>
aracılığıyla) dahil etmenize olanak tanır. Bu sayede, bu hedeflere giderken isteğe bağlı özellik modüllerinin sorunsuz bir şekilde yüklenmesi sağlanır. Daha fazla bilgi için Özellik modülleri ile gezinme başlıklı makaleyi inceleyin. (b/132170186)
Hata düzeltmeleri
- Gezinme
2.2.1
: Sorgu parametresi içermeyen derin bağlantılar artık sorgu parametrelerini son{argument}
öğelerine eklemek veya derin bağlantıyla eşleştirmemek yerine doğru şekilde yoksayar. (b/147447512) - Gezinme
2.2.1
bölümünden:DrawerArrowDrawable
içinnavigation-ui
ProGuard kuralları,android.enableJetifier=true
'in gerekli olmadığından emin olmak için güncellendi. (b/147610424) - Gezinme
2.2.1
:navigation-common-ktx
modülü artıknavigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1
: Gezinme2.2.1
artık Lifecycle ViewModel SavedState2.2.0
ve Fragment1.2.1
'e 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
sürümleri yayınlanır. 2.2.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Etkinliğinizde birden fazla
NavHostFragment
örneği varsa grafiğinizin başlangıç hedefine derin bağlantı oluştururken yaşanan birIllegalStateException
sorunu düzeltildi. (b/147378752) NavigationUI
artık boş etiketleri (ör.android:label=””
içeren bir hedef) yoksayıp başlığı doğru şekilde boş bir dize olarak ayarlıyor. Bu özellik daha önce Navigation 2.3.0-alpha04 sürümünde yayınlanmıştı. (b/148679860)navigation-common-ktx
ProGuard kuralları artık tümNavArgs
örnekleri yerine yalnızca kullanılanNavArgs
sınıflarını doğru şekilde saklar. Bu özellik daha önce Navigation 2.3.0-alpha03 sürümünde yayınlanmıştı. (b/150213558
Bağımlılık güncellemeleri
- Gezinme artık
1.2.4
parçasına 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ınlanır. 2.2.1 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Sorgu parametresi içermeyen derin bağlantılar artık sorgu parametrelerini son
{argument}
öğelerine eklemek veya derin bağlantıyla eşleştirmemek yerine doğru şekilde yoksayar. (b/147447512) DrawerArrowDrawable
içinnavigation-ui
ProGuard kuralları,android.enableJetifier=true
'nin gerekli olmadığından emin olmak için güncellendi. (b/147610424)navigation-common-ktx
modülü artıknavigation-runtime-ktx
ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)
Bağımlılık güncellemeleri
- Gezinme
2.2.1
artık Lifecycle ViewModel SavedState2.2.0
ve Fragment1.2.1
'e 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ınlanır. 2.2.0 sürümü bu taahhütleri içerir.
2.1.0 sürümünden bu yana yapılan önemli değişiklikler
- NavBackStackEntry: Artık arka yığıntaki bir hedefin veya gezinme grafiğinin kimliğini ileterek
NavController.getBackStackEntry()
'yi çağırabilirsiniz. DöndürülenNavBackStackEntry
, bu hedefi başlatmak için kullanılan bağımsız değişkenlerin yanı sıra navigasyon odaklı birLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülenle aynı) veSavedStateRegistryOwner
sağlar. - Lifecycle ViewModel SavedState Entegrasyonu:
SavedStateViewModelFactory
artıkby navGraphViewModels()
veyaNavController.getBackStackEntry()
ya daNavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ileViewModelProvider
kurucusu kullanılırken kullanılan varsayılan fabrikadır. - Derin Bağlantılar İçin Sorgu Parametresi Desteği: Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekler; varsayılan değeri olan veya boş değer alabilecek bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlıdır.
- İyileştirilmiş Animasyon Desteği:
NavHostFragment
artık Fragment 1.2.0'dakiFragmentContainerView
'ı kullanıyor. Bu sayede animasyon z sıralaması sorunları ve parçalara dağıtılan pencere içe eklemeleri düzeltildi.
Sürüm 2.2.0-rc04
18 Aralık 2019
androidx.navigation:navigation-*:2.2.0-rc04
yayınlanır. 2.2.0-rc04 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
navigation-ui
tarafından kullanılan varsayılan şeffaflaştırma animasyonlarını,1.2.0-rc04
Kırıntısı'ndaki ayarlanmış şeffaflaştırma animasyonlarıyla eşleşecek şekilde ayarladı. (b/145769814)
Sürüm 2.2.0-rc03
4 Aralık 2019
androidx.navigation:navigation-*:2.2.0-rc03
yayınlanır. 2.2.0-rc03 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Sorgu parametreleri ve yolun son kısmı olarak bir bağımsız değişken kullanıldığında, nihai yol bağımsız değişkeninin birden fazla karakterinin ayrıştırılmasını engelleyen derin bağlantı ayrıştırma sorunu düzeltildi. (b/144554689)
- İsteğe bağlı parametrelerin
null
yerine"@null"
aldığının tespit edildiği derin bağlantı ayrıştırma sorunu düzeltildi. (b/141613546) NavHostFragment
,FragmentContainerView
ile birlikte kullanıldığında yapılandırmanın değiştirilmesinden sonra artık grafiği doğru şekilde geri yüklemektedir. (b/143752103)
Bağımlılık değişiklikleri
- Gezinme artık yaşam döngüsü
2.2.0-rc03
, yaşam döngüsü ViewModel SavedState1.0.0-rc03
, etkinlik1.1.0-rc03
ve uygun durumlarda parça1.2.0-rc03
'a bağlıdır.
Sürüm 2.2.0-rc02
7 Kasım 2019
androidx.navigation:navigation-*:2.2.0-rc02
yayınlanır. 2.2.0-rc02 sürümü bu taahhütleri içerir.
Bağımlılık değişiklikleri
- Gezinme artık androidx.lifecycle
2.2.0-rc02
kitaplığı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 içermeden yayınlandı. 2.2.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 2.2.0-beta01
9 Ekim 2019
androidx.navigation:navigation-*:2.2.0-beta01
yayınlanır. 2.2.0-beta01 sürümü bu taahhütleri içerir.
Yeni özellikler
NavDestination
ve alt sınıfları artık hata ayıklama sırasında daha faydalı bilgiler sağlamak içintoString()
'u geçersiz kılıyor. (b/141264986)
Davranış değişiklikleri
- Ekstra sorgu parametreleri artık derin bağlantıları eşlerken eşlemenin başarısız olmasına neden olmak yerine yoksayılıyor. (b/141482822)
Hata düzeltmeleri
- Sorgu parametreleri de belirtilirse derin bağlantının yolundaki bağımsız değişkenlerin yoksayılmasına neden olan sorun düzeltildi. (b/141505755)
Activity
'dakinavArgs()
Kotlin uzantısında, ek öğe olmadığında artık daha iyi bir hata mesajı gösteriliyor. (b/141408999)- Safe Args tarafından oluşturulan
Directions
Java sınıfları artık varsayılan değerler içeriyor. (b/141099045) - Safe Args tarafından oluşturulan
Args
Java sınıfları artık varsayılan değerler içeriyor. (b/140123727) Toolbar
kullanıldığındaNavigationUI
, iki üst düzey hedef arasında geçiş yaparken metin değişikliğini artık animasyonlu olarak göstermez. (b/140848160)
Sürüm 2.2.0-alpha03
18 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha03
yayınlanır. 2.2.0-alpha03 sürümü bu taahhütleri içerir.
Davranış değişiklikleri
setGraph
'u aradıktan sonrasetViewModelStore()
'ü aradığınızda artıkIllegalStateException
gösteriliyor. TümNavBackStackEntry
örneklerininViewModel
örnekleri için tutarlı bir depolama alanına sahip olmasını sağlamak amacıyla bu değer, her zaman ilk kurulum kapsamındaNavHost
tarafından ayarlanmalıdır. (aosp/1111821)
Hata düzeltmeleri
- Birden fazla farklı gezinme grafiği kapsamlı
ViewModelStore
örneğine bağlıViewModel
örnekleri kullanıldığında ortaya çıkan birConcurrentModificationException
sorunu düzeltildi. (aosp/1112257)
Sürüm 2.2.0-alpha02
5 Eylül 2019
androidx.navigation:navigation-*:2.2.0-alpha02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekler. Varsayılan değeri olan veya boş değer alabilecek bağımsız değişkenler, derin bağlantıları eşleştirirken artık isteğe bağlıdır. (b/133273839)
- Artık arka yığıntaki bir hedefin veya gezinme grafiğinin kimliğini ileterek
NavController.getBackStackEntry()
işlevini çağırabilirsiniz. DöndürülenNavBackStackEntry
, bu hedefi başlatmak için kullanılan bağımsız değişkenleri sağlamanın yanı sıra navigasyon odaklı birLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
tarafından döndürülenle aynı) veSavedStateRegistryOwner
sağlar. (aosp/1101691, aosp/1101710)
Hata düzeltmeleri
ViewPager2
'aNavHostFragment
eklenirkenIllegalArgumentException
ile başarısız olan sorun düzeltildi. (b/133640271)NavInflater
artıkgetResourceName()
'ı gereksiz yere aramaktan kaçınıyor ve enflasyon süresini %40'a varan oranda hızlandırıyor. (b/139213740)
Sürüm 2.2.0-alpha01
7 Ağustos 2019
androidx.navigation:navigation-*:2.2.0-alpha01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
SavedStateViewModelFactory
artıkby navGraphViewModels()
veyaNavController.getViewModelStoreOwner()
tarafından döndürülen birViewModelStoreOwner
ileViewModelProvider
oluşturucusu kullanılırken kullanılan varsayılan fabrikadır. (b/135716331)
API değişiklikleri
- Gezinme
2.1.0-rc01
bölümünde:2.1.0-alpha02
sürümünde kullanımdan kaldırılanNavController
'tekigetViewModelStore()
API'si kaldırıldı. (aosp/1091021)
Hata düzeltmeleri
NavHostFragment
artıkFragmentContainerView
kullanıyor. Bu sayede animasyon z sıralaması sorunları ve Fragment'lere gönderilen pencere içe eklemeleri düzeltildi. (b/137310379)
2.1.0 sürümü
2.1.0 sürümü
5 Eylül 2019
androidx.navigation:navigation-*:2.1.0
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
2.0.0 sürümünden beri yapılan önemli değişiklikler
- ViewModel'lerin kapsamını gezinme grafiğiyle sınırlama: Artık
-ktx
kitaplıklarını kullanan Kotlin kullanıcıları içinby navGraphViewModels()
mülk temsilcisini veyaNavController
'e eklenengetViewModelStoreOwner()
API'yi kullanarak gezinme grafiği düzeyinde kapsama sahip ViewModel'ler oluşturabilirsiniz. Daha fazla bilgi için Hedefler arasında kullanıcı arayüzüyle ilgili verileri paylaşma başlıklı makaleyi inceleyin. - İletişim hedefleri: Artık
navigate
ettiğinizdeDialogFragment
gösteren<dialog>
hedefleri oluşturabilirsiniz.NavHostFragment
, varsayılan olarak iletişim kutusu hedeflerini destekler. Daha fazla bilgi için DialogFragment'ten hedef oluşturma başlıklı makaleyi inceleyin. - Uri'ye göre gezinme: Artık bir hedefe gitmek için hedefe eklediğiniz
<deepLink>
'yi kullananUri
kullanaraknavigate
yapabilirsiniz. Daha fazla bilgi için Uri kullanarak gezinme bölümüne bakın. - NavHostController: Özel bir
NavHost
oluşturmak için özel olarak kullanılan API'lerNavHostController
'e taşındı. Bu sayede, uygulamalarNavController
'lerini barındırmaLifecycleOwner
,OnBackPressedDispatcher
veViewModelStore
'e bağlayabilir.
Sürüm 2.1.0-rc01
7 Ağustos 2019
androidx.navigation:navigation-*:2.1.0-rc01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
API değişiklikleri
2.1.0-alpha02
'de kullanıma sunulan veNavController
'te kullanımdan kaldırılangetViewModelStore()
API kaldırıldı. (aosp/1091021)
Sürüm 2.1.0-beta02
19 Temmuz 2019
androidx.navigation:*:2.1.0-beta02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
2.1.0-beta01
sürümünde yanlışlıkla eklenen jacoco bağımlılığı kaldırıldı. (b/137782950)
Sürüm 2.1.0-beta01
17 Temmuz 2019
androidx.navigation:*:2.1.0-beta01
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
NavigationUI
,setupWithNavController()
düğmesiToolbar
veyaCollapsingToolbarLayout
ile kullanıldığında düğmenin kaldırılmasını animasyonlu olarak gösterir. (b/131403621)
Hata düzeltmeleri
findNavController()
ile aynı kapsayıcıda birden fazla NavHostFragment kullanıldığında ortaya çıkan zamanlama sorunu düzeltildi. (b/136021571)
Sürüm 2.1.0-alpha06
2 Temmuz 2019
androidx.navigation:*:2.1.0-alpha06
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- NavHostFragment tarafından kullanılan
app:navGraph
özelliği artıknavigation-runtime
yapısına taşındı. XML aracılığıyla eklenebilen özel gezginler, Gezinme Düzenleyici'nin Ana Bilgisayar paneliyle entegrasyon sağlamak için bu özelliği kullanmalıdır. (b/133880955)
API değişiklikleri
NavController
API'si için destek sonlandırıldı veViewModelStoreOwner
döndüren yenigetViewModelStoreOwner()
yöntemi kullanıma sunuldu.getViewModelStore()
(aosp/987010)<dialog>
hedefleri gibi kayan pencere hedeflerinin uygulanması, artık tüm<dialog>
hedeflerinin uyguladığıFloatingWindow
işaretçi arayüzüne genelleştirildi. Üst uygulama çubuğuyla etkileşime geçmek için kullanılan NavigationUI yöntemleri artıkFloatingWindow
hedeflerini yok sayıyor. (b/133600763)
Davranış değişiklikleri
- Gezinme, artık
<dialog>
hedefi kullanırken durumunu ekranda görünenle senkronize şekilde doğru şekilde tutar. Sonuç olarak, artık<fragment>
hedefi gibi iletişim kutusu ve etkinlik olmayan bir hedefe gittiğinizde Gezinme otomatik olarak<dialog>
hedefleri gösterir. (b/134089818)
Hata düzeltmeleri
- Gezinme, artık derin bağlantıyı işlerken etkinliği yeniden oluştururken oluşan animasyonu bastırarak görsel yanıp sönmeyi düzeltir. (b/130362979)
- İlk parça eklenirken bir parça gösterilirken gezinme geri yığınının senkronize olmamasına neden olan hata düzeltildi. (b/133832218)
Sürüm 2.1.0-alpha05
5 Haziran 2019
androidx.navigation:*:2.1.0-alpha05
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
API değişiklikleri
NavController
'teki barındırmayla ilgili API'ler yeniden adlandırıldı veNavController
'nin yeni bir alt sınıfına,NavHostController
'e taşındı. (aosp/966091)NavController
setHostOnBackPressedDispatcherOwner()
yöntemi,NavHostController
'ninsetOnBackPressedDispatcher()
yöntemiyle değiştirildi ve artık bu yöntemi çağırmadan öncesetLifecycleOwner()
yöntemini çağırmanız gerekiyor. (aosp/965409)NavHostController
artıksetHostOnBackPressedDispatcherOwner()
tarafından daha önce döndürülenNavHostOnBackPressedManager
sınıfının yerini alan birenableOnBackPressed(boolean)
yöntemi içeriyor. (aosp/966091)
Hata düzeltmeleri
- URI'ye göre gezindikten sonra geri yığınının doğru olmaması sorunu düzeltildi. (b/132509387)
- NavController tarafından otomatik olarak işlenen derin bağlantılar artık yalnızca bir kez tetikleniyor. (b/132754763)
Sürüm 2.1.0-alpha04
16 Mayıs 2019
androidx.navigation:*:2.1.0-alpha04
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
NavHostFragment
, sistem Geri düğmesi etkinliklerini durdururkenapp:defaultNavHost
'ye doğru şekilde uyuyor ve2.1.0-alpha03
gezinme bölümündeki bir gerileme düzeltiliyor. b/132077777DialogFragmentNavigator
artıkpopBackStack()
venavigateUp()
işlemlerini doğru şekilde yönetiyor. b/132576764- İç içe yerleştirilmiş grafikler arasında tekrar tekrar gezinirken
IllegalStateException: unknown destination during restore
sorunu düzeltildi. b/131733658
Sürüm 2.1.0-alpha03
7 Mayıs 2019
androidx.navigation:*:2.1.0-alpha03
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Bilinen Sorunlar
- NavHostFragment,
app:defaultNavHost="false"
b/132077777 kullanıldığı halde sistem Geri düğmesini engellemeye devam ediyor
Yeni özellikler
- Artık
navigate
ettiğinizdeDialogFragment
gösteren<dialog>
hedefleri oluşturabilirsiniz.NavHostFragment
varsayılan olarak iletişim kutusu hedeflerini destekler. b/80267254 navigate
'ü bir kaynak kimliği veyaNavDirections
örneğiyle çağırmanın yanı sıra artık doğru hedefe gitmek için bir hedefe eklediğiniz<deepLink>
'ı kullanan birUri
aracılığıyla da gezinebilirsiniz. b/110412864
Davranış değişiklikleri
- NavigationUI tarafından sağlanan varsayılan animasyonlar, etkinliklerin ve parçaların varsayılan animasyon hızıyla eşleşecek şekilde 400 ms'den 220 ms'ye hızlandırıldı. b/130055522
API değişiklikleri
NavHostFragment
sınıfınıncreateFragmentNavigator()
yöntemi kullanımdan kaldırıldı ve işlevi,NavHostFragment
sınıfının alt sınıfını oluştururken özel Gezginler eklemenin doğru giriş noktası olduğunu daha net bir şekilde belirtmek için yenionCreateNavController()
yöntemine taşındı. b/122802849- Belirli bir
Uri
'nin ilgili hedef tarafından işlenip işlenemeyeceğini veyaNavGraph
söz konusu olduğunda navigasyon grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenize olanak tanıyan birhasDeepLink()
yöntemiNavDestination
'a eklendi. b/117437718
Hata düzeltmeleri
- Varsayılan bağımsız değişkenler artık
OnDestinationChangedListener
örneklerine doğru şekilde iletiliyor. b/130630686 NavHostFragment
artıkOnBackPressedDispatcher
kullanarak sistem Geri etkinliklerini durduruyor. Bu sayede, bir Fragment'e döndükten sonra Fragment yaşam döngüsü yöntemlerinde koşullu gezinme yapılırken ortaya çıkan bir sorun düzeltildi. b/111598096- Safe Args için, belirtilmemiş bir
app:argType
içerenandroid:defaultValue=”@null”
artıkstring
bağımsız değişkeni olarak doğru şekilde anlaşılıyor. b/129629192
Sürüm 2.1.0-alpha02
3 Nisan 2019
androidx.navigation:*:2.1.0-alpha02
yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Artık Kotlin kullanıcıları için
by navGraphViewModels()
mülk temsilcisi aracılığıyla veyaNavController
'e eklenengetViewModelStore()
API'yi kullanarak gezinme grafiği düzeyinde kapsamlı ViewModel'ler oluşturabilirsiniz. b/111614463
API değişiklikleri
- Artık eşleşen paket adını sınırlamak için bir
<activity>
hedefineapp:targetPackage
ekleyebilirsiniz. Paketi kendi uygulama kimliğinizle kısıtlamak içinapp:targetPackage="${applicationId}"
desteklenir. b/110975456
Hata düzeltmeleri
<activity>
hedefleri içinandroid:name
artık şişirme sırasında bir sınıfa ayrıştırılmıyor. Bu sayede dinamik özellikler kullanırken ClassNotFoundExceptions önleniyor. b/124538597
Sürüm 2.1.0-alpha01
19 Mart 2019
Bu, Gezinme 2.1.0
'ün ilk alfa sürümüdür.
Bağımlılık değişiklikleri
- Gezinme artık
androidx.core:core:1.0.1
veandroidx.fragment:fragment:1.1.0-alpha05
'e bağlıdır. Bu sürümdeandroidx.legacy:legacy-support-core-utils:1.0.0
bağımlılığı da kaldırıldı. b/128632612
API Değişiklikleri
- Kaynak kimliği ve paket içeren bir tıklama dinleyicisi oluşturmanın alternatifi olarak yeni bir
Navigation.createNavigateOnClickListener(NavDirections)
yöntemi eklendi. b/127631752 FragmentNavigator.instantiateFragment
desteği sonlandırıldı. Varsayılan uygulama artık parçaları örneklemek içinFragmentFactory
kullanıyor. b/119054429
Hata Düzeltmeleri
- Bir hedefe bağımsız değişken eklendiğinde gezinme artık null
Bundle
göndermiyor. Bu sayede,android:defaultValue="@null"
kullanılırken yaşanan bir sorun düzeltildi. b/128531879 - Safe Args artık KotlinPoet 1.1.0'a bağlı. Bu sayede, son derece uzun paket adlarıyla ilgili bir sorun düzeltildi. b/123654948
Sürüm 2.0.0
Sürüm 2.0.0
14 Mart 2019
Navigasyon 2.0.0
, 2.0.0-rc02
'ten herhangi bir değişiklik olmadan yayınlanır.
Sürüm 2.0.0-rc02
6 Mart 2019
Navigation 2.0.0-rc02, androidx.navigation
grup kimliğiyle yeni yapı taşlarını sağlar ve bağımlılıkları AndroidX eşdeğerleriyle değiştirir.
2.0.0-rc02 sürümünün davranışı, Navigation 1.0.0-rc02 sürümünün davranışıyla aynıdır ve 1.0.0-rc02 sürümünden güncellemek için kodunuzda herhangi bir değişiklik yapmanız gerekmez. Bunun dışında, bağımlılıkları yeni bağımlılıklarla eşleşecek şekilde güncellemeniz gerekir.
Navigation'ın 2.X sürümlerini kullanabilmek için projeniz AndroidX'e taşınmış olmalıdır. Navigation 1.0 kararlı sürümü, Destek Kitaplığı bağımlılıkları kullanılan son sürüm olacak. 1.0'dan sonraki tüm geliştirmeler AndroidX'e dayalı olacak ve 2.0 kararlı sürümünü temel alacak.
AndroidX öncesi bağımlılıklar
AndroidX öncesi sürümlerde Navigasyon için aşağıdaki bağımlılıkları ekleyin:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Güvenli bağımsız değişkenler için üst düzey build.gradle
dosyanıza aşağıdaki sınıf yolu ekleyin
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Sürüm 1.0.0
Sürüm 1.0.0
14 Mart 2019
Navigasyon 1.0.0
, 1.0.0-rc02
'ten herhangi bir değişiklik olmadan yayınlanır.
Sürüm 1.0.0-rc02
26 Şubat 2019
Bu, Navigation'ın 1.0.0 kararlı sürümünün ikinci sürüm adayıdır. Bu sürümde çeşitli hata düzeltmeleri yer almaktadır.
Hata Düzeltmeleri
- Kök grafiğin kimliği yoksa
popBackStack()
'ün yoksayılmasına neden olan sorun düzeltildib/126251695 navigateUp()
artıkFLAG_ACTIVITY_NEW_TASK
olmadan derin bağlantı işlendikten sonra çağrıldığında uygulamanızın görevine geri dönmeyi doğru şekilde yönetiyor b/126082008ActivityNavigator.applyPopAnimationsToPendingTransition
pop-up çıkış animasyonunun doğru şekilde uygulanmamasıyla ilgili sorun düzeltildib/126237567- Safe Args tarafından oluşturulan Kotlin kodu artık
R
sınıfıyla ilişkili paket adındakiin
vefun
gibi Kotlin anahtar kelimelerini düzgün bir şekilde kod dışına alıyor. b/126020455
Sürüm 1.0.0-rc01
21 Şubat 2019
Bu, Navigasyon'un 1.0.0 kararlı sürümü için sürüm adayıdır. Bu sürümde bir hata düzeltmesi yer almaktadır.
Hata Düzeltmeleri
- Fragment'ler ve
singleTop
gezinme işlemleri kullanılırken yaşanan bir sorun düzeltildi b/124294805
Sürüm 1.0.0-beta02
12 Şubat 2019
Bu sürümde çeşitli küçük iyileştirmeler ve önemli hata düzeltmeleri yer almaktadır.
Yeni Özellikler
- Artık
reference
bağımsız değişkenleri için0
'üandroid:defaultValue
olarak kullanabilirsiniz. b/124248602
Davranış değişiklikleri
- Tam derin bağlantı eşleşmelerine artık
.*
veya bağımsız değişken eşleşmeleri içeren derin bağlantılara göre öncelik verilir. b/123969518
Hata Düzeltmeleri
popBackStack()
venavigateUp
artık arka yığıntaki son hedefi pop yaparken doğru şekildefalse
döndürüyor. Bu sayede1.0.0-beta01
'te ortaya çıkan bir gerileme düzeltildi. b/123933201- Gezinme, artık kayıtlı örnek durumunun geri yüklenmesinde
ClassLoader
değerini doğru şekilde ayarlayarakNavigator
kayıtlı durumunda veyaNavDestination
'ye gönderilen bağımsız değişkenlerde özel sınıflar kullanılırken ortaya çıkabilecek sorunları önler. b/123893858 - Güvenli Arg'ler tarafından oluşturulan NavArgs sınıfları, kaydedilmiş örnek durumundan bir
Parcelable[]
bağımsız değişkeni geri yüklerken artık kilitlenmiyor. b/123963545 - Safe Args artık gereksiz şekilde oluşturulan Kotlin sınıflarını düzgün bir şekilde temizliyor. b/124120883
Sürüm 1.0.0-beta01
4 Şubat 2019
Bu, Navigasyon'un ilk beta sürümüdür. Bundan sonra, kritik bir sorun olmadığı sürece Navigasyon API'nin bir sonraki sürüme kadar kararlı kalması beklenir. Bu sürümde bazı hata düzeltmeleri ve davranış değişiklikleri yer almaktadır.
Davranış değişiklikleri
- Gezinme, artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Güvenli Arg'ler aracılığıyla aynı şekilde ele alınmasını sağlar. Sonuç olarak, yalnızca
app:argType="reference"
içeren bağımsız değişkenler başka bir kaynağı (ör.@color/colorPrimary
) işaret eden bir varsayılan değere sahip olabilir. Referans varsayılan değerini farklı birapp:argType
ile kullanmaya çalışmak, gezinme XML'ini ayrıştırırken istisnayla sonuçlanır. b/123551990 - Safe Args artık Android Gradle Eklentisi 3.3.0'a bağlıdır aosp/888413
- Safe Args artık Kotlin 1.3.20'e bağlıdır aosp/888414
Hata Düzeltmeleri
- Güvenli bağımsız değişkenler artık Android Gradle eklentisinin tüm sürümlerinde kitaplık ve özellik modüllerinde kullanılabilir. b/121304903
- Tek bir
popBackStack()
işleminin, tek bir hedef yerine bir hedefin tüm kopyalarını arka yığının üst kısmından çıkarmasına neden olan bir gerileme düzeltildi. b/123552990 FragmentNavigator
durumununNavController
durumuyla senkronizasyonunun bozulmasına ve arka yığının geri yüklenmeye çalışılması sırasındaIllegalStateException
oluşmasına neden olan sorun düzeltildi. b/123803044- ProGuard'ın karartma özelliğiyle birlikte kullanılması durumunda
NavigationUI
kolu olan geri okunun görünmemesi sorunu düzeltildi. b/123449431 - Safe Args tarafından oluşturulan kod artık
.OuterClass$InnerClass
biçiminde statik bir iç sınıfa işaret eden birapp:argType
kullanarak düzgün şekilde işlenmektedir. b/123736741 - Safe Args tarafından oluşturulan Java kodu artık genel işlemleri ve derin iç içe yerleştirilmiş hedefleri düzgün şekilde yönetiyor. b/123347762
Sürüm 1.0.0-alpha11
23 Ocak 2019
Bu, Safe Args ile ilgili bir sorunu gideren 1.0.0-alpha10
sürümü için bir acil durum düzeltme sürümüdür.
Hata Düzeltmeleri
- Safe Args'in, genel işlemlerle ilişkili Directions sınıfını içe aktaramadığı sorunu düzeltir. b/123307342
Sürüm 1.0.0-alpha10
23 Ocak 2019
Bilinen Sorunlar
- Safe Args, global işlemlerle ilişkili Directions sınıfını içe aktaramaz. b/123307342
Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.
Yeni Özellikler
- Kotlin kullanıcıları artık
Activity
veyaFragment
içinde Safe Args tarafından oluşturulan birNavArgs
sınıfına referans almak içinby navArgs()
mülk temsilcisini kullanabilir. b/122603367 - Safe Args artık
androidx.navigation.safeargs.kotlin
eklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanır. Kotlin kodu, öncekiandroidx.navigation.safeargs
eklentisi aracılığıyla hâlâ kullanılabilen oluşturucu kalıbı üzerinden varsayılan bağımsız değişkenler ve değişmez sınıflar kullanılarak yalnızca Kotlin modülleri için özel olarak oluşturulur. b/110263087
Davranış Değişiklikleri
- Eşleşen derin bağlantılar artık en fazla eşleşen bağımsız değişkene sahip derin bağlantıya göre ağırlıklandırılıyor. b/118393029
NavController
numaralı telefondansetGraph()
numaralı telefonu aramak artık arka yığını sıfırlayacaktır. b/111450672- Bilinmeyen derin bağlantılar artık
IllegalStateException
hatası oluşturmuyor, ancak yoksayılıyor. Böylece iç içe yerleştirilmiş veya birden fazlaNavHostFragment
ile ilgili sorunlar düzeltiliyor. b/121340440
Zararlı Değişiklikler
- Bir etkinliğe pop animasyonları uygulamak için kullanılan
NavOptions.applyPopAnimationsToPendingTransition()
yöntemiActivityNavigator
yöntemine taşındı. b/122413117 - Güvenli bağımsız değişkenler artık bağımsız değişken içermeyen işlemler için aynı sınıfların kopyalanmasını önler. Oluşturulan NavDirections sınıflarındaki bağımsız değişken içermeyen yöntemlerin döndürdüğü tür artık
NavDirections
. b/123233147 - Safe Args tarafından oluşturulan Directions sınıflarının artık herkese açık bir kurucusu yoktur. Yalnızca oluşturulan statik yöntemlerle etkileşime geçmeniz gerekir. b/123031660
- Safe Args tarafından oluşturulan
NavDirections
sınıflarının artık herkese açık bir kurucusu yoktur. Bu sınıflar yalnızca oluşturulan Directions sınıflarındaki statik yöntemler aracılığıyla oluşturulmalıdır. b/122963206 NavDirections
'ungetArguments()
alanından döndürülenBundle
artık@Nullable
yerine@NonNull
olarak işaretleniyor. b/123243957
Hata Düzeltmeleri
NavDeepLinkBuilder
artık benzersizliği belirlemek için ilettiğiniz bağımsız değişkenleri kullanarak aynı hedefe yönelik birden fazla eşzamanlıPendingIntent
'yi doğru şekilde yönetiyor. b/120042732NavController
artık iç içe yerleştirilmiş birNavHostFragment
veya arka yığın içeren diğer alt Fragment'ler kullanıldığındapopBackStack()
işlemlerini doğru şekilde yönetiyor. b/122770335NavigationUI
artık Yukarı düğmesinin içerik açıklamasını doğru şekilde ayarlıyor. b/120395362- Safe Args tarafından oluşturulan Yönler sınıfları artık bir hedefteki işlemle aynı kimliğe sahip genel işlemleri doğru şekilde yönetiyor. b/122962504
- Güvenli Arg'ler tarafından oluşturulan
NavDirections
sınıfları artıkequals()
doğru değerini döndürdüğünde doğru şekilde eşithashCode()
değerlerine sahip. b/123043662 FragmentNavigator
,NavHostFragment
'ninFragmentManager
bölümünde özelFragmentTransactions
yapmaya çalıştığınızda artık daha iyi bir hata mesajı gösteriyor. Her zamangetChildFragmentManager()
kullanmalısınız. b/112927148
Sürüm 1.0.0-alpha09
18 Aralık 2018
Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.
android.arch.navigation:navigation-testing
yapısını geliştirmeye devam etmemeyi tercih ettik. NavController
'ün dahili testinde faydalı olduğu kanıtlanmış olsa da doğru navigate()
çağrılarının yapıldığını doğrulamak için NavController
örneğini taklit etme gibi alternatif test stratejilerini kullanmanızı önemle tavsiye ederiz. Bu yaklaşım, AndroidDevSummit 2018'deki tek etkinlik konuşmasında ayrıntılı olarak ele alınmıştır. Ayrıca, özellikle Navigasyon ile test etmeyle ilgili ek dokümanlar üzerinde çalışacağız.
Yeni Özellikler
menuCategory="secondary"
içerenMenuItem
'ler,NavigationUI
yöntemleriyle kullanıldığında artık arka yığını pop-up olarak göstermeyecektir. b/120104424AppBarConfiguration
artıknavController.navigateUp()
false
döndürdüğünde çağrılacak bir yedekOnNavigateUpListener
örneği ayarlamanıza olanak tanır. b/79993862 b/120690961
Zararlı Değişiklikler
argType="reference"
ile<argument>
kullanıldığında Gezinme artık referansı ayrıştırmaz, bunun yerine ham kaynak kimliğini sağlar. b/111736515onNavDestinationSelected()
artık varsayılan olarak gezinme grafiğinizin başlangıç hedefine geri dönüyor. Bu sayedesetup
yöntemleriyle tutarlı hale geliyor. Arka yığının açılmasını önlemek içinMenuItem
dosyanızamenuCategory="secondary"
ekleyin. aosp/852869- Oluşturulan
Args
sınıflarınınfromBundle()
yöntemleri artık boş değer alabilecekBundle
yerine boş olmayan birBundle
alıyor aosp/845616
Hata Düzeltmeleri
- Parametreler artık derin bağlantılardan her zaman b/110273284 dizesi yerine doğru
argType
olarak doğru şekilde ayrıştırılıyor - Gezinme artık herkese açık kaynaklarını doğru şekilde dışa aktarıyor b/121059552
- Safe Args artık Android Gradle Eklentisi 3.4 Canary 4 ve sonraki sürümlerle uyumludur b/119662045
Sürüm 1.0.0-alpha08
6 Aralık 2018
Bu sürüm, API'de önemli değişiklikler içerir. Lütfen aşağıdaki Önemli Değişiklikler bölümüne bakın.
Yeni Özellikler
- Hedef etiketleri,
NavigationUI
yöntemleriyle kullanıldığında artıkandroid:label
öğenizdeki{argName}
örneklerini doğru bağımsız değişkenle otomatik olarak değiştirecek b/80267266 - Navigasyon artık Destek Kitaplığı 28.0.0 sürümüne bağlıdır b/120293333
Zararlı Değişiklikler
OnNavigatedListener
,OnDestinationChangedListener
olarak yeniden adlandırıldı b/118670572OnDestinationChangedListener
artık bağımsız değişkenlerBundle
değerini de iletiyor aosp/837142app:clearTask
veapp:launchDocument
özellikleri ile ilişkili yöntemler kaldırıldı. Arka yığınınızdaki tüm hedefleri kaldırmak için grafiğinizin köküyle birlikteapp:popUpTo
kullanın. b/119628354ActivityNavigator.Extras
artıkBuilder
kalıbı kullanıyor veIntent.FLAG_ACTIVITY_
işaretlerini ayarlama özelliğini ekliyor aosp/828140NavController.onHandleDeepLink
,handleDeepLink
olarak yeniden adlandırıldı aosp/836063- Alt sınıf oluşturmak için tasarlanmamış birçok sınıf ve yöntem (ör.
NavOptions
,NavInflater
,NavDeepLinkBuilder
veAppBarConfiguration
)final
olarak değiştirildi aosp/835681 - Desteği sonlandırılan
NavHostFragment.setGraph()
yöntemi kaldırıldı aosp/835684 - Desteği sonlandırılan
NavigationUI.navigateUp(DrawerLayout, NavController)
yöntemi kaldırıldı. aosp/835684 - Parça oluşturma işlemi
FragmentNavigator
'e taşındı. Bu sayede, parça oluşturma işlemini birFragmentFactory
'a devretmek daha kolay hale geldi. b/119054429 NavGraphNavigator
sınıfının kurucusu artıkContext
almıyor aosp/835340- NavigatorProvider artık bir arayüz yerine sınıftır.
getNavigatorProvider()
tarafından döndürülenNavigatorProvider
işlevinin işlevi değişmedi. aosp/830660 NavDestination.navigate()
kaldırıldı. Bunun yerineNavigator
numaralı telefondannavigate()
'ü arayın. aosp/830663Navigator
'te önemli bir yeniden yapılanma yapıldı.OnNavigatorNavigatedListener
'a ihtiyaç duyulmuyor ve bunun yerinenavigate
, gidilenNavDestination
öğesini döndürüyor.Navigator
örnekleri artıkNavController
'a pop etkinlikleri gönderemez. Geri düğmesine basmaları engellemek venavController.popBackStack()
'ı çağırmak içinOnBackPressedCallback
kullanabilirsiniz. aosp/833716
Hata Düzeltmeleri
popUpTo
artık hedef bir<navigation>
öğesi olduğunda tutarlı bir şekilde çalışıyor b/116831650- İç içe yerleştirilmiş grafikler kullanılırken
IllegalArgumentException
ile sonuçlanan bazı hatalar düzeltildi b/118713731 b/113611083 b/113346925 b/113305559 <activity>
hedeflerinindataPattern
özelliği artıktoString()
b/120161365 çağrısını yaparak dize olmayan bağımsız değişkenlerden bağımsız değişkenleri dolduracak
Safe Args
- Safe Args, Enum değerleri dahil olmak üzere serileştirilebilir nesneleri destekler. Enum türleri, sınıf adı olmadan enum değişmezi kullanılarak (ör.
app:defaultValue="READ"
) varsayılan bir değer ayarlayabilir. b/111316353 - Güvenli bağımsız değişkenler, desteklenen tüm türlerin dizilerini destekler b/111487504
- Güvenli bağımsız değişkenler artık kaynak dizinlerinin alt klasörlerini yoksayarb/117893516
- Safe Args, uygun durumlarda
@Override
ek açıklamaları ekler b/117145301
Sürüm 1.0.0-alpha07
29 Ekim 2018
Yeni Özellikler
- Yeni AppBarConfiguration sınıfı, hangi hedeflerin üst düzey hedefler olarak kabul edileceğini özelleştirmenize olanak tanır. Ayrıntılar için güncellenmiş dokümanlara göz atın. b/117333663
- Artık grafiğinizin başlangıç hedefine bağımsız değişkenler iletebilirsiniz b/110300470
- Derin bağlantılar artık nokta, kısa çizgi ve artı işareti içeren özel şemaları desteklemektedir. b/112806402
Zararlı Değişiklikler
navigation-testing-ktx
modülünavigation-testing artifact
'e dahil edildi ve artık yayınlanmayacak.navigation-testing
yapı artık Kotlin standart kitaplığına bağımlı. API, Kotlin kurallarına daha uygun olacak şekilde değiştirildi ancak Java ile yazılmış testlerde kullanmaya devam edebilirsiniz.- Meta veri manifest'ine kayıtlı gezinme grafikleri artık desteklenmiyor. b/118355937
- İşlemler artık <activity> hedeflerine eklenemez. aosp/785539
Hata Düzeltmeleri
- Derin bağlantılar artık sorgu parametrelerini doğru şekilde ayrıştırıyor. b/110057514
- Etkinlik hedefleri artık tüm giriş ve çıkış animasyonlarına doğru şekilde uygulanıyor. b/117145284
- Özel Gezginler kullanılırken yapılandırma değişikliklerinden sonra oluşan kilitlenme düzeltildi. b/110763345
Safe Args
- Güvenli bağımsız değişkenler artık Android Gradle eklentisi 3.2.1'e sabit bir bağımlılığa sahiptir. b/113167627
- Artık iç sınıflar için yönler oluşturulabilir. b/117407555
- <include> grafiği için yol tarifi oluşturmayla ilgili bir sorun düzeltildi. b/116542123
Sürüm 1.0.0-alpha06
20 Eylül 2018
Yeni Özellikler
- Kırıntı ve etkinlik hedefleri için paylaşılan öğe geçişleri artık desteklenmektedir b/79665225. Daha fazla bilgi için Gezinme mimari bileşeniyle gezinmeyi uygulama başlıklı makaleyi inceleyin.
NavigationView
'te bir öğe seçildiğinde artık alt sayfayı b/112158843 içeren tüm sayfalar kapatılacak
API Değişiklikleri
- Kırılma Değişikliği: Gezgin
navigate()
yöntemi artık birNavigator.Extras
parametresi alıyor. - NavController'ın
getGraph()
yöntemi artıkNonNull
b/112243286
Hata Düzeltmeleri
NavigationUI.setupWithNavController()
, ayrı hedeflerden gelen görünümlerle birlikte kullanıldığında artık görünümleri sızdırmıyor b/111961977- Navigator
onSaveState()
artık yalnızca bir kez çağrılıyor b/112627079
Safe Args
- Gezinme hedefi yol tarifi sınıfları artık varsa üst öğelerinin yol tarifi sınıfını genişletir b/79871405
- Directions ve Args sınıfları artık kullanışlı bir
toString()
uygulamasına sahip b/111843389
Sürüm 1.0.0-alpha05
10 Ağustos 2018
Hata Düzeltmeleri
- Yanlış geri yığın davranışına neden olan bir hata düzeltildi. b/111907708
- Oluşturulan Arg sınıflarının
equals()
sınıfında bir hata düzeltildi. b/111450897 - Safe Args'de derleme hatası düzeltildi. b/109409713
- Kaynak tanımlayıcılardan Java adlarına geçiş sorununu düzeltme b/111602491
- Safe Args eklentisinde boşluk değeriyle ilgili hata mesajları düzeltildi.
- Eksik boşluk kabul edilebilirlik notlarını ekleyin.
Sürüm 1.0.0-alpha04
19 Temmuz 2018
Gezinme 1.0.0-alpha04
ve ilişkili Safe Args gradle eklentisi, çeşitli API değişiklikleri, davranış değişiklikleri ve hata düzeltmeleri içerir.
API / Davranış Değişiklikleri
- NavHostFragment, her zaman mevcut Fragment'i birincil gezinme fragment'i olarak ayarlar. Böylece, dış NavController oluşturulmadan önce alt fragment yöneticilerinin oluşturulmasını sağlar b/111345778
Safe Args
- Zararlı Değişiklik: ConstraintLayout 2.0.0-alpha1 b/111110548 gibi diğer kitaplıklarla çakışmayı önlemek için
app:type
,app:argType
olarak değiştirildi - Safe Args'den gelen hata mesajları artık tıklanabilir b/111534438
- Args sınıfları artık
NonNull
özelliklerinin aslında null olmadığını onaylıyor b/111451769 - NavDirections ve Args tarafından oluşturulan sınıflara b/111455455 b/111455456 ek
NonNull
ek açıklamaları eklendi
Hata Düzeltmeleri
- Bir parça hedefine derin bağlantı oluşturduktan sonra sistem geri düğmesiyle ilgili sorun düzeltildi b/111515685
Sürüm 1.0.0-alpha03
12 Temmuz 2018
Gezinme 1.0.0-alpha03
ve ilişkili Safe Args gradle eklentisi, çeşitli API değişiklikleri, davranış değişiklikleri ve hata düzeltmeleri içerir.
API / Davranış Değişiklikleri
- Araç çubuğu için NavigationUI.setupWithNavController yöntemi eklendi b/109868820
- CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
- popBackStack(), geri yığın boş olduğunda veya verilen hedef kimliği geri yığınta olmadığında artık yanlış değerini döndürüyor b/110893637
- FragmentNavigator artık FragmentManager durumu kaydettikten sonra gezinme işlemlerini yoksuyor ve "onSaveInstanceState işlevi çalıştıktan sonra bu işlem yapılamaz" istisnalarını önlüyor b/110987825
Safe Args
- Kırılma Değişikliği: İşlem ve bağımsız değişken adlarındaki alfanümerik olmayan karakterler, ilgili NavDirections yöntem adlarında büyük/küçük harf kullanımına göre değiştirilecek
- Örneğin,
DemoController.index
setDemoControllerIndex
b/79995048 olur. - Örneğin,
action_show_settings
actionShowSettings
b/79642240 olur.
- Örneğin,
- Kırılıcı Değişiklik: Argümanlar artık varsayılan olarak boş olmayan olarak kabul edilir. Dize ve paketlenebilir bağımsız değişkenlerde boş değerlere izin vermek için
app:nullable="true"
b/79642307 ekleyin. - Artık "123L" biçiminde defaultValues ile
app:type="long"
kullanabilirsiniz b/79563966 app:type
için tam nitelikli sınıf adı kullanılarak paketlenebilir bağımsız değişkenler artık desteklenmektedir. Yalnızca"@null"
b/79563966 varsayılan değeri desteklenir.- Args sınıfları artık
equals()
vehashCode()
işaretlemelerini uyguluyor b/79642246 - Safe Args eklentisi artık kitaplık projelerine uygulanabilir b/80036553
- Safe Args eklentisi artık özellik projelerine uygulanabilir b/110011752
Hata Düzeltmeleri
- Fragment yaşam döngüsü yöntemleri sırasında gezinirken karşılaşılan sorunlar düzeltildi b/109916080
- İç içe yerleştirilmiş grafiklerde birden çok kez gezinirken yaşanan sorunlar düzeltildi b/110178671
setPopUpTo
işlevinin b/109909461 grafiğindeki ilk hedefle kullanılmasıyla ilgili sorunlar düzeltildi.- Tüm
app:defaultValue
değerlerinin dize olarak iletilmesine neden olan sorun düzeltildi b/110710788 - Android Gradle Eklentisi 3.2 Beta 01 ile birlikte sunulan aapt2, artık Gezinme XML dosyalarındaki her
android:name
özelliği için saklama kuralları ekliyor b/79874119 - Varsayılan FragmentNavigator değiştirilirken bellek sızıntısı düzeltildi b/110900142
Sürüm 1.0.0-alpha02
7 Haziran 2018
Davranış Değişiklikleri
FragmentNavigator
artıksetReorderingAllowed(true)
kullanıyor. b/109826220Gezinme artık derin bağlantı URL'lerinden ayrıştırılan bağımsız değişkenleri URL'den kod çözer. b/79982454
Hata Düzeltmeleri
Fragment yaşam döngüsü yöntemlerinden navigate çağrılırken oluşan bir
IllegalStateException
hatası düzeltildi. b/79632233Gezinme, animasyon kullanırken titremeyi düzeltmek için artık Destek Kitaplığı 27.1.1'i kullanıyor. b/80160903
Alt fragman olarak defaultNavHost="true" kullanıldığında bir
IllegalArgumentException
düzeltildi. b/79656847NavDeepLinkBuilder kullanılırken ortaya çıkan bir
StackOverflowError
sorunu düzeltildi. b/109653065İç içe yerleştirilmiş bir grafiğe geri dönerken karşılaşılan
IllegalArgumentException
sorunu düzeltildi. b/80453447launchSingleTop
kullanılırken örtüşen Fragment'lerle ilgili sorun düzeltildi. b/79407969Gezinme artık iç içe yerleştirilmiş grafikler için doğru sentetik arka yığın oluşturuyor. b/79734195
NavigationUI,
MenuItem
olarak iç içe yerleştirilmiş bir grafik kullanıldığında artık doğru öğeyi vurgulayacaktır. b/109675998
API Değişiklikleri
İşlemler için
clearTask
özelliği veNavOptions
'daki ilişkili API'nin desteği sonlandırıldı. b/80338878İşlemler için
launchDocument
özelliği veNavOptions
'daki ilişkili API'nin desteği sonlandırıldı. b/109806636
Sürüm 1.0.0-alpha01
8 Mayıs 2018
Gezinme, uygulama içi gezinme oluşturmak için bir çerçeve sağlar. Bu ilk sürüm 1.0.0-alpha01
.