Navigasyon

Navigasyon, hedeflerin parçalar, etkinlikler veya başka bileşenler olarak uygulanmasına bakılmaksızın tutarlı bir API sağlayan bir Android uygulamasındaki "hedefler" arasında gezinmeye yarayan bir çerçevedir.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
26 Haziran 2024 2.7.7 - 2.8.0-beta04 -

Bağımlılıkları bildirme

Gezinme'ye bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Uygulamanız veya modülünün build.gradle dosyasına ihtiyaç duyduğunuz yapılar için bağımlılıkları ekleyin:

Modern

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

Safe Args

Güvenli Aramalar'ı projenize eklemek için üst düzey build.gradle dosyanıza aşağıdaki classpath öğesini ekleyin:

Modern

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

Kotlin

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

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

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

Modern

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

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

Modern

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

Kotlin

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

AndroidX'e Taşıma uyarınca gradle.properties dosyanızda android.useAndroidX=true bulunmalıdır.

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

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa 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 ekleyebilirsiniz.

Yeni sayı oluştur

Daha fazla bilgi için Sorun İzleyici dokümanlarına bakın.

Sürüm 2.8

Sürüm 2.8.0-beta04

26 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta04 yayınlandı. Sürüm 2.8.0-beta04 bu kayıtları içerir.

Hata Düzeltmeleri

  • Gezinme artık yol bağımsız değişkenlerinde boş dizelerle gezinmeyi destekliyor. (Ic5dbd, b/339481310)
  • Şu anda desteklenmeyen bir özellik olduğunu netleştirmek için @Serializable(with =...) aracılığıyla doğrudan sınıf alanlarında tanımlanan özel serileştiricilerle ilgili hata mesajını iyileştirin. (I052b0, b/341319151)
  • SavedStateHandleFactory test API'si artık Android dışı testlerde kullanılabilir ancak Robolectric'in Bundle ile bağımsız değişken ayrıştırmayı desteklemesi gerekir. (I76cdc, b/340966212)
  • Compose'da Tür-Güvenli Gezinme kullanılırken uygulama işlemi devam ettirildiğinde geri yükleme durumunda yaşanan kilitlenme düzeltildi. (Ia8f38, b/341801005)
  • Gezinme Oluşturma'da, Tahmine Dayalı Geri Hareketi iptal edildikten sonra kullanıcının geri döndüğü NavBackStackEntry öğesinin hiçbir zaman RESUMED Yaşam Döngüsü Durumuna geri dönmediği bir sorun düzeltildi. Bu aynı zamanda, geri gelen hedefin bir fırlatma işleminden sonra yerine oturması yerine doğru bir şekilde yeniden etkinleşmesini sağlar. (I97a0c, b/346608857)
  • Gezinme Yazma Sihirbazı ile Tahmine dayalı geri özelliği kullanılırken, açılan hedef artık uygun z sırasına sahip olur ve gelen hedef üzerinde doğru bir şekilde animasyon gösterir. (I2077b, b/345993681)

Sürüm 2.8.0-beta03

12 Haziran 2024

androidx.navigation:navigation-*:2.8.0-beta03 yayınlandı. Sürüm 2.8.0-beta03 bu kayıtları içerir.

API Değişiklikleri

  • CollectionNavType, yeni bir soyut emptyCollection() yöntemine sahip. Bağımsız değişken olarak iletilen boş bir koleksiyonu işlemek için bunu geçersiz kılın. (Ie4d84, b/341723133)

Hata Düzeltmeleri

  • Nihai çıkışların Uri kodlamalı olması gerektiğini vurgulamak için NavType.serializeAsValue ve serializeAsValues ile ilgili dokümanlar eklendi. (Ida6bd, b/344943214)
  • Boş CollectionNavType bağımsız değişkeniyle toRoute<T> çağrılırken oluşan kilitlenme düzeltildi. Boş bir CollectionNavType değeriyle gezinirken çıkış bağımsız değişkeni, Serileştirilebilir sınıfınızda bildirilen varsayılan değer veya varsayılan değer yoksa döndürülen değer emptyCollection() olur. (I84158, Id630f, b/342672856)

Sürüm 2.8.0-beta02

29 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-beta02 yayınlandı. Sürüm 2.8.0-beta02 bu kayıtları içerir.

Hata Düzeltmeleri

  • Boş değer atanabilen özel NavType ile NavBackStackEntry.toRoute kullanılırken ClassCastException kilitlenmesi düzeltildi. (I1c29b, b/342239473)
  • Geçerli hedeften kimlik aracılığıyla erişilemeyen bir geri yığın girişi geri yüklenmeye çalışılırken ortaya çıkan Gezinme geri yığını durumu geri yükleme sorunları düzeltildi. Rotalar kimliklerle desteklendiğinden rotalarla oluşturulan hedefler de bu sorundan etkilendi. Bu işlem, aynı temel soruna sahip clearBackStack() çağrısından kaynaklanan kilitlenmeyi de düzeltir. (I423c3, b/339908057)

Sürüm 2.8.0-beta01

14 Mayıs 2024

androidx.navigation:navigation-*:2.8.0-beta01 yayınlandı. Sürüm 2.8.0-beta01 bu kayıtları içerir.

API Değişiklikleri

  • SavedStateHandle.toRoute(), özel bağımsız değişken türleri için artık typeMap parametresini alıyor. (Ie39fb, b/339026523)
  • Kotlin seri haline getirilebilir bir nesneden SavedStateHandle oluşturmak için navigation-testing işlevine test API'si eklendi. (Id4867, b/339080702)

Hata Düzeltmeleri

  • Navigasyon 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ınlandı. Sürüm 2.8.0-alpha08 bu kaydetmeleri içerir.

Gezinme Oluşturmada Güvenli Bağımsız Değişkenler

Bu işlev, gezinme grafiğinizde tür için güvenli nesneler ve veri sınıfları aracılığıyla varış noktaları 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 Yazma Sihirbazı Tür Güvenliği blog yayınına bakın.

Yeni Özellikler

  • navigation-fragment-compose yapısı artık ComposableFragment içinde yerel olarak composable yöntemlerine uygun bir LocalFragment kompozisyonu sağlıyor. (If35e5)
  • NavType artık Int, String, Boole, Kayan ve Uzun Listeleri için yerleşik desteğe sahiptir. (I4b6dd, Ia914c, b/188693139)

Sürüm 2.8.0-alpha07

17 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha07 yayınlandı. Sürüm 2.8.0-alpha07 bu kaydetmeleri içerir.

Yeni Özellikler

  • Gezinme XML dosyalarınıza composable hedefleri eklemenize olanak tanıyan, NavHostFragment yerine ComposableNavHostFragment alternatifi içeren yeni bir navigation-fragment-compose yapısı ekler. Her composable hedefi, üst düzey olarak ifade edilmelidir. Tam nitelikli adı her bir hedefte android:name özelliği olarak kullanılan @Composable bağımsız değişkeni yoktur. Bu hedeflerden birine gidildiğinde, composable içeriği görüntülemek için bir kapsayıcı parça oluşturulur. (I0ef2e, b/265480755)

    // In HomeScreen.kt
    @Composable
    fun HomeScreen() {
      // Your Composable content here
    }
    
    // In your navigation.xml
    <composable
      android:id="@+id/home_screen"
      android:name="com.example.HomeScreenKt\$HomeScreen" />
    

API Değişiklikleri

  • Kotlin Serileştirme'ye dayalı bir yaklaşım kullanarak Gezinme Oluşturma'da Güvenli Bağımsız Değişkenler desteği (devamı). Bu API'ler tamamlanmadı ve ExperimentalSafeArgsApi ek açıklamasıyla işaretlenmiş. Gelecekteki bir sürümde API yüzeyinin tamamı tamamlandığında bu ek açıklama kaldırılacaktır. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, Ied2c9,

Sürüm 2.8.0-alpha06

3 Nisan 2024

androidx.navigation:navigation-*:2.8.0-alpha06 yayınlandı. Sürüm 2.8.0-alpha06 bu kaydetmeleri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • NavHost, varsayılan contentHizalama bağımsız değişkeni olarak Alignment.TopStart kullanıyor. Bu işlem onu AnimatedContent için varsayılan ile aynı hizaya getirir ve merkez geçişten kaynaklanan bazı beklenmedik ölçek örneklerini düzeltir. (I09e72, b/330111602)
  • Gezinme Oluşturulma'yı kullanırken tahmine dayalı geri hareketini kaydırdığınızda NavHost artık özel geçişi hemen tamamlamak yerine doğru şekilde tamamlayacak. (I99017, b/327292110)

Sürüm 2.8.0-alpha05

20 Mart 2024

androidx.navigation:navigation-*:2.8.0-alpha05 yayınlandı. Sürüm 2.8.0-alpha05 bu kaydetmeleri içerir.

Yeni Özellikler

  • Artık defaultValue kullanmadan, NavGraph öğesinin startDestination öğesine bağımsız değişkenleri doğrudan startDestination rotasında aktarabilirsiniz. Bu, iç içe yerleştirilmiş NavGraph startDestinations için de geçerlidir. (I0e0b5, b/109505019, b/188693139)

API Değişiklikleri

  • Liste, dizi, harita gibi koleksiyon tabanlı bağımsız değişkenler için NavType<T> alt sınıfı olan yeni soyut CollectionNavType<T> sınıfı eklendi. (Ic6d63, b/188693139)
  • Varsayılan NavType dizilerinin tümü (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType ve StringArrayType) artık CollectionNavType türünde (Idcf79, b/188693139)
  • NavType artık aynı türden iki değerin birbirine eşit olup olmadığını belirleyen yeni bir açık valueEquals API'si sunuyor. (I6cb97, b/327229511)

Hata Düzeltmeleri

  • Derin bağlantılardaki sorgu parametreleri, artık dize tabanlı NavTypes için geçerli değer olarak bağımsız değişken adının çevresinde küme ayraçları biçimindeki değerlere (ör. {argName}) izin veriyor. Bu değişiklik, söz konusu değerin tüm türler için geçersiz olarak kabul edilmesine (veya değer olmamasına) yol açan sorunu düzeltir. (I18302, b/327274038)
  • navigate veya popBackStack gibi rotaları destekleyen NavController işlevleri artık NavTypes dizisinin bağımsız değişkenleriyle doldurulan rotaları düzgün bir şekilde eşleştirebiliyor. (Iea805, b/327229511)

Sürüm 2.8.0-alpha04

6 Mart 2024

androidx.navigation:navigation-*:2.8.0-alpha04 yayınlandı. Sürüm 2.8.0-alpha04 bu kaydetmeleri içerir.

Yeni Özellikler

  • Artık Gezinme Oluşturma'da geçişleriniz için SizeTranform değerini, bunları composable ve/veya navigation işlevleri için başlatmanın bir parçası olarak tanımlayarak belirtebilirsiniz. (I91062, b/296912651)

Hata Düzeltmeleri

  • Sistem Geri Dönme hareketi olmadan sistem Geri kullanılırken, Oluştur Gezinme'deki NavHost ürününün, geçişi düzgün bir şekilde gösterememesine neden olan sorun düzeltildi. (Iceeae, b/325998468)

Sürüm 2.8.0-alpha03

21 Şubat 2024

androidx.navigation:navigation-*:2.8.0-alpha03 yayınlandı. 2.8.0-alpha03 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • İlişkili girişe ait ViewModel, kaydedilen durumun bir parçası olmadığı için Navigasyon'da, NavGraph ViewModellerinin çok erken DESTROYED olmasına neden olan bir sorun düzeltildi. (Ib6bb7, b/317581849)

Bağımlılık Güncellemesi

Sürüm 2.8.0-alpha02

7 Şubat 2024

androidx.navigation:navigation-*:2.8.0-alpha02 yayınlandı. 2.8.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Gezinme Yazma Sihirbazı, artık oluşturma animasyonunun yeni SeekableTransitionState API'leri aracılığıyla Tahmini uygulama içi geri desteği sağlıyor. Bu, işlemi tamamlanan hareketle yapmaya veya iptal etmeye karar vermeden önce, özel Geçişinizde önceki hedefi görmek için geri hareketini kullanmanıza olanak tanır. (I8b8e9)

Sürüm 2.8.0-alpha01

24 Ocak 2024

androidx.navigation:navigation-*:2.8.0-alpha01 yayınlandı. Sürüm 2.8.0-alpha01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bir hedefte birden fazla saveState çağrısının kaydedilmesine neden olan ancak yalnızca ilk durumun geri yüklenebileceği BackStackState sızıntısı düzeltildi. (I598b0, b/309559751)
  • Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcıları kullanılırken Dize olmayan bağımsız değişkenlerin düzgün şekilde gösterilmemesine neden olan sorun düzeltildi. (#636, b/316676794)

Bağımlılık Güncellemesi

  • Oluşturma bölümünde gezinme simgesi artık Oluşturma 1.7.0-alpha01 işlevinin beklenmedik ölçek animasyonuna neden olabilecek bir sorunu düzeltmesine bağlı. (b/297258205)

Harici Katkı

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

Sürüm 2.7.7

Sürüm 2.7.7

7 Şubat 2024

androidx.navigation:navigation-*:2.7.7 yayınlandı. Sürüm 2.7.7 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gezinme 2.8.0-alpha01'dan geri bağlanmış: Tek bir NavBackStackEntry üzerinde birden fazla saveState() çağrısının birden fazla durumun kaydedilmesine neden olduğu ancak yalnızca ilk kaydedilen durumun geri yüklenebileceği BackStackState sızıntısı düzeltildi. (I598b0, b/309559751)
  • Gezinme 2.8.0-alpha01'den geri bağlanmış: Uygulama çubuklarının başlığını doldurmak için NavigationUI yardımcıları kullanılırken Dize olmayan bağımsız değişkenlerin düzgün şekilde gösterilmemesine neden olan sorun düzeltildi. (#636, b/316676794)

Harici Katkı

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

Sürüm 2.7.6

Sürüm 2.7.6

13 Aralık 2023

androidx.navigation:navigation-*:2.7.6 yayınlandı. 2.7.6 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavGraph equals() işlevi artık yalnızca çağıran grafik yerine diğer grafiğin düğümlerini doğru şekilde dikkate alıyor. Böylece, farklı kimliklere sahip düğümleri olan grafikler artık eşit kabul edilmez (I401cb, b/311414915)

Sürüm 2.7.5

Sürüm 2.7.5

1 Kasım 2023

androidx.navigation:navigation-*:2.7.5 yayınlandı. 2.7.5 sürümü bu kaydetmeleri içerir.

Performans iyileştirmeleri

  • İki grafiğin karşılaştırılmasında performans (hem zaman hem de ayırma sayısı açısından) büyük ölçüde arttı. 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 daha az atlanan karelere neden olduğu anlamına gelir. Bu gelişmeyi sağlayan kapsamlı 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 zorunda kalmadan, ilk beste kartındaki başlangıç hedefini oluşturur. (I439a7, b/304852206)

Hata Düzeltmeleri

  • setGraph öğesini yalnızca grafiğinizde iki hedefi bağlayan bir işlem içeren bir hedef olduğunda aynı grafikle birden fazla kez çağırdığınızda arka yığınınızın açılmasına neden olan sorun düzeltildi. (Ieaed7)
  • Hızlıca arka arkaya gidilen ve kapatılan iletişim kutuları NavController.visibleEntries listesine sızdırılmaz. (I67586, b/287969970)
  • Bir giriş ve ardından yapılandırma değişikliği uygulandığında, saveState yanlış değerine ayarlanırsa girişin ViewModel öğesi düzgün şekilde silinir. (Idf242, b/298164648)
  • Bir yapılandırma değişikliğinden önce arka yığın tamamen boşsa NavController ürününün aynı derin bağlantıyı bir defadan fazla işleyebilmesi veya gelen Intent'in FLAG_ACTIVITY_NEW_TASK işareti ayarlandığı durumlarda setGraph çağrısına yol açan sorun düzeltildi. (I73c7f)

Bağımlılık Güncellemeleri

  • Parçalarla gezinme artık 1.6.2 Parçası'na bağlı olarak, clearBackStack çağrılırken iç içe yerleştirilmiş parçaların ViewModel örneklerinin temizlenmesine neden olan bir sorun düzeltildi.

Sürüm 2.7.4

Sürüm 2.7.4

4 Ekim 2023

androidx.navigation:navigation-*:2.7.4 yayınlandı. 2.7.4 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • popUpTo, tam olarak bu bağımsız değişkenleri kullanan belirli bir girişe, popBackStack ürününde bulunan destekle eşleşen rotalarda bağımsız değişkenler içeren rotaları kullanma desteği eklendi. (I731f4, b/299255572)

Hata Düzeltmeleri

  • popUpTo ile başka bir navigasyonla navigasyonu kesintiye uğrattığınızda FragmentNavigator kilitlenmesine neden olacak sorun düzeltildi. (I3c848, b/301887045)
  • Sistemin geri basmasının, currentDestination öğesinin görüntülenen Parça ile eşleşecek şekilde doğru şekilde güncellenmemesine neden olduğu sorun düzeltildi. (Id0d6c, b/289877514)
  • Üst kısmındaki iletişim kutusu kapatıldığında DialogFragment yaşam döngüsü artık düzgün bir şekilde RESUMED durumuna taşınacak. (I88f0d, b/301811387)

Sürüm 2.7.3

Sürüm 2.7.3

20 Eylül 2023

androidx.navigation:navigation-*:2.7.3 yayınlandı. Sürüm 2.7.3 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • visibleEntries listesinde yanlış girişler içermesine neden olan Parçalarla Navigasyon sorunu düzeltildi. (I5caa9, b/288520638)
  • Kayan Pencere hedefinin (ör.Dialogs, Bottomsheets vb.) hiçbir zaman RESUMED 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ınlandı. 2.7.2 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Navigasyon artık Yaşam Döngüsü 2.6.2'ne bağlıdır. rememberSaveable ile Gezinme Oluşturma Aracı'nın NavHost arasındaki etkileşimi düzeltilir. Bu etkileşim, rememberSaveable durumunun ve sahip olduğu ViewModel SavedStateHandle örneklerinin işlem iptali ve yeniden oluşturma işleminden sonra düzgün şekilde geri yüklenmesine neden olur. (b/298059596, b/289436035)
  • Gezinme Oluşturma'da aynı anda birden fazla iletişim kutusu gösterilirken ortaya çıkan, kısmen anlaşılmaz olan iletişim kutularının (ör. en üstteki iletişim kutusu değil) STARTED yerine CREATED Yaşam Döngüsü durumunda olması sorunu düzeltildi. (aosp/2728520, b/289257213)
  • Gezinme Oluşturma'da aynı anda birden fazla iletişim kutusu gösterilirken ortaya çıkan sorun düzeltildi. Bu sorun, en üstteki iletişim kutusunun kapatılmasının, RESUMED öğesine doğru bir şekilde taşınması yerine, en üstteki yeni iletişim kutusunun STARTED Yaşam Döngüsü durumunda kalmasına neden oluyordu. (aosp/2629401, b/286371387)
  • Gezinme Güvenli Bağımsız Değişkenler, görev gerçekten yürütülmüyorsa artık görevini istekli bir şekilde somutlaştırmaz. (I0e385, b/260322841)

Bağımlılık Güncellemesi

  • Oluşturma menüsünde artık Compose 1.5.1 sürümü kullanılıyor.

Sürüm 2.7.1

Sürüm 2.7.1

23 Ağustos 2023

androidx.navigation:navigation-*:2.7.1 yayınlandı. Sürüm 2.7.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Oluşturma ile Gezinme'de, Scaffold kullanılırken Lifecycle.State.DESTROYED ViewModel özelliğine erişmeye çalışırken hata alınmasına neden olan sorun düzeltildi. (I1dc11, b/268422136)

Sürüm 2.7.0

Sürüm 2.7.0

9 Ağustos 2023

androidx.navigation:navigation-*:2.7.0 yayınlandı. 2.7.0 sürümü bu kaydetmeleri içerir.

2.6.0'dan bu yana önemli değişiklikler

Refakatçiden Animasyonlar

AnimatedContent kararlı olduğu için kodu Emperist Gezinme Animasyonu'ndan, Gezinme Oluşturma Animasyonu'na geri taşıyabildik.

Bu, AnimatedNavHost ürününde bulunan özel geçişleri ayarlama desteğinin tamamı NavHost ürününde doğrudan desteklendiği anlamına gelir.

Refakatçi Gezinme Animasyonu'nda başka herhangi bir değişiklik yapılmayacak. Yakında bu özelliği ve Navigation Compose'a geri dönmeyle ilgili yönergelerle birlikte resmi olarak kullanımdan kaldıracağız. Ancak en son Eşlik eden alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka bir API değişikliği yapmanıza gerek kalmadan bu, taşıma rehberinin tersidir. (b/197140101)

Hata Düzeltmeleri

  • Gezinme Compose'daki NavHost, Etkinlik DURDURDURDU ve DEVAM ETTildikten sonra bile sistem geri çağrılarına doğru şekilde müdahale ediyor. (Icb6de, b/279118447)

Bağımlılık Güncellemeleri

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

Sürüm 2.7.0-rc01

26 Temmuz 2023

androidx.navigation:navigation-*:2.7.0-rc01 yayınlandı. 2.7.0-rc01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavHost öğesinin bir parçası olarak oluşturulan EnterTransition ve ExitTransition lambda'ların, NavHost besteden kaldırıldıktan sonra bile bellekte kalabilmesine neden olan sorun düzeltildi. (I893d0)

Bilinen Sorunlar

  • Gezinme 2.6.x'te, popUpTo ile gezinirken IllegalArgumentException hatasına neden olabilen bir sorun var. Burada önerilen tavsiyeye benzer şekilde, grafiğinizi yeniden yapılandırarak bu istisnanın önüne geçebilirsiniz. (b/287133013)

Sürüm 2.7.0-beta02

28 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta02 yayınlandı. Sürüm 2.7.0-beta02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.7.0-beta01

7 Haziran 2023

androidx.navigation:navigation-*:2.7.0-beta01 yayınlandı. Sürüm 2.7.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Mesaj Yazma Sihirbazı'ndaki NavHost, Activity STOPPED ve RESUMED sonrasında bile sisteme yönelik geri aramalarına artık doğru şekilde müdahale ediyor. (Icb6de, b/279118447)

Sürüm 2.7.0-alpha01

24 Mayıs 2023

androidx.navigation:navigation-*:2.7.0-alpha01 yayınlandı. 2.7.0-alpha01 sürümü bu kaydetmeleri içerir.

Refakatçiden Animasyonlar

AnimatedContent kararlı olduğu için kodu Emperist Gezinme Animasyonu'ndan, Gezinme Oluşturma Animasyonu'na geri taşıyabildik.

Bu, AnimatedNavHost ürününde bulunan özel geçişleri ayarlama desteğinin tamamı NavHost ürününde doğrudan desteklendiği anlamına gelir.

Refakatçi Gezinme Animasyonu'nda başka herhangi bir değişiklik yapılmayacak. Yakında bu özelliği ve Navigation Compose'a geri dönmeyle ilgili yönergelerle birlikte resmi olarak kullanımdan kaldıracağız. Ancak en son Eşlik eden alfa sürümünü (0.31.2-alpha) kullanıyorsanız başka bir API değişikliği yapmanıza gerek kalmadan bu, taşıma rehberinin tersidir. (b/197140101)

Hata Düzeltmeleri

  • Gezinme 2.6.0-rc02'den: Parçalar'da Gezinmeyle ilgili sorun düzeltildi. Bu sorun, popUpTo ile gezinmenin ve arka yığından bir parçanın, görünümünü yeniden oluşturmadan arka yığının dışına çıkartılmasının sistemin tekrar çalışmayı durdurmasına neden olmasına yol açtı. (Ieb8d4, b/281726455)

Bağımlılık Güncellemeleri

  • Gezinme artık E-posta Yazma 1.5.0-beta01 uygulamasına bağlı.

Sürüm 2.6.0

Sürüm 2.6.0

7 Haziran 2023

androidx.navigation:navigation-*:2.6.0 yayınlandı. 2.6.0 sürümü bu kaydetmeleri içerir.

2.5.0'dan bu yana Navigasyon'da yapılan önemli değişiklikler

  • NavBackStackEntry işlevinin OnDestinationChangedListener öğesine iletilen arguments ve arguments değerleri artık yalnızca hedefe gittiğinizde oluşturulan sabit bağımsız değişkenlerin bir kopyası. Yani bu Paketlerde yapılan değişiklikler, arguments veya diğer OnDestinationChangedListener örneklerine sonraki erişimlere yansıtılmaz.
  • NavDeepLink artık diziler için varsayılan değerleri desteklemektedir. Bu özellik, bağımsız değişkenin dizi türüyle eşlenecek tekrarlanan sorgu parametreleri için destek sağlar. NavType artık ayrıştırılmış iki değeri birleştirmek için geçersiz kılınabilecek varsayılan bir yöntem de içeriyor.
  • NavType özel alt sınıfları artık bir değeri Dize olarak serileştirmek için serializeAsValue değerini geçersiz kılabilir. Böylece hem serileştirme hem de seri durumdan çıkarma (parseValue üzerinden) tamamen NavType sınıfına dahil edilebilir. StringType artık belirtilen String üzerinde Uri.encode yöntemini çağırmak için bu yöntemi geçersiz kılıyor.

2.5.0'dan itibaren Mesaj Yazma Gezinmesinde yapılan önemli değişiklikler

  • NavHost ile bir composable'ın önizlemesi yapılırken artık NavGraph'in startDestination özelliği varsayılan olarak gösterilecek.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route) ve NavController.clearBackStack(route) artık kısmen veya tamamen doldurulmuş bağımsız değişkenler içeren 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.
  • Artık navDeepLink Kotlin DSL'sini kullanarak boş bir NavDeepLink oluşturulmaya çalışıldığında, derin bağlantının geçerli olması için URI, işlem ve/veya mime türüne ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek.

2.5.0'dan bu yana Parçalarla Gezinme'de yapılan önemli değişiklikler

  • NavHostFragment artık sistemin geri düğmesinin kendisinde araya gelmez. Bu, temel FragmentManager öğesinin sistemi geri almasını sağlar. Bu, Parça 1.7.0-alpha01 ve sonraki sürümlerin Android U cihazlarda Uygulama İçi Tahmine Dayalı Geri Dönme animasyonu sağlamasına olanak tanır.
  • Parçalarla Gezinme kullanılırken FragmentManager öğesinin arka yığınına parça ekleyen bir FragmentTransaction işlemini manuel olarak yapmaya çalıştığınızda IllegalArgumentException hatası verir. Parçaları her zaman navigate() API'si aracılığıyla eklemelisiniz.
  • Gezinme XML dosyasının etkinlik öğesindeki app:data ve app:dataPattern özelliklerinde yer tutucu olarak ${applicationId} dizesi tam olarak kullanıldığında, yer tutucu, uzatıldığında otomatik olarak bağlamın packageName değeri ile doldurulur.
  • FragmentNavigator, NavBackStackEntries uygulamasında gezinirken ve gezinirken artık geçiş API'lerini kullanıyor. Yani NavBackStackEntry Lifecycle, son Lifecycle.State öğesini taşımadan önce parça özel efektlerinin girilmesi ve özel efektlerinin tamamlanmasını bekleyecek.
  • DialogFragmentNavigator, NavBackStackEntries uygulamasında gezinirken ve gezinirken artık geçiş API'lerini kullanıyor. Yani NavBackStackEntry Lifecycle, DESTROYED hizmetine geçmeden önce DialogFragment Lifecycle öğesinin DESTROYED paketine taşınmasını bekleyecek.
  • NavHostFragment artık onCreate() etiketinden sonra değil, NavHostFragment FragmentManager öğesine eklenir bağlanmaz NavController öğesini almanıza izin veriyor.
  • Gezinme'nin Dinamik Özellik Modülleri için sunduğu destek artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlıdır.
  • Gezinme Güvenli Bağımsız Değişkenler artık Android Gradle Eklentisinin 7.3.0 sürümüne bağlı. Bu da artık yalnızca 7.3.0 ve üstü sürümlerle uyumlu olduğu anlamına geliyor.

2.5.0'dan bu yana NavigationUI'de yapılan önemli değişiklikler

  • NavigationUI, bir gezinme grafiğinin kimliği AppBarConfiguration hedefine aktarılırken (ör. Menu aracılığıyla) grafikteki her hedefi hatalı bir şekilde üst düzey hedef olarak işaretlemek yerine ilgili gezinme grafiğinin yalnızca başlangıç hedefini üst düzey hedef olarak kabul ediyor. Tek bir hedefin kimliğini iletme davranışında değişiklik olmaz. Aynı işlev, AppBarConfiguration adresindeki yeni isTopLevelDestination işlevi aracılığıyla kendi kodunuzda da kullanılabilir.
  • Üstteki uygulama çubuğuyla çalışmak için NavigationUI ürününde bulunan setupWithNavController entegrasyonları artık, otomatik olarak oluşturulan kaynak tam sayısını çıkarmak yerine android:label öğenizde bulunan ReferenceType bağımsız değişkene ait R.string değerini dize değerlerine ayrıştıracak.
  • NavigationUI artık seçili MenuItem üzerinden gezinemediğinde günlükleri sağlıyor.

Sürüm 2.6.0-rc02

24 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc02 yayınlandı. 2.6.0-rc02 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Parçalarda Gezinmeyle ilgili olarak, popUpTo ile gezinmenin ve görünümü yeniden oluşturmadan bir parçayı arka yığından çıkarıp sistemin tekrar çalışmayı durdurmasına neden olan bir sorun düzeltildi. (Ieb8d4, b/281726455)

Sürüm 2.6.0-rc01

10 Mayıs 2023

androidx.navigation:navigation-*:2.6.0-rc01 yayınlandı. 2.6.0-rc01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gezinme işleminde, onResume() yaşam döngüsü geri çağırması sırasında popUpTo ile gezinme yoluyla bir parçanın kaldırılmasının IllegalStateException'a neden olacağı, parçalara sahip bir sorun düzeltildi. (I21884, b/279644470)

Sürüm 2.6.0-beta01

19 Nisan 2023

androidx.navigation:navigation-*:2.6.0-beta01 yayınlandı. Sürüm 2.6.0-beta01 bu kaydetmeleri içerir.

Yeni Özellikler

  • NavBackStackEntry, artık özel bir toString uygulaması sağlıyor. (Iff00b)

Hata Düzeltmeleri

  • Parçalarla Gezinme kullanılırken FragmentManager öğesinin arka yığınına parça ekleyen bir FragmentTransaction işlemini manuel olarak yapmaya çalıştığınızda IllegalArgumentException hatası verir. Parçaları her zaman navigate() API'si aracılığıyla eklemelisiniz. (I6d38e)
  • Bir giriş ekleyen navigate ve aynı çerçevede onu kaldıran bir popBackStack olduğunda, arka yığında ortaya çıkan en üstteki giriş tutarlı bir şekilde RESUMED Lifecycle.State öğesine geri döndürülür. (Id8067, b/276495952)

Sürüm 2.6.0-alpha09

5 Nisan 2023

androidx.navigation:navigation-*:2.6.0-alpha09 yayınlandı. 2.6.0-alpha09 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavDestination değerinin null olmayan NavArgument içermesi halinde bu hedefin rotasının, null olmayan NavArgument ile aynı ada sahip bağımsız değişkenler için yer tutucular içermesi gerektiği gibi geçersiz rota kontrolleri düzeltildi. (Ic62bf, b/274697949)
  • Gezinme işleminde, Action/MimeType öğesinin eşleştiği NavDestination için gereken null olmayan bir NavArgument eksikse Action/MimeType tabanlı derin bağlantı gezinmeleri artık başarısız olacak. (İbfa17, b/271777424)
  • NavController, önceki grafikle aynı rota ve hedeflere sahip bir grafik belirlediğinde artık mevcut grafik düğümlerini ve arka yığın hedeflerini doğru şekilde yeni örneklerle değiştirir. Bu düzeltme, Gezinme Oluşturma Aracı'nda durum kaydedilmeden onLaunchSingleTop kullanılırken karşılaşılan kilitlenmeyi düzeltir. Bu ayrıca, kök grafik derlemeleri ve yanlış geriye dönük yığınla ilişkilendirilmiş hedeflere gidilmesine neden olan hatayı da düzeltir. (I5bc58, b/275258161, b/275407804)

Sürüm 2.6.0-alpha08

22 Mart 2023

androidx.navigation:navigation-*:2.6.0-alpha08 yayınlandı. 2.6.0-alpha08 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • NavHostFragment artık onCreate() etiketinden sonra değil, NavHostFragment FragmentManager öğesine eklenir bağlanmaz NavController öğesini almanıza izin veriyor. (Ic6382, b/220186282)

Hata Düzeltmeleri

  • Null yapılamayan bağımsız değişken içeren iç içe geçmiş bir grafik açılırken NullPointerException sorunu düzeltildi. (6b3581, b/249988437)
  • popUpTo ile gezinme yaptıktan sonra sistemi geri kullandığınızda NavController durumu doğru girişte gösterilir. (I3a8ec, b/270447657)
  • FragmentNavigator artık geriye yığın sistem geri veya popBackStack() işleviyle açıldığında ve işlemin, parça için efektleri kullanıp kullanmadığı fark etmeksizin düzgün şekilde giriş yapacaktır. (I81bdf)
  • Gezinme kullanılmadan FragmentNavigator öğesinin FragmentManager öğesine parça eklenmesi artık kilitlenmeye neden olmayacak. (b17204, b/274167493)

Bağımlılık Güncellemeleri

Sürüm 2.6.0-alpha07

8 Mart 2023

androidx.navigation:navigation-*:2.6.0-alpha07 yayınlandı. 2.6.0-alpha07 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Rota alan getBackStackEntry, popBackStack, clearBackStack API varyantları artık boş bağımsız değişkenler ve boş değer atanabilir sorgu parametreleri (I22294, b/269302500) içeren rota kalıpları kullanıyor.
  • NavController öğesinden clearBackStack() çağrısının, temizlenen geri yığınla ilişkili parça yöneticisindeki kayıtlı durumu temizlememesine neden olan sorun düzeltildi. (Ic1cce, b/271190202)
  • 2.6.0-alpha06 sürümlerinde, sekmeler arasında sistem geri kullanıldığında BottomNavigationView içindeki yanlış MenuItem değerinin vurgulanmasına neden olan regresyon düzeltildi. (I634f6, b/270447657)
  • 2.6.0-alpha06 sürümlerindeki regresyon, Animation kullanılırken NavBackStackEntry öğelerinin DEVAM EDİLDİ durumuna taşınmamasına neden olan regresyon düzeltildi. (Ib3589, b/269646882)

Sürüm 2.6.0-alpha06

22 Şubat 2023

androidx.navigation:navigation-*:2.6.0-alpha06 yayınlandı. 2.6.0-alpha06 sürümü bu kaydetmeleri içerir.

Yeni özellikler

  • NavHost ile bir composable'ın önizlemesi yapılırken artık NavGraph'in startDestination özelliği varsayılan olarak gösterilecek. (I2b89f)

API Değişiklikleri

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

Hata Düzeltmeleri

  • Dinamik Parçalı Gezinme kullanılırken gezinmeye çalışırken yaşanan kilitlenme düzeltildi. (I3ee29, b/268360479)
  • Sistem geri düğmesi aracılığıyla başka bir parçaya gidildiğinde alt çubuğun doğru seçilen öğeye güncellenmemesiyle ilgili hata düzeltildi (If559f, b/269044426)

Bilinen Sorunlar

  • Parçalarla Gezinme özelliği kullanılırken Animation API'leri kullanıldığında NavBackStackEntry'nin Yaşam Döngüsü RESUMED değerine ulaşamıyor. (b/269646882)
  • Parçalarla Gezinme özelliğini kullanırken ve BottomNavigation ile gezinirken birden çok girişli bir geri yığını geri yüklemeye çalışırsanız BottomMenuItem doğru şekilde güncellenmez. (b/270447657)
  • Parçalarla Gezinme kullanılırken durum geri yüklendikten sonra NavBackStackEntry Lifecycle, parçası DESTROYED olduğunda DESTROYED almıyor . (b/270610768)

Sürüm 2.6.0-alpha05

8 Şubat 2023

androidx.navigation:navigation-*:2.6.0-alpha05 yayınlandı. 2.6.0-alpha05 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • NavController.popBackStack(route), NavController.getBackStackEntry(route) ve NavController.clearBackStack(route) artık kısmen veya tamamen doldurulmuş bağımsız değişkenler içeren 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, NavBackStackEntries uygulamasında gezinirken ve gezinirken artık geçiş API'lerini kullanıyor. Yani NavBackStackEntry Lifecycle, son Lifecycle.State öğesini taşımadan önce parça özel efektlerinin girilmesi ve özel efektlerinin tamamlanmasını bekleyecek. (I3cb19, b/238686802)
  • DialogFragmentNavigator, NavBackStackEntries uygulamasında gezinirken ve gezinirken artık geçiş API'lerini kullanıyor. Yani NavBackStackEntry Lifecycle, DESTROYED hizmetine geçmeden önce DialogFragment Lifecycle öğesinin DESTROYED paketine taşınmasını bekleyecek. (I53ee5, b/261213893)

API Değişiklikleri

  • NavigatorState, Navigator öğelerinin NavBackStackEntries öğelerini ara Lifecycle.State öğelerine taşımalarını sağlamak için artık prepareForTransition API'sini sağlamaktadır. (I42c21, b/238686802)
  • Artık bir NavGraphNavigator veya ComposeNavigator ile ilişkili arka yığınına backstack mülkü üzerinden erişebilirsiniz. ComposeNavigator, artık gezinme veya popBackStack işlemini yürüten bir NavBackStackEntry öğesini işaretlemek için onTransitionComplete() geri çağırmasını da sunuyor. (I02062, I718db, b/257519195)

Hata Düzeltmeleri

  • push/popWithTransition API'leri kullanılırken ve giriş zaten işleniyorsa gezgin durumu artık çalışmayacak. (Iadbfa, b/261213893)
  • launchSingleTop, iç içe yerleştirilmiş bir NavGraph ile kullanılırken orijinal hedeften startDestination hedefine başlayan tüm hedefler yalnızca geri yığının en üstüne düzgün şekilde eklenir. (Id4bea, b/253256629)
  • Navigasyon artık, launchSingleTop işareti doğru değerine ayarlanmış olarak aynı hedefe giderken DialogFragment örneğini düzgün bir şekilde değiştirecektir. (I45b5a, b/149572817)
  • Gezinme SafeArgs, artık tam olarak 19 karakter uzunluğundaki bağımsız değişkenler kullanılırken derleme hatasına neden olmayacak. (Id60bc, b/257110095)

Sürüm 2.6.0-alpha04

9 Kasım 2022

androidx.navigation:navigation-*:2.6.0-alpha04 yayınlandı. 2.6.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • NavType özel alt sınıfları artık bir değeri Dize olarak serileştirmek için serializeAsValue değerini geçersiz kılabilir. Böylece hem serileştirme hem de seri durumdan çıkarma (parseValue üzerinden) tamamen NavType sınıfına dahil edilebilir. StringType artık belirtilen String üzerinde Uri.encode yöntemini çağırmak için bu yöntemi geçersiz kılıyor. (Ie5213, b/247637434)
  • NavigationUI artık seçili MenuItem üzerinden gezinemediğinde günlükleri sağlıyor. (I2af5a, b/247730357)

Hata Düzeltmeleri

  • Gezinme derin bağlantıları artık grafik başlatma sırasında değil, gecikmeli şekilde ayrıştırılıyor. Bu da uygulama başlangıcında uygulama performansını artırabilir. (Iab0ab)
  • Boş varsayılan bağımsız değişkenlere sahip bir hedefe derin bağlantı oluşturulduktan sonra yukarı gidilmesinden kaynaklanan kilitlenme düzeltildi. (I51c24, b/243183636)

Bağımlılık Güncellemesi

  • Gezinme'nin Dinamik Özellik Modülleri için sunduğu destek artık ayrıntılı Play Feature Delivery Kitaplığı'na bağlıdır. (Ib4ddc)
  • Gezinme Güvenli Bağımsız Değişkenler artık Android Gradle Eklentisinin 7.3.0 sürümüne bağlı. Bu da artık yalnızca 7.3.0 ve üstü sürümlerle uyumlu olduğu anlamına geliyor. (I47e49)

Sürüm 2.6.0-alpha03

24 Ekim 2022

androidx.navigation:navigation-*:2.6.0-alpha03 yayınlandı. 2.6.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • 2.5.3 gezinme bölmesinde: Crossfade adlı öğenin oluşturabileceği hedef olmadığında NavHost, artık NoSuchElementException oluşturulmasına neden olmaz. Artık besteyi atlarsınız. (Ieb46e, b/253299416)
  • Gezinme 2.5.3'den: Bir hedef arka yığından açıldığında kaydedilen Oluşturma durumunun (ör. rememberSaveable kullanımları) unutulmaması ve kaldırılmaması sorunu düzeltildi. (I64949)

Bağımlılık Güncellemeleri

Sürüm 2.6.0-alpha02

5 Ekim 2022

androidx.navigation:navigation-*:2.6.0-alpha02 yayınlandı. 2.6.0-alpha02 sürümü bu kaydetmeleri içerir.

Davranış Değişiklikleri

  • NavigationUI, bir gezinme grafiğinin kimliği AppBarConfiguration hedefine aktarılırken (ör. Menu aracılığıyla) grafikteki her hedefi hatalı bir şekilde üst düzey hedef olarak işaretlemek yerine ilgili gezinme grafiğinin yalnızca başlangıç hedefini üst düzey hedef olarak kabul ediyor. Tek bir hedefin kimliğini iletme davranışında değişiklik olmaz. Aynı işlev, AppBarConfiguration adresindeki yeni isTopLevelDestination işlevi aracılığıyla kendi kodunuzda da kullanılabilir. (Ie936e, b/238496771)

Hata Düzeltmeleri

  • navigation:navigation-fragment bileşeni artık 1.5.2 Parça sürümüne bağımlı. (I00ba4)
  • İletişim kutusu gibi bir FloatingWindow hedefine gidildiğinde seçili menü öğesi 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ınlandı. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Üstteki uygulama çubuğuyla çalışmak için NavigationUI ürününde bulunan setupWithNavController entegrasyonları artık, otomatik olarak oluşturulan kaynak tam sayısını çıkarmak yerine android:label öğenizde bulunan ReferenceType bağımsız değişkene ait R.string değerini dize değerlerine ayrıştıracak. (I5f803, b/167959935)
  • NavDeepLink artık diziler için varsayılan değerleri desteklemektedir. Bu özellik, bağımsız değişkenin dizi türüyle eşlenecek tekrarlanan sorgu parametreleri için destek sağlar. NavType artık ayrıştırılmış iki değeri birleştirmek için geçersiz kılınabilecek varsayılan bir yöntem de içeriyor. (Id68c3, b/209977108)
  • Gezinme XML dosyasının etkinlik öğesindeki app:data ve app:dataPattern özelliklerinde yer tutucu olarak ${applicationId} dizesi tam olarak kullanıldığında, yer tutucu, uzatıldığında otomatik olarak bağlamın packageName değeri ile doldurulur. (Iaabde, b/234223561)
  • Artık navDeepLink Kotlin DSL'sini kullanarak boş bir NavDeepLink oluşturulmaya çalışıldığında, derin bağlantının geçerli olması için URI, işlem ve/veya mime türüne ihtiyacı olduğunu belirten bir lint uyarısı gösterilecek. (I08d2f, b/154038883)

API Değişiklikleri

  • android:label="{arg}" biçimindeki bağımsız değişkenlere sahip dinamik etiketleri Dize değerine ayrıştırmak için yeni NavDestination uzantısı işlevi eklendi. R.string değerlerini Dize değerlerine ayrıştırarak ReferenceType bağımsız değişkenlerini destekler. (I07d89, b/236269380)

Davranış Değişiklikleri

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

Hata Düzeltmeleri

  • Gezinme 2.5.2: Dinamik Gezinme artık diğer modüllere gitmeden önce Etkinlik hedeflerini düzgün şekilde yüklemeyi deniyor. (Ia2c16, b/240292838)
  • Gezinme 2.5.2'den: Aynı hedefe gidildiğinde ve launchSingleTop işareti "doğru" olarak ayarlandığında Navigasyon, artık Parça örneğini düzgün bir şekilde değiştirecektir. (I5a2f1, b/237374580)
  • Gezinme 2.5.2'dan: Bir üst içe aktarılmış yeni bir başlangıç hedefiyle aynı grafiğe gidilmesinden kaynaklanan IllegalStateException sorunu düzeltildi. (I9f7cb, b/243778589)

Sürüm 2.5

Sürüm 2.5.3

24 Ekim 2022

androidx.navigation:navigation-*:2.5.3 yayınlandı. Sürüm 2.5.3 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavHost, Crossfade tarafından oluşturulabilecek hedef olmadığında artık NoSuchElementException oluşturulmasına neden olmayacak. Artık besteyi atlarsınız. (Ieb46e, b/253299416)
  • Bir hedef arka yığından çıkarıldığında kaydedilen Oluşturma 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ınlandı. Sürüm 2.5.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Dinamik Gezinme artık diğer modüllere gitmeden önce Etkinlik hedeflerini düzgün şekilde yüklemeyi deniyor. (Ia2c16, b/240292838)
  • Navigasyon artık aynı hedefe gidildiğinde ve launchSingleTop işareti doğru değerine ayarlandığında Fragment örneğinin yerini düzgün bir şekilde alacaktır. (I5a2f1, b/237374580)
  • Yeni çalıştırılan başlangıç hedefiyle bir üst öğeyi paylaşan çift iç içe yerleştirilmiş grafiğe gidilmesinden kaynaklanan IllegalStateException sorunu düzeltildi. (I9f7cb, b/243778589)

Bağımlılık Güncellemesi

Sürüm 2.5.1

27 Temmuz 2022

androidx.navigation:navigation-*:2.5.1 yayınlandı. Sürüm 2.5.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

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

Bağımlılık Güncellemeleri

Sürüm 2.5.0

29 Haziran 2022

androidx.navigation:navigation-*:2.5.0 yayınlandı. 2.5.0 sürümü bu kaydetmeleri içerir.

2.4.0'dan bu yana önemli değişiklikler

  • CreationExtras Entegrasyonu - Navigation, artık Yaşam döngüsü 2.5.0'nin CreationExtras aracılığıyla durum bilgisiz bir ViewModelProvider.Factory sağlayabilir.

Navigasyon Güvenli Aramaları

  • Navigation Safe Args, 7.0 tarihinden önceki AGP sürümlerinin uyumluluğunu azaltarak Android Gradle Plugin bağımlılığını 7.0.4 yöntemini kullanacak şekilde yükseltti.
  • applicationId yerine kullanılacak ad alanı build.gradle özelliği için destek eklendi.

Diğer Değişiklikler

  • visibleEntries API artık deneysel değildir ve NavController uyarınca hedefi şu anda görünür olan tüm girişleri almak için bir işlev sağlar.

Sürüm 2.5.0-rc02

15 Haziran 2022

androidx.navigation:navigation-*:2.5.0-rc02 yayınlandı. 2.5.0-rc02 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gezinme Oluşturma NavHost özelliği kullanılırken en alt hedefler arasında hızlı geçişten kaynaklanan kilitlenme düzeltildi. (I3979a, b/234054916)
  • applicationId bulunmayan bir applicationIdSuffix ve ad alanı kullanılırken ya da applicationId ile ad alanı farklı olduğunda Navigation SafeArgs artık kilitlenmez. (I754b1, b/233119646)
  • NavArgument artık bağımsız değişkenin dahili değerlerini gösteren özel bir toString() işlevine sahip. (I900a8)

Sürüm 2.5.0-rc01

11 Mayıs 2022

androidx.navigation:navigation-*:2.5.0-rc01 yayınlandı. Sürüm 2.5.0-rc01 bu kaydetmeleri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • NavHost ve DialogHost sürümlerindeki derlenebilir kapsamlar artık beklenen sırada, yani iç composable'lar, dış composable'lardan önce bertaraf ediliyor. (I157e6)
  • Gezinme SafeArgs, önbellekte yeniden konumlandırılabilmesi için artık ArgumentsGenerationTask içinde PathSensitivity.RELATIVE kullanıyor. Bu sayede önbellek girişi artık CI derlemesinden yerel derlemeye yeniden kullanılabilir. (I5f67c, b/173420454)
  • UnrememberedGetBackStackEntryDetector lint kuralı, getBackStackEntry() çağrısını çevreleyen remember çağrısının, anahtar olarak bir NavBackStackEntry nesnesinde de iletildiğinden emin olmak 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ınlandı. Sürüm 2.5.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • DialogNavigator, dismiss() çağrısı yürütürken artık popWithTransition kullanıyor. Bu hata, dialog hedefi içinde bir ViewModel kullanılırken sistemin geri kullanılması veya iletişim kutusunun dışına dokunarak iletişim kutusu kapatılmasında IllegalStateException oluşmasına neden olan yarış durumunu düzeltir. (Id7376, b/226552301)

Bağımlılık Güncellemeleri

  • Gezinme artık Yaşam Döngüsü 2.5.0-beta01'ne bağlıdır. Birden fazla arka yığın kullanılırken bir NavHost, birincil olmayan alt gezinme sekmesinde bir NavHost içine iç içe yerleştirilirken bir IllegalStateException düzeltilir.

Sürüm 2.5.0-alpha04

6 Nisan 2022

androidx.navigation:navigation-*:2.5.0-alpha04 yayınlandı. 2.5.0-alpha04 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • NavHost, hangi girişlerin oluşturulacağını belirlemek için artık NavController kaynaklı visibleEntries işlevini kullanmaktadır. Bu, iç içe yerleştirilmiş NavHost kullanılırken iç NavHost öğesinin artık düzgün bir şekilde canlandırılacağı anlamına gelir. (I4ba2b, b/225394514)
  • NavController tarafından sağlanan visibleEntries StateFlow değeri, artık mevcut yaşam döngüsü durumu yerine girişin maksimum yaşam döngüsü durumunu temel alıyor. Bu nedenle, navController ana makine yaşam döngüsü BAŞLANGIÇ öğesinin altına gelse bile, görünür bütün öğelerin listesi aynı kalır. (I9e2a8, b/225394514)
  • SavedStateViewFactory, SavedStateRegistryOwner ile başlatıldığında bile artık CreationExtras kullanımını destekliyor. Ekstra özellikler sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
  • NavDeepLink artık Uris'i değer içermeyen tek bir sorgu parametresiyle ayrıştırabilir. (I0efe8, b/148905489)
  • Boş dizeler artık derin bağlantılarda geçerli bağımsız değişkenler olarak kabul edilmektedir. (I70a0d, b/217399862)
  • Navigation Safe Args artık ad alanları kullanılırken kilitlenmez ve AndroidManifest.xml mevcut değildir. (I17ccf, b/227229815)

Sürüm 2.5.0-alpha03

23 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha03 yayınlandı. Sürüm 2.5.0-alpha03 bu kaydetmeleri içerir.

API Değişiklikleri

  • Artık by navGraphViewModels için CreationExtras ileterek ViewModel oluşturabilirsiniz. (I29217, b/217618359)

Hata Düzeltmeleri

  • NavDeepLinks artık rotalara/derin bağlantı URI'lerine yerleştirilmiş kodlanmış yeni satır karakterlerini düzgün bir şekilde destekliyor. (I513d1, b/217815060)
  • CreationExtras, ViewModelleri oluşturmak için NavBackStackEntries ile kullanıldığında artık doğru şekilde çalışır. (I69161, b/217617710)
  • Gezinme Güvenli Bağımsız Değişkenler artık AndroidManifest'teki paketin yerine build.gradle içinde tanımlanan ad alanının kullanılmasını destekliyor. (I659ef, b/217414933)

Sürüm 2.5.0-alpha02

9 Şubat 2022

androidx.navigation:navigation-*:2.5.0-alpha02 yayınlandı. 2.5.0-alpha02 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gezinme 2.4.1'den: NavHostFragment, iç içe yerleştirilmiş grafiklerle görüntüleme bağlamayı kullanırken artık OnBackPressedDispatcher öğesini düzgün şekilde ayarlayacaktır. (Ifbb51, b/214577959)
  • Gezinme 2.4.1'den: İç içe yerleştirilmiş birden fazla 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)

Sürüm 2.5.0-alpha01

26 Ocak 2022

androidx.navigation:navigation-*:2.5.0-alpha01 yayınlandı. Sürüm 2.5.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Bir Parçanın onCreate() öğesinden, by navGraphViewModels() aracılığıyla oluşturulan ViewModel öğesine IllegalStateException ile erişilemediği bir sorun düzeltildi. (I8a14d)
  • NavDeepLink'ler artık bağımsız değişkenlerin kodunu iki kez çözmeyecek. Diğer bir deyişle, uygun bağımsız değişkenler artık son hedefinize iletilecektir. (I31b0a, b/210711399)

Güvenli Bağımsız Değişkenler

  • Güvenli Bağımsız Değişkenler artık Android Gradle Eklentisinin 7.0.4 sürümüne bağlı. Bu, Navigasyon Güvenli Arg'ların artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı, ancak artık Android Gradle Eklentisi 7.1.0 ve sonraki sürümleriyle uyumlu olduğu 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ınlandı. Sürüm 2.4.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

Sürüm 2.4.1

Sürüm 2.4.1

9 Şubat 2022

androidx.navigation:navigation-*:2.4.1 yayınlandı. Sürüm 2.4.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavHostFragment artık iç içe yerleştirilmiş grafiklerle görüntüleme bağlamayı kullanırken OnBackPressedDispatcher düzgün şekilde ayarlanacak. (Ifbb51, b/214577959)
  • İç içe yerleştirilmiş birden fazla NavGraph üzerinden derin bağlantı oluşturulurken arka yığın artık ara başlangıç hedeflerini düzgün bir şekilde içerecektir. (I504c0, b/214383060)
  • Gezinme 2.5.0-alpha01'den eski sürüme aktarıldı: Bir Parça'nın onCreate() öğesinden by navGraphViewModels() aracılığıyla oluşturulan ViewModel'e erişimin IllegalStateException ile başarısız olmasına neden olan sorun düzeltildi. (I8a14d)
  • Gezinme 2.5.0-alpha01'den geriye dönük bağlantı: NavDeepLink artık bağımsız değişkenlerin kodunu iki kez çözmeyecek. Diğer bir deyişle, doğru şekilde çözülmüş bağımsız değişkenlerin artık son hedefinize iletilmesi gerekiyor. (I31b0a, b/210711399)
  • Gezinme 2.5.0-alpha01'dan geri bağlanmış: Güvenli Bağımsız Değişkenler artık Android Gradle Eklentisinin 7.0.4 sürümüne bağlıdır. Bu, Navigasyon Güvenli Bağımsız Değişkenler'in artık 7.0'dan önceki Android Studio sürümleriyle uyumlu olmayacağı, ancak Android Gradle Eklentisi 7.1.0 ve sonraki sürümleriyle uyumlu olduğu anlamına gelir. (I41c88, b/213086135, b/207670704)

Sürüm 2.4.0

Sürüm 2.4.0

26 Ocak 2022

androidx.navigation:navigation-*:2.4.0 yayınlandı. 2.4.0 sürümü bu kaydetmeleri içerir.

2.3.0'dan bu yana önemli değişiklikler

  • Tüm Navigasyon yapıları Kotlin'de yeniden yazıldı. Bu, genel anahtar kelimeler (NavType alt sınıf gibi) kullanan sınıfların null (boşluk) ayarını iyileştirdi. Daha önce -ktx yapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı. -ktx yapıları yayınlanmaya devam eder ancak tamamen boş olur.
  • navigation-fragment yapısı, artık yeni AbstractListDetailFragment üzerinden iki bölme düzeninin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, liste bölmesini (alt sınıfınızın sağladığı) yönetmek için bir SlidingPaneLayout ve uygulama olarak NavHostFragment kullanan bir ayrıntı bölmesini kullanır.
  • NavController üzerindeki currentBackStackEntryAsFlow() yöntemi, geçerli NavBackStackEntry her değiştiğinde yayınlanan bir Flow sağlar. Bu akış, OnDestinationChangedListener öğesini manuel olarak yönetmeye alternatif olarak kullanılabilir.
  • NavController, artık deneysel visibleEntries özelliği aracılığıyla görünür NavBackStackEntry örneklerinin listesini StateFlow olarak alma imkanı sunuyor.
  • Artık özel NavType'lar oluşturmak için NavType sınıfını genişletmek mümkündür. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Graph Kotlin DSL) desteklenir.
  • Gezinme artık özel NavigationUI'nin uygulanmasına yardımcı olmak için kullanılabilecek findStartDestination() ve getHierarchy() API'lerini sağlıyor. findStartDestination(), startDestination öğesinin kendisi iç içe yerleştirilmiş bir NavGraph olsa bile, grafiğe gittiğinizde görüntülenecek asıl başlangıç hedefini NavGraph üzerinde gösteren bir uzantı işlevidir. getHierarchy(), belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen NavDestination işlevidir.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView alan NavigationUI yöntemleri, Materyal 1.4.0, NavigationBarView ile tanıtılan üst sınıfı kapsayacak şekilde güncellendi. Bu işlem, bu yöntemlerin NavigationRailView ile kullanılmasına olanak tanır.

  • Bir <action> öğesini XML aracılığıyla şişirirken 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 bir fromSavedStateHandle() yöntemi oluşturuyor. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    

Navigasyon Rotaları ve Kotlin DSL

Navigasyon'un önceki sürümleri, her bir hedefi eşdüzey hedeflerden benzersiz olarak tanımlayan ve söz konusu hedefe doğrudan veya bir işlem aracılığıyla navigate() olanak tanıyan sabit bir tam sayı kimliğine sahipti. Bu, özellikle gezinme grafiğinizi XML'de tanımlarken ve otomatik olarak oluşturulan R.id sabitlerini veya Güvenli Bağımsız Değişkenleri (derleme zamanında kod oluşturmak için bu sabitleri kullanan) kullanabildiğiniz durumlarda, geçerli ve yararlı olmaya devam etmektedir. Ancak, bu benzersiz tam sayılar sistemi, Gezinme Kotlin DSL aracılığıyla çalışma zamanında programlı bir şekilde oluşturulan tümüyle dinamik grafikleri desteklemek için gereken anlam ve ifade düzeyini yakalamamıştır.

Bu sürümde, navigasyon grafiğinde bir varış noktasının rotaya göre benzersiz şekilde tanımlanması için yeni bir seçenek kullanıma sunuluyor. Rota, bir hedefe giden benzersiz yolu tanımlayan bir String'dir. Hedef kimliği alan tüm Kotlin DSL yöntemlerinin desteği sonlandırılıyor ve bu yöntemler, rotasını izleyen eşdeğer bir API ile değiştiriliyor.

Her rota, ilgili hedefi tanımlayan bir Uri öğesinin "yol" bölümü olarak değerlendirilmelidir (ör. home, profile/{userId}, profile/{userId}/friends vb. Bir hedefin kimliği belirli bir içerik parçasıyla ilişkilendirildiğinde bu dinamik bağımsız değişkenler rotanın bir parçası olmalı ve dolaylı derin bağlantılarla aynı kurallara uymalıdır.

Eskiden yalnızca kimlik alan tüm NavController API'leri artık String rotasını izleyen bir aşırı yüke sahip. Buna navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.

Bunun API ile ilgili bazı etkileri oldu:

  • Kotlin DSL'deki popUpTo Kotlin özelliği kullanımdan kaldırılarak yerine popUpToId getirildi.
  • getStartDestination() API desteği sonlandırılarak getStartDestinationId() kullanıma sunuldu.

Kimliğe göre gezinmenin aksine, rotayla gezinme dolaylı derin bağlantılarla aynı kurallara uyar. Çünkü iç içe yerleştirilmiş herhangi bir grafikteki herhangi bir hedefe doğrudan gidilebilir ve bu sayede, her bir hedefe harici olarak görünür bir derin bağlantı eklenmeden bu rotaların çok modüllü projelerde kullanılabilir olması sağlanır.

Gezinmede Yazma

navigation-compose yapısı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.

Bu sürüm şunları sağlar:

  • composable ve dialog hedeflerini kullanarak gezinme grafiğinizi bir Kotlin DSL'si aracılığıyla oluşturmanıza olanak tanıyan, ayrıca Eşlikçi Navigasyon Materyali gibi isteğe bağlı Gezginler için destek sunan bir NavHost composable.
  • Hedefler arasında çapraz geçiş için zorunlu destek. Eşlikçi Gezinme Animasyonu, deneysel Compose API'leri kullanılarak giriş ve çıkış geçişlerini kontrol etmek için kullanılabilir.
  • Her composable hedef için bir Lifecycle kapsamı. Her hedef yalnızca giriş geçişleri tamamlandığında RESUMED durumuna ulaşır ve çıkışlar başladığında hemen STARTED değerine düşer. Böylece, yalnızca Lifecycle RESUMED olduğunda bir navigate çağrısı tetikleyerek IllegalStateException ve çoklu dokunma sorunlarının tümünü önleyebilirsiniz.
  • ViewModel kapsamının belirlenmesi (Lifecycle ViewModel Compose 2.4.0 viewModel() API'si veya Hilt Navigation Compose 1.0.0da hiltViewModel() öğesinin hiltViewModel() API'si aracılığıyla), yapılandırma değişikliklerinden ve arka yığında kalma (comosable içeriğiniz başka bir şekilde kullanılmadığında) için ve ViewModel'in onCleared() cihazında, söz konusu {10 ile ilişkili durumun kalıcı olarak imha ve temizlenmesini belirten bir sinyal sağlar.NavBackStackEntry
  • rememberSaveable durumunun hedef düzeyinde kapsamı, composable durumlarının bir hedefe döndüğünüzde otomatik olarak kaydedilmesini ve geri yüklenmesini sağlar.
  • İşlemin ölümü ve yeniden oluşturulması sonrasında NavController durumunu ve hedefinin durumunu kaydedip geri yüklemek için tam destek.
  • Sistem geri düğmesiyle otomatik entegrasyon.
  • Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere sonuç döndürme için destek.

  • Kaldırma durumuna ve NavController öğesini NavHost dışındaki composable'lara (alt gezinme çubuğu gibi) bağlamaya izin vermek için rememberNavController() ve currentBackStackEntryAsState() ürünlerinde 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 Oluşturma Gezinme rehberine bakın.

Birden çok yığın

NavController, hedef yığınlarını yönetmekten, navigate() eklendiklerinde arka yığına hedef eklemekten ve popBackStack() çağrısı yaptığınızda ya da sistem geri düğmesini tetiklediğinde kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'sindeki <action> öğeleriyle entegrasyon, eski yığının kaydedilip geri yüklenmesini destekleyecek şekilde genişletildi.

Bu değişiklik kapsamında, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController() NavigationUI yöntemleri artık aktarılmış hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek kod değişikliği yapılmadan birden fazla arka yığını desteklemeyi amaçlamaktadır. Gezinmeyi Parçalarla kullanırken birden fazla yığınla entegrasyon sağlamak için bu yöntem önerilir.

Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler, çeşitli yüzeylerle gösterilir:

  • Gezinme XML'inde <action> öğesi artık app:popUpTo aracılığıyla açılan tüm hedeflerin durumunu kaydetmek ve app:destination olarak iletilen hedefle ilişkilendirilen durumu geri yüklemek için app:popUpToSaveState ve app:restoreState boole özelliklerini kullanabilir:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL'de, popUpTo oluşturucu üzerinde restoreState boole özelliğini ve saveState boole özelliğini ekleyebilirsiniz:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • NavOptions.Builder aracılığıyla manuel olarak bir NavOptions nesnesi oluştururken setRestoreState() ve ek saveState parametresi gerektiren setPopUpTo() için yeni aşırı yüklemeyi kullanabilirsiniz.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() için yapılan programatik çağrılar artık ek bir saveState parametresi içerebilir.

  • popBackStack() veya popUpToSaveState ile kaydedilmiş herhangi bir durumu temizlemek için clearBackStack() yöntemini kullanabilirsiniz.

Her durumda NavController, ViewModel örnekleri kapsamındaki gezinme hedefi kapsamındakiler de dahil olmak üzere her bir NavBackStackEntry öğesinin durumunu kaydeder ve geri yükler. Navigator API'leri, kendi durumlarını kaydetmeyi ve geri yüklemeyi destekleyecek şekilde her bir Navigator özelliğini etkinleştirecek şekilde güncellendi.

Davranış değişiklikleri

  • NavDeepLinkBuilder, createPendingIntent() tarafından döndürülen PendingIntent öğesine artık PendingIntent.FLAG_IMMUTABLE ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlar.
  • Navigasyon artık Yaşam Döngüsü 2.3.1'ne bağlıdır ve artık NavBackStackEntry Lifecycle değerini @MainThread olarak güncelleyen yöntemler olan setGraph(), popBackStack(), navigateUp() ve navigate() olarak işaretlenmiştir. Böylece, Navigasyon, Yaşam Döngüsü 2.3.0'de sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirilmiştir.
  • 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ğruluyor.
  • Ayrıştırılmış NavDeepLink bağımsız değişkenleri artık soru işaretleriyle aynı şekilde yol segmentleri arasında ayırıcı olarak dikkate alıyor. Böylece, bağımsız değişkenin pound işareti boyunca yayılmasını engelliyor.
  • Güvenli Bağımsız Değişkenler'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değerleri olmayan bağımsız değişkenleri, varsayılan değerleri parametre olarak ayarlananlardan önce yerleştiriyor.
  • Güvenli Bağımsız Değişkenler artık bağımsız değişkenler oluştururken, varsayılan değerleri olmayan parametreleri, varsayılan değerlere sahip olanlardan önce yerleştiriyor.
  • Güvenli Arg'ler artık Android Gradle Plugin 4.2.0'a bağlı. Bu durumda artık "applicationIdTextResource kullanılıyor" uyarısını almayacaksınız.

Bilinen sorunlar

  • Gezinme 2.5.0-alpha01 bölümünde düzeltildi: Bir Parçanın onCreate() öğesinden by navGraphViewModels() aracılığıyla oluşturulmuş bir ViewModel değerine erişim, IllegalStateException ile başarısız olacaktır. (b/213504272)
  • Gezinme 2.5.0-alpha01 bölümünde düzeltildi: Safe Args 2.4.0, Android Gradle Plugin 7.1.0 ve sonraki sürümlerle uyumlu değildir. (b/213086135)
  • İç içe yerleştirilmiş birden fazla gezinme grafiğiyle derin bağlantılar oluşturmak, tam geri yığını doğru şekilde oluşturmaz. (b/214383060)

Sürüm 2.4.0-rc01

15 Aralık 2021

androidx.navigation:navigation-*:2.4.0-rc01 yayınlandı. Sürüm 2.4.0-rc01 bu kaydetmeleri içerir.

Davranış değişiklikleri

  • Ayrıştırılmış NavDeepLink bağımsız değişkende artık kare işareti, bağımsız değişkenler arasında ayırıcı olarak soru işareti olarak kullanılıyor. (I21309, b/180042703)

Hata Düzeltmeleri

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

Gezinme Oluşturmada Hata Düzeltmeleri

  • Alttaki gezinme menüsü öğeleri kullanılarak başlangıç hedefi ile başka bir hedef arasında hızlı geçişten kaynaklanan olası kilitlenme düzeltildi. (Ic8976, b/208887901)
  • Yapılandırma değişikliklerinden veya işlem sona erdikten sonra iletişim kutusu hedefi artık ekranın üst kısmına düzgün bir şekilde geri yükleniyor. (I4c0dc, b/207386169)
  • İletişim kutusu kapatıldığında, iletişim kutusunun NavBackStackEntry öğesinden ViewModel alma girişiminin başarısız olmasına neden olan sorun düzeltildi. (I6b96d, b/206465487)
  • activity hedefleri, Gezinme Oluşturma özelliğinin NavHost özelliğiyle birlikte kullanıldığında sonsuz yeniden bestelemeye neden olabilecek bir sorun düzeltildi. (I8f64c)
  • Gezinme Oluşturma'da, bir yapılandırma değişikliği veya işlem ölümünün ardından eski etkinlik referansını muhafaza ettiği bir sızıntı düzeltildi. (I4efcb, b/204905432)

Güvenli Bağımsız Değişkenler Hata Düzeltmeleri

  • İşlem sona erdikten sonra özel ayrıştırılabilir diziler geri yüklenmeye çalışıldığında SafeArgs artık çökmüyor. (I618e8, b/207315994)
  • Güvenli bağımsız değişkenlerde, boole dizilerinin null değerine sahip olmasına izin vermeyen bir hata düzeltildi. (I8c396, b/174787525)

Sürüm 2.4.0-beta02

3 Kasım 2021

androidx.navigation:navigation-*:2.4.0-beta02 yayınlandı. Sürüm 2.4.0-beta02 bu kaydetmeleri içerir.

API Değişiklikleri

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

Davranış Değişiklikleri

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

Hata Düzeltmeleri

  • NavHost doğrudan etkinliğin setContent() öğesine eklendiğinde, Lifecycle.State.STARTED öğesine taşındıktan sonra NavBackStackEntries'in Lifecycle.State.CREATED öğesine aktarılmasına neden olan sorun düzeltildi. (Ia5ac1, b/203536683)
  • Bir DialogFragment hedefini iletişim kutusu gerçekten gösterilmeden önce arka yığından dışarı fırlatmanın iletişim kutusunu kapatmayacağı ve hatalı iletişim kutusunun kullanıcı tarafından manuel olarak kapatılması durumunda kilitlenmeye neden olduğu bir yarış durumu düzeltildi. (I687e5)
  • NavigationUI üzerindeki onNavDestinationSelected API'nin, söz konusu gezinme grafiğinde aslında navigate() yapmamış olsanız bile true döndürmesine neden olan sorun düzeltildi. Artık hedefin hierarchy değerini kullanarak geçerli hedefle ilişkili MenuItem öğesini seçmek için setupWithNavController 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ınlandı. Sürüm 2.4.0-beta01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Artık Parçalarla Navigasyon Kotlin DSL'sinin kullanılmasını daha iyi desteklemek için by navGraphViewModel öğesini kimlik kullanmaya alternatif olarak bir rotayla kullanabilirsiniz. (I901e3, b/201446416)

API Değişiklikleri

  • visibleEntries API artık deneyseldir. (I93f6f)

Hata Düzeltmeleri

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

Sürüm 2.4.0-alpha10

29 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha10 yayınlandı. Sürüm 2.4.0-alpha10 bu kaydetmeleri içerir.

Yeni Özellikler

  • NavController artık visibleEntries StateFlow (Ia964e) üzerinden görünür tüm NavBackStackEntry örneklerinin listesini alma imkanı sunuyor
  • rememberNavController() artık Accompanist Navigation Material'dakiler gibi isteğe bağlı Gezginleri daha iyi desteklemek için döndürülen NavController öğesine eklenecek isteğe bağlı bir Navigator örnek grubunu alıyor. (I4619e)

Hata Düzeltmeleri

  • Etkinlik yeniden oluşturulduğunda Dinamik Gezinme artık çökmeyecektir. (Ifa6a3, b/197942869)
  • Sistem geri düğmesinde yalnızca NavHost içeren bir composable hedefe geri döndürüldükten sonra ortaya çıkan sorun düzeltildi. (3ed148, b/195668143)
  • SafeArgs artık fromBundle() ve fromSavedStateHandle() için bağımsız değişkenleri uygun parametre sırasında oluşturuyor. (I824a8, b/200059831)

Sürüm 2.4.0-alpha09

15 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha09 yayınlandı. Sürüm 2.4.0-alpha09 bu kaydetmeleri içerir.

Yeni Özellikler

  • Artık popBackStack() veya popUpToSaveState ile kaydedilen durumları temizlemek için clearBackStack() yöntemini kullanabilirsiniz. (I80a0f)
  • Artık iç içe yerleştirilmiş gezinme grafiğinizin oluşturucusuna bir bağımsız değişken ve/veya derin bağlantı listesi aktarabilirsiniz. Bu listeler, oluşturulan grafiğe otomatik olarak eklenir. (I8a470, b/182545357)

API Değişiklikleri

  • navArgument Kotlin DSL işlevi artık navigation-compose yerine navigation-common işlevinin bir parçası. Bu işlevi kullanmaya devam etmek için içe aktarma işlemlerinin güncellenmesi gerekir. (I1d095)

Davranış Değişiklikleri

  • Güvenli Bağımsız Değişkenler artık bağımsız değişkenler oluştururken, varsayılan değerleri olmayan parametreleri, varsayılan değerlere sahip olanlardan önce yerleştiriyor. (I89709, b/198493585)

Hata Düzeltmeleri

  • Gezinme Oluşturma menüsünde, NavGraphs yalnızca tüm alt öğeleri DESTROYED olduğunda DESTROYED olur. (I86552, b/198741720)
  • Boş değer atanabilir NavDeepLink bağımsız değişkenleri için artık varsayılan değer gerekmiyor. (Ia14ef, b/198689811)
  • setGraph() yeni bir grafikle çağrıldığında, önceki yığını açma davranışının yanı sıra artık kaydedilen tüm geri yığınlar da temizlenecek. (I97f96)
  • launchSingleTop kullanılırken OnDestinationChangedListener örneklerinin ve currentBackStackEntryFlow öğelerinin bildirilmemesine neden olan sorun düzeltildi. (Iaaebc)

Bağımlılık Güncellemeleri

Sürüm 2.4.0-alpha08

1 Eylül 2021

androidx.navigation:navigation-*:2.4.0-alpha08 yayınlandı. 2.4.0-alpha08 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Artık özel NavType'lar oluşturmak için NavType sınıfını genişletmek mümkündür. Özel türler yalnızca gezinme grafiğinizi programatik olarak oluştururken (ör. Gezinme Graph Kotlin DSL) desteklenir. (I78440, b/196871885)

Davranış Değişiklikleri

  • Güvenli Bağımsız Değişkenler'den oluşturulan Kotlin kodu, işlem oluştururken artık varsayılan değerleri olmayan bağımsız değişkenleri, varsayılan değerleri parametre olarak ayarlananlardan ö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ğunu doğruluyor. (#204, b/185527157)

Hata Düzeltmeleri

  • composable() içinde getBackStackEntry ve previousBackStackEntry öğelerinin remember() ile birlikte kullanılması, artık arka yığında hiçbir hedefin olmaması istisnasına neden olmayacak. (I75138, b/194313238)
  • Gezinme Oluşturma Özelliği, artık geri yığın bağımsız değişkenlerini değiştirirken ve launchSingleTop=true kullanırken düzgün şekilde yeniden oluşturuyor. (Iebd69, b/186392337)
  • 13 veya 29 hedef içeren bir grafikle setGraph aranırken artık ArrayIndexOutOfBoundsException olmayacak. (I1a9f1, b/195171984)
  • SafeArgs Java oluşturucusu, artık Args sınıfları oluştururken lint uyarılarına neden olmamalıdır. (I1a666, b/185843837)

Harici Katkı

  • Derin bağlantıların, gerekli tüm bağımsız değişkenlerin (varsayılan değeri olmayanlar) Uri içinde mevcut olduğunu doğruladığından emin olduğunuz için ospixd'ye teşekkür ederiz. (#204, b/185527157)

Sürüm 2.4.0-alpha07

18 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha07 yayınlandı. 2.4.0-alpha07 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Gezinme Oluşturma artık yapılandırma değişikliklerinden sonra ve çoklu arka yığın özelliğini kullanırken grafikler değiştirildiğinde durumu düzgün bir şekilde kaydediyor. (If5a3d, b/195141957)
  • Birden fazla arka yığınla gezinme oluşturma özelliğini kullanırken aynı sekmeyi yeniden seçmek, artık boş ekranla sonuçlanmayacak. (I860dc, b/194925622)
  • NavHost artık NavBackStackEntry öğesinin Lifecycle.State değerlerinde değişiklikleri gözlemliyor. Bu da bir parçada NavHost kullanılması, boş ekran yerine yaşam döngüsü değiştikçe uygun şekilde yeniden derleneceği anlamına gelir. (I4eb85, b/195864489)
  • Etkinliği yeniden oluşturduktan sonra (ör. yapılandırma değişikliğinden sonra) DialogFragment kapatma işleminin NavController durumunun doğru şekilde güncellenmemesine neden olan sorun düzeltildi. (Icd72b)
  • Bir iletişim kutusu hedefi açıldığında, NavController'ın sistem geri düğmesi işlemesinin güncellenmemesine neden olan sorun düzeltildi. Bu sorun, patlayacak herhangi bir geri yığını bulunmasa bile NavController'ın geri düğmesine müdahale etmesine neden olabilir. (If3b34)
  • Güvenli bağımsız değişkenler artık ViewModel kodunuzu test etmek amacıyla kullanılabilecek bağımsız değişkenler için otomatik olarak toSavedStateHandle yöntemi oluşturur. (If1e2d, b/193353880)

Sürüm 2.4.0-alpha06

4 Ağustos 2021

androidx.navigation:navigation-*:2.4.0-alpha06 yayınlandı. 2.4.0-alpha06 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

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

Davranış Değişiklikleri

  • Animasyonlarla (Crossfade gibi) gezinirken yeni hedefin Lifecycle değeri artık yalnızca animasyon tamamlandığında RESUMED hedefine ulaşacak. (If0543, b/172112072, b/194301889)
  • Gezinme Oluşturma'nın NavHost özelliği artık grafiği ilk bestenin parçası olarak ayarlıyor. (Ieb7be)

Hata Düzeltmeleri

  • Bir gezinme grafiğinin son hedefi yükseltildiğinde artık ClassCastException tetiklenmez. (If0543, b/172112072, b/194301889)
  • Uri olmadan derin bağlantı eklerken ve rota ya da derin bağlantı üzerinden gezinirken oluşabilecek NullPointerException düzeltildi. (938a0c, b/193805425)
  • Gezinme Oluşturma'da, derin bağlantılı NavBackStackEntry öğesinin RESUMED durumuna ulaşmaması sorunu düzeltildi. (I192c5)
  • Bir iletişim kutusu hedefi açıldığında, NavController'ın sistem geri düğmesi işlemesinin güncellenmemesine neden olan sorun düzeltildi. Bu sorun, patlayacak herhangi bir geri yığını olmamasına rağmen NavController'ın geri düğmesine müdahale etmesine neden olabilir. (aosp/1782668)

Sürüm 2.4.0-alpha05

21 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha05 yayınlandı. 2.4.0-alpha05 sürümü bu kaydetmeleri içerir.

Davranış Değişiklikleri

  • Gezinme Oluşturma özelliğinin NavHost özelliği artık hedefler arasında gezinirken her zaman çapraz geçişleri kullanıyor. (I07049, b/172112072)
  • Artık NavHost grafiğinde değişiklik yapabilirsiniz. Başlangıç hedefi ve grafikteki hedefler aynı olan grafikler eşit kabul edilir ve NavController arka yığınını temizlemez. (I0b8db, b/175392262)

Hata Düzeltmeleri

  • NavController'ın durumundaki geri gelen güncellemelerden kaynaklanan NavBackStackEntry öğesine bağlı bir LifecycleObserver içinden popBackStack() çağrılırken NoSuchElementException sorunu düzeltildi. (I64621)
  • AbstractListDetailFragment artık AbstractListDetailFragment kullanılmadığında SlidingPaneLayout öğesinin APK'nızdan tamamen kaldırılmasına izin veriyor. (i611ad)
  • NavGraph ve NavDestination artık eşittir yöntemini geçersiz kılıyor. Böylece, aynı değerlere sahip iki nesne eşit kabul edilecek. (I166eb, b/175392262)

Sürüm 2.4.0-alpha04

1 Temmuz 2021

androidx.navigation:navigation-*:2.4.0-alpha04 yayınlandı. 2.4.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • navigation-fragment yapısı, artık yeni AbstractListDetailFragment üzerinden iki bölme düzeninin önceden oluşturulmuş bir uygulamasını içeriyor. Bu parça, örnek uygulamamızda görüldüğü gibi, liste bölmesini (alt sınıfınızın sağladığı) yönetmek için bir SlidingPaneLayout ve uygulama olarak NavHostFragment kullanan bir ayrıntı bölmesini kullanır. (Iac4be, b/191276636)
  • navigation-compose yapısının NavHost tanesi artık composable hedeflerin yanı sıra dialog hedefi de destekliyor. Bu iletişim kutusu hedeflerinin her biri, geçerli composable hedefinin üzerinde kayan bir Dialog içinde gösterilir. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

API Değişiklikleri

  • NavigatorState tablosundaki add 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 eşzamansız olarak aktarmak veya açmak için NavigatorState üzerinde pushWithTransaction ve popWithTransition API'lerini kullanabilir. Bu API'lerin henüz dahil olan kılavuzlardan hiçbiri tarafından kullanılmadığını unutmayın. (Ic4d7c, b/172112072)

Davranış Değişiklikleri

  • NavDeepLinkBuilder, createPendingIntent() tarafından döndürülen PendingIntent öğesine artık PendingIntent.FLAG_IMMUTABLE ekleyerek bu API'nin Android 12'yi hedeflerken beklendiği gibi çalışmasını sağlar. (If8c52)

Hata Düzeltmeleri

  • Grafiğe geçirilen bağımsız değişkenlerin dinamik olarak dahil edilen grafiğe doğru şekilde iletilmemesine neden olan <include-dynamic> ile ilgili sorun düzeltildi. (I3e115)
  • Varsayılan değeri @null olan string[] bağımsız değişkeni kullanılarak bir hedefe gidilirken NullPointerException düzeltildi. (I1fbe8)
  • R8 3.1 tam modunu kullanırken sorunları düzelterek @Navigator.Name için ProGuard kuralları ekleyin. (I2add9, b/191654433)
  • SafeArgs, 1.5.0 tarihinden önceki Kotlin sürümleriyle uygulamanızı oluştururken artık başarısız olmayacak. (Icd1ff, b/190739257)

Sürüm 2.4.0-alpha03

16 Haziran 2021

androidx.navigation:navigation-*:2.4.0-alpha03 yayınlandı. 2.4.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Dahil edilen dinamik grafiğe gitmek için iki navigate() çağrısının gerekmesine neden olan sorun düzeltildi. (I7785c, b/188859835)
  • Üst düzey bir hedefte olduğunuzda setupActionBarWithNavController() adlı gezinme simgesinin Yukarı simgesini düzgün bir şekilde kaldırmadığı Gezinme 2.4.0-alpha01'de ortaya çıkan regresyon düzeltildi. (I5d443, b/189868637)
  • NavController'ın kök grafiği önceden açıldıktan sonra popBackStack() çağrılırken ortaya çıkan IllegalStateException düzeltildi. (I2a330, b/190265699)
  • by navArgs() için ProGuard kuralları artık navigation-common veya buna bağlı herhangi bir yapı kullanılırken doğru şekilde uygulanıyor. (I68800, b/190082521)
  • İlk kez bir geri arama aldığında navigate() çağrısı yapan bir OnDestinationChangedListener, şu anda gittiği hedefle birlikte ikinci bir geri çağırma kullanıyor. (Ie5f9e, b/190228815)
  • Güvenli Bağımsız Değişkenler artık dinamik özellik modülleri ve AGP 7.0 ve sonraki bir sürümle birlikte kullanıldığında kilitlenmiyor. (I69518, b/189966576)

Bilinen Sorun

  • Güvenli Bağımsız Değişkenler, Kotlin'in eski bir sürümüne bağımlılık nedeniyle Gradle 6.7.0 kullanılırken Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ hatasıyla başarısız olur. Bu sorun, Gradle 7.0 kullanılacak şekilde güncellenerek giderilebilir. (b/190739257)

Sürüm 2.4.0-alpha02

2 Haziran 2021

androidx.navigation:navigation-*:2.4.0-alpha02 yayınlandı. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Rotalar artık Dinamik Gezinme Kotlin DSL'sinin yanı sıra Etkinlik, Parça ve İletişim hedefleri için desteklenmektedir. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI, durumunuzun kaydedilmesini devre dışı bırakmanız için geçici olarak deneysel API'ler ekledi. Durumu her zaman kaydetmek doğru davranış olsa da durumu kaydederken desteklenmeyen kitaplıkların (ör.saklanan parçalar) kullanılmaya devam etmesi de mümkündür. Bu durum, uygulamaların desteklenmeyen API'lerden yavaşça dönüşüm gerçekleştirmelerine olanak tanır. (Idf93c)
  • Gezinme artık özel NavigationUI'nin uygulanmasına yardımcı olmak için kullanılabilecek findDestination() ve getHierarchy() API'lerini sağlıyor. findDestination(), NavGraph uygulamasında grafikteki bir hedefi belirleyecek bir uzantı işlevidir. getHierarchy(), belirli bir hedefin başka bir hedefin hiyerarşisinde olup olmadığını doğrulamak için kullanılabilen NavDestination işlevidir.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • BottomNavigationView alan NavigationUI yöntemleri, bunun yerine 1.4.0 Materyalinde (NavigationBarView) tanıtılan üst sınıfı alacak şekilde güncellendi. Bu işlem, bu yöntemlerin NavigationRailView ile kullanılmasına olanak tanır. (Ib0b36, b/182938895)

  • Bir <action> öğesini XML aracılığıyla şişirirken animasyon özellikleri, app:enterAnim="?attr/transitionEnter" söz dizimi kullanılarak temanızdan alınan özellikleri kullanabilir. (I07bc1, b/178291654)

API Değişiklikleri

  • Kimlik kullanan Kotlin DSL derleyicileri kullanımdan kaldırılmıştır ve bunların, rota kullanan derleyicilerle değiştirilmesi gerekir (I85b42, b/188816479) (I9f58f, b/188816479)

Hata Düzeltmeleri

  • DialogFragmentNavigator, bir iletişim kutusu sistem geri düğmesine basarak veya dışına tıklayarak kapatıldığında NavController durumunu bildirmek için artık NavigatorState.pop() API'sini kullanıyor. Böylece NavController durumu, her zaman Gezgin'in durumuyla senkronize ediliyor. (I2ead9)
  • Navigasyon, bir onDestinationChanged geri çağırması ile OnDestinationChangedListeners listesi değiştirildiğinde artık ConcurrentModificationException sağlamıyor. (Ib1707, b/188860458)

  • Güvenli Bağımsız Değişkenler artık Kotlin'de yol tarifi özellikleri oluşturmaya çalışırken çökmüyor. (Id2416, b/188564435)

  • NavDestination'daki setId yöntemi artık @IdRes ile düzgün bir şekilde notlandırıldığı için yalnızca kaynak kimliklerini kabul ediyor. (I69b80)

  • findNode öğesinin int parametresi artık resid yerine resId olur. (I7711d)

Bağımlılık Güncellemesi

  • Güvenli Arg'ler artık Android Gradle Plugin 4.2.0'a bağlı. Bu durumda artık "applicationIdTextResource kullanılıyor" uyarısını 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ınlandı. Sürüm 2.4.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

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

Birden çok yığın

NavController, hedef yığınlarını yönetmekten, navigate() eklendiklerinde arka yığına hedef eklemekten ve popBackStack() çağrısı yaptığınızda ya da sistem geri düğmesini tetiklediğinde kaldırmaktan sorumludur. Mevcut NavOptions sınıfı ve gezinme grafiği XML'sindeki <action> girişleriyle entegrasyon, eski yığının kaydedilip geri yüklenmesini destekleyecek şekilde genişletildi. (b/80029773)

Bu değişiklik kapsamında, onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ve NavigationView.setupWithNavController() NavigationUI yöntemleri artık aktarılmış hedeflerin durumunu otomatik olarak kaydedip geri yükleyerek kod değişikliği yapılmadan birden fazla arka yığını desteklemeyi amaçlamaktadır. Gezinmeyi Parçalarla kullanırken birden fazla yığınla entegrasyon sağlamak için bu yöntem önerilir. (Ie07ca)

Durumu kaydetmek ve geri yüklemek için kullanılan temel API'ler, çeşitli yüzeylerle gösterilir:

  • Gezinme XML'inde <action> öğesi artık app:popUpTo aracılığıyla açılan tüm hedeflerin durumunu kaydetmek ve app:destination olarak iletilen hedefle ilişkilendirilen durumu geri yüklemek için app:popUpToSaveState ve app:restoreState boole özelliklerini kullanabilir:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL'de, popUpTo oluşturucu üzerinde restoreState boole özelliğini ve saveState boole özelliğini ekleyebilirsiniz:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • NavOptions.Builder aracılığıyla manuel olarak bir NavOptions nesnesi oluştururken setRestoreState() ve ek saveState parametresi gerektiren setPopUpTo() için yeni aşırı yüklemeyi kullanabilirsiniz.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() için yapılan programatik çağrılar artık ek bir saveState parametresi içerebilir.

Her durumda NavController, ViewModel örnekleri kapsamındaki gezinme hedefi kapsamındakiler de dahil olmak üzere her bir NavBackStackEntry öğesinin durumunu kaydeder ve geri yükler. Navigator API'leri, kendi durumlarını kaydetmeyi ve geri yüklemeyi destekleyecek şekilde her bir Navigator özelliğini etkinleştirecek şekilde güncellendi.

Gezinme Oluşturmada composable hedefleri için kullanılan ComposeNavigator ve Parçalarla Navigasyon'da <fragment> hedefleri için kullanılan FragmentNavigator ve DynamicFragmentNavigator, yeni Navigator API'lerini kullanacak şekilde güncellenmiş, durumun kaydedilmesini ve geri yüklenmesini destekleyecektir.

Navigasyon Rotaları

Rota, bir hedefi benzersiz şekilde tanımlayan bir String'dir. Daha önce yalnızca Gezinme Yazma özelliğinde kullanılmış olsa da bu kavram, ilerleyen zamanlarda temel Gezinme API'lerinin bir parçası haline gelmiştir. Bu, Gezinme Kotlin DSL ile grafiğinizi oluştururken tam sayı kimliklerinin kullanılmasına bir alternatif sağlar. (b/172823546)

Eskiden yalnızca kimlik alan tüm API'ler artık String rotasını izleyen bir aşırı yüke sahip. Buna navigate(), popBackStack(), popUpTo() ve getBackStackEntry() dahildir.

Bunun API ile ilgili bazı etkileri oldu:

  • Kotlin DSL'deki popUpTo kotlin özelliği kullanımdan kaldırılarak yerine popUpToId getirildi. (I59c73, b/172823546)
  • getStartDestination() API desteği sonlandırılarak getStartDestinationId() kullanıma sunuldu. (I0887f, b/172823546)

Yazma Sihirbazı'nın önceki sürümlerinden Gezinme Oluşturma 2.4.0-alpha01 sürümüne geçen geliştiriciler için bu, uzantı yöntemlerinde yapılan 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, NavDestination tarihinde route özelliğiyle değiştirildi. Bu sayede navBackStackEntry.destination.route öğesini doğrudan çağırabilirsiniz.

API Değişiklikleri

  • Tüm Navigasyon yapıları Kotlin'de yeniden yazıldı. Bu, genel anahtar kelimeler (NavType alt sınıf gibi) kullanan sınıfların null (boşluk) ayarını iyileştirdi. Daha önce -ktx yapılarının bir parçası olan tüm Kotlin uzantı işlevleri, ilgili ana yapılarına taşındı. -ktx yapıları yayınlanmaya devam eder ancak tamamen boş olur. (b/184292145)
  • NavDeepLinkBuilder artık oluşturulan arka yığına birden fazla farklı hedef eklemeyi destekliyor. (I3ee0d, b/147913689)
  • DynamicNavHostFragment (Icd515, b/175222619) için fabrika işlevlerini ekleyin
  • NavBackStackEntry öğesinin benzersiz kimliği, artık herkese açık API'sinin bir parçası olarak gösteriliyor. (Ie033a)
  • NamedNavArgument ürününün name ve argument alanları ve yapılandırma işlevleri artık herkese açık. (#174, b/181320559)
  • İlgili beste yerellerine NavBackStackEntry sağlayan yeni bir NavBackStackEntry#provideToCompositionLocals uzantısı kullanıma sunuldu. (#175, b/187229439)

Güvenli Bağımsız Değişkenler

  • Güvenli Bağımsız Değişkenler artık her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturuyor. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Güvenli Bağımsız Değişkenler, KotlinPoet 1.8.0 değişkenine bağlı olacak şekilde güncellendi. (#172, b/183990444)

Davranış Değişiklikleri

  • Navigasyon artık Yaşam Döngüsü 2.3.1'ne bağlıdır ve artık NavBackStackEntry Lifecycle değerini @MainThread olarak güncelleyen yöntemler olan setGraph(), popBackStack(), navigateUp() ve navigate() olarak işaretlenmiştir. Böylece, Navigasyon, Yaşam Döngüsü 2.3.0'de sunulan ana iş parçacığı yaptırımıyla uyumlu hale getirilmiştir. (b/171125856)
  • Derin bağlantılardan enum bağımsız değişkenleri ayrıştırıldığında artık büyük/küçük harfe duyarlı değildir. Böylece, http://www.example.com/red gibi bir derin bağlantının, sıralama değeri RED değerine sahip olsa bile www.example.com/{color} derin bağlantısıyla eşleşmesi sağlanır. (#152, b/135857840)

Oluşturma Uyumluluğu

  • androidx.navigation:navigation-compose:2.4.0-alpha01 yalnızca Compose 1.0.0-beta07 ve sonraki sürümlerle uyumludur.

Hata Düzeltmeleri

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

Harici Katkılar

  • Her NavArgs sınıfı için bir fromSavedStateHandle() yöntemi oluşturan Güvenli Arg'ların oluşturduğu destek için simonschiller'a teşekkür ederiz. (#122, b/136967621)
  • Derin bağlantılardan alınan Enum bağımsız değişkenlerini büyük/küçük harfe duyarlı hale getirdiği için Bradleycorn'a teşekkür ederiz. (#152, b/135857840)
  • Sondaki bağımsız değişken yer tutucularının tam olarak eşleşen bir son eke sahip derin bağlantılara göre öncelikli olacağı bir sorunu düzelttiğiniz için osipxd'ye teşekkür ederiz. (#153, b/184072811)
  • Güvenli Bağımsız değişkenleri KotlinPoet'e 1.8.0 bağlı olacak şekilde güncellediğiniz için tatocaster'a teşekkür ederiz. (#172, b/183990444)
  • NamedNavArgument ürününün name ve argument alanlarını ve yıkıcı 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 NavBackStackEntry#provideToCompositionLocals uzantısını sunduğunuz için jossiwolf'a teşekkür ederiz. (#175, b/187229439)
  • NavigatorProvider#addNavigator davranışını iyileştirdiği için jossiwolf'a teşekkür ederiz. Bu davranışla birlikte aynı örnekle tekrar tekrar çağrının sorun yaratmaması sağlanır. (#176, b/187443146)

Sürüm 1.0.0-alpha10

7 Nisan 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 yayınlandı. 1.0.0-alpha10 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • NavHost artık hedef composable'ları sarmalayan composable container'a aktarılan bir Modifier kabul ediyor. (I85aca, b/175125483)

Hata Düzeltmeleri

  • NavHost artık bir OnBackPressedDispatcherOwner bulunamadığında bile çalışıyor. NavHost öğesini önizlerken bu durum geçerli. (I7d8b4)
  • Oluşturma Gezinme Gezinmesi artık 2.3.5 Gezinmesine bağımlıdır ve NavHost hedefinde BackHandler kullanılırken karşılaşılan bir sorun düzeltilir. (I7e63b, b/182284739)

Sürüm 1.0.0-alpha09

10 Mart 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 yayınlandı. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.

API Değişiklikleri

  • LocalViewModelStoreOwner.current, mevcut bileşimde ViewModelStoreOwner olup olmadığını daha iyi belirlemek için artık null değeri içeren bir ViewModelStoreOwner değeri döndürüyor. Bir ViewModelStoreOwner ayarlanmazsa viewModel() ve NavHost gibi bir ViewModelStoreOwner gerektiren API'ler yine de istisna oluşturur. (Idf39a)

Hata Düzeltmeleri

  • Artık Gezinme Oluşturma Gezinme 2.3.4'e bağımlıdır. Bu sürüm, grafik ayarlandıktan sonra aynı ViewModelStore nesnesini ayarlamaya yönelik düzeltmeyi içerir. (I65c24, b/177825470)

Sürüm 1.0.0-alpha08

24 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • NavHost, artık LocalSavedStateRegistryOwner CompositionLocal öğesini bu hedefin NavBackStackEntry ile dolduruyor. Böylece, doğrudan SavedStateRegistry içine kaydedilen eyaletler kaydedilip hedefle birlikte geri yükleniyor. (I435d7, b/179469431)

Sürüm 1.0.0-alpha07

10 Şubat 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu kaydetmeleri içerir.

Bağımlılık Güncellemeleri

Sürüm 1.0.0-alpha06

28 Ocak 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • NavController öğesine, ilişkilendirilmiş NavBackStackEntry değerini döndüren bir getBackStackEntry(route: String) uzantısı yöntemi eklendi. (If8931)

Sürüm 1.0.0-alpha05

13 Ocak 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.

Oluşturma 1.0.0-alpha10 sürümüne 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ınlandı. 1.0.0-alpha04 sürümü bu kaydetmeleri içerir.

  • Oluşturma 1.0.0-alpha09 ile uyumluluk için güncellendi.

Sürüm 1.0.0-alpha03

2 Aralık 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Yapılandırma değişikliği veya işlem ölümü ve yeniden oluşturma işleminden sonra popBackStack() ve navigateUp() öğelerinin çalışmamasına neden olan sorun düzeltildi. (Icea47, b/173281473)
  • NavHost içindeki iç içe yerleştirilmiş grafiğe gitmek artık düzgün çalışıyor. (I0948d, b/173647694)

Sürüm 1.0.0-alpha02

11 Kasım 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Gezinme oluşturma oluşturma, artık popUpTo kullanımı ve launchsingleTop işlemleri (If96c3, b/171468994) için NavOptions'ı destekliyor
  • Gezinme Oluşturma DSL'sinde iç içe yerleştirilmiş grafikler oluşturmanıza olanak tanıyan bir kimlik yerine rotayı alan gezinme işlevi eklendi. (I1661d)
  • startDestination, NavHost (Ie620e) parametreleri listesinde rotadan önce geliyor.
  • Artık rotayı NavHost composable'ın dışında başlangıç hedefi olarak kullanarak bir grafik oluşturabilirsiniz. (Iceb75)

Sürüm 1.0.0-alpha01

28 Ekim 2020

android.navigation:navigation-compose:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

navigation-compose yapısı, Gezinme Bileşeni ile Jetpack Compose arasında entegrasyon sağlar. Uygulamanızdaki hedefler olarak @Composable işlevlerini kullanır.

Bu ilk sürüm şunları sağlar:

  • Gezinme grafiğinizi bir Kotlin DSL ile oluşturmanıza olanak tanıyan bir NavHost composable.
  • Hedef düzeyinde yaşam döngüsü, ViewModel ve hatırlanan durumun kapsamı.
  • Sistem geri düğmesiyle otomatik entegrasyon.
  • Bağımsız değişkenleri iletme, hedeflere derin bağlantılar ekleme ve önceki hedeflere sonuç döndürme için destek.
  • Kaldırma durumuna ve NavController öğesini NavHost dışındaki composable'lara (alt gezinme çubuğu gibi) bağlamaya izin vermek için rememberNavController() ve currentBackStackEntryAsState() ürünlerinde belirli yardımcılar oluşturun.

Daha fazla bilgi için Oluşturma Gezinme rehberine bakın.

Sürüm 2.3.5

Sürüm 2.3.5

7 Nisan 2021

androidx.navigation:navigation-*:2.3.5 yayınlandı. 2.3.5 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Bir NavDeepLinkRequest veya Uri kullanarak gezinirken artık, harici derin bağlantılarda zaten mevcut olan işlevleri yansıtarak, KEY_DEEP_LINK_INTENT aracılığıyla bağımsız değişkenlerden niyeti alarak sonuçtaki hedefteki Uri, işlem ve mime türüne erişebilirsiniz. (I975c3, b/181521877)

Hata Düzeltmeleri

  • Yaşam Döngüsü Sahibi artık Etkinlik Yaşam Döngüsü STOPPED olduğunda ve sonrasında STARTED (Iff94f, b/182284739) olduğu için OnBackPressedCallbacks, NavBackStackEntry aracılığıyla bir görev dağıtıcıya eklendi.
  • Derin bağlantı alan adı ayrıştırma işlemi artık büyük/küçük harfe duyarlı değildir. Böylece www.example.com, hem www.example.com hem de www.Example.com ile eşleşir. Sorgu parametresi adlarının büyük/küçük harfe duyarlı olduğunu unutmayın. (#144, b/153829033)
  • Bir hedefte null olmayan birden fazla varsayılan bağımsız değişken olduğunda ve söz konusu hedefe giderken bu bağımsız değişkenlerin yalnızca bir alt kümesini geçersiz kıldığınızda meydana gelebilecek NullPointerException düzeltildi. (aosp/1644827)

Bağımlılık Güncellemeleri

  • Gezinme Güvenliği Args Gradle Eklentisi artık Kotlin Gradle Eklentisi 1.4.31'i temel alıyor. (aosp/1661058, b/181156413)

Harici Katkı

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

Sürüm 2.3.4

Sürüm 2.3.4

10 Mart 2021

androidx.navigation:navigation-*:2.3.4 yayınlandı. Sürüm 2.3.4 bu kaydetmeleri içerir.

Yeni Özellikler

  • ReferenceType bağımsız değişkenleri artık derin bağlantı URI'sinin parçası olarak gönderildiğinde düzgün şekilde ayrıştırılabilir. Bu, hem işlenmemiş tam sayı değerini hem de 0x ön ekini taşıyan onaltılık değerleri destekler. (#127, b/179166693)
  • app:argType="float" içeren bir bağımsız değişken için android:defaultValue, artık tam sayı varsayılan değerlerini desteklemektedir. Böylece, 0.0 kullanımını zorunlu tutmak yerine android:defaultValue="0" değerini kullanabilirsiniz. (#117, b/173766247)

Hata Düzeltmeleri

  • Navigasyon’un dinamik özellikler için desteği kullanılırken takılı kalan yükleme ilerleme durumu düzeltildi. (Ib27a7, b/169636207)
  • Önceden ayarlanmış aynı nesneyle setViewModelStore veya setLifecycleOwner çağrısı yapmak artık işlemsiz olacak (Idf491, b/177825470)
  • Safe-Args artık Java'yı kullanırken uygun yöntemlere engelleme ek açıklamaları ekliyor. (I8fbc5, b/179463137)

Harici Katkılar

  • ReferenceType bağımsız değişkenlerinin artık derin bağlantı URI'sinin parçası olarak gönderildiğinde düzgün şekilde ayrıştırılabilmesini sağlamak üzere pull isteği için JvmName teşekkür ederiz. (#127, b/179166693)
  • app:argType=”float” içeren bir bağımsız değişkende defaultValue uygulamasına izin vermek amacıyla pull isteği için teşekkürler tatocaster artık tam sayı varsayılan değerlerini desteklemektedir. (#117, b/173766247)

Sürüm 2.3.3

Sürüm 2.3.3

27 Ocak 2021

androidx.navigation:navigation-*:2.3.3 yayınlandı. Sürüm 2.3.3 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Lifecycle değeri CREATED hedefine taşınmadan önce NavBackStackEntry açılırken artık kilitlenme yok. (Ie3ba3)
  • b/171364502 kaynaklı regresyon düzeltildi. Bu durumda, animasyon kaynağı değeri 0 olan bir etkinliğe gitmenin ResourceNotFoundException nedeni var. (I7aedb, b/176819931)

Sürüm 2.3.2

Sürüm 2.3.2

2 Aralık 2020

androidx.navigation:navigation-*:2.3.2 yayınlandı. Sürüm 2.3.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • NavigationUI işlevinde, onNavDestinationSelected ile <activity> hedefi kullanmanın Etkinliğe gidememesine neden olan regresyon düzeltildi. (I22e34, b/171364502)
  • navigation-dynamic-features-fragment ürününün, yeni yüklenen hedefe birden fazla kez gitmesine neden olan sorun düzeltildi. (aosp/1486056, b/169636207)
  • launchSingleTop kullanılırken varsayılan bağımsız değişkenlerin OnDestinationChangedListener örneklerine gönderilmemesine neden olan sorun düzeltildi. (I2c5cb)
  • İç içe yerleştirilmiş bir gezinme grafiğine gitmenin, arka yığında yeni bir grafik örneği oluşturmaması sorunu düzeltildi. (Ifc831)
  • Gezinme grafiğindeki son hedefi kaldıran bir popUpTo ile navigate() kullanıldığında, gezinme grafiğinin hemen kaldırılmaması ve arka yığından kaldırılmaması sorunu düzeltildi. (I910a3)
  • Gezinme SafeArgs artık KotlinPoet'un 1.7.2 sürümünü kullanıyor. Bu sürüm, Kotlin'in açık API modunu destekliyor. (I918b5)
  • NavHostFragment.findNavController(Fragment) artık Parça hiyerarşisi ve Parça'nın görünüm hiyerarşisinin mevcut denetimlerine ek olarak DialogFragment'ın kök dekorasyonu görünümünü de kontrol ediyor. Bu işlem, FragmentScenario ve Navigation.setViewNavController() ile Navigasyon'u kullanan iletişim kutusu parçalarını test etmenize olanak tanır. (I69e0d)

Sürüm 2.3.1

Sürüm 2.3.1

14 Ekim 2020

androidx.navigation:navigation-*:2.3.1 yayınlandı. Sürüm 2.3.1 bu kaydetmeleri içerir.

Yeni Özellikler

  • Varsayılan Animator kaynakları, Gezinme Kullanıcı Arayüzüne eklendi ve varsayılan animasyon kaynaklarının üzerinde önerilmektedir. (b/167430145)
  • NavOptions artık karma kodunu geçersiz kılar ve eşittir yöntemlerini (b/161586466) geçersiz kılar
  • Gezinme artık "No destination with ID" (Kimlikli hedef yok) InvalidArgumentException içinde bulunan mevcut hedef sayesinde geliştirici hata ayıklama deneyimini iyileştirecek. (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ı sarmaz. (b/168584987)

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

  • navigation-ui artık Çekmece Düzeni 1.1.1'e bağımlı. Bu şekilde NavigationUI, LOCK_MODE_LOCKED_CLOSED veya LOCK_MODE_LOCKED_OPEN kullanılırken bile çekmeceyi açabiliyor. (b/162253907)
  • Güvenli argümanlar artık KotlinPoet 1.6.0'a bağlı (aosp/1435911)
  • Güvenli Bağımsız Değişkenler artık AGP 4.0.1'e (aosp/1442337) bağımlıdır

Sürüm 2.3.0

Sürüm 2.3.0

24 Haziran 2020

androidx.navigation:navigation-*:2.3.0 yayınlandı. 2.3.0 sürümü bu kaydetmeleri içerir.

2.2.0'dan bu yana önemli değişiklikler

  • Özellik Modülü entegrasyonu: navigation-dynamic-features-runtime ve navigation-dynamic-features-fragment yapıları, özellik modüllerinde tanımlanan hedeflere gitmenize olanak tanır ve gerektiğinde özellik modüllerinin yüklenmesini otomatik olarak yönetir. Daha fazla bilgi için Özellik modülleriyle gezinme konusuna bakın.
  • Gezinme Testi: navigation-testing yapısı, mevcut hedefi ayarlamanıza ve gezinme işlemlerinden sonra arka yığını doğrulamanıza olanak tanıyan bir TestNavHostController sağlar. Daha fazla bilgi için Gezinmeyi Test Etme bölümüne bakın.
  • Sonuç Döndürme: Gezinme Geri yığınındaki her bir hedefle ilişkilendirilmiş NavBackStackEntry artık, belirli bir arka yığın girişiyle ilişkilendirilen küçük miktarlarda kaydedilmiş durumu depolamak için uygun bir SavedStateHandle ürününe erişmenize olanak tanıyor. Daha fazla bilgi için Sonuçları önceki Hedefe döndürme konusuna bakın.
  • Openable için NavigationUI desteği: NavigationUI ürününde DrawerLayout ürününün tüm kullanımları CustomView 1.1.0 içinde eklenen ve DrawerLayout 1.1.0 çekmecesinde DrawerLayout tarafından uygulanan daha genel Openable arayüzü ile değiştirildi.
  • Derin bağlantılarda işlem ve MIME türü desteği: Derin bağlantı, daha önce mevcut olan app:uri'nin yanı sıra app:action ve app:mimeType özelliklerini de destekleyecek şekilde genişletildi. NavController, artık yeni NavDeepLinkRequest sınıfı aracılığıyla bu alanların herhangi bir kombinasyonuyla gezinmeyi destekliyor. Daha fazla bilgi için NavDeepLinkRequest kullanarak gezinme konusuna bakın.

Bilinen Sorunlar

  • Derin bağlantı işlemleri ve MIME türleri için henüz Manifest Birleştirme desteği sunulmamaktadır. Söz konusu çalışma tamamlanana kadar, manifestinizdeki <nav-graph> öğesinden oluşturulan <intent-filter> öğeleri, <data> öğesinde veya özel <action> öğesinde mime türünüzü içermeyecektir. Manifest dosyanıza uygun bir <intent-filter> öğesini manuel olarak eklemeniz gerekir.

Sürüm 2.3.0-rc01

10 Haziran 2020

androidx.navigation:navigation-*:2.3.0-rc01 yayınlandı. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bağımsız değişken içermeyen bir hedef örneği, bağlı bağımsız değişkenlerle singleTop olan başka bir örnekle değiştirilirken NullPointerException düzeltildi. (b/158006669)
  • NavController tarafından bildirilen tüm destination is unknown istisnaları artık NavController durumunun belirlenmesine 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 serbest bırakıldı. Sürüm 2.3.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • İşlem sona erdikten sonra NavBackStackEntry öğesinin Lifecycle öğesinin düzgün şekilde güncellenmemesine neden olan sorun düzeltildi. (b/155218371)
  • setGraph() çağrısından önce kaydedilen OnDestinationChangedListener örnek artık işlem iptalinden sonra geri yüklenen hedefe düzgün şekilde gönderiliyor. (b/155218371)
  • singleTop kullanılırken NavBackStackEntry artık doğru şekilde bağımsız olarak güncellenir ve güncellenen bağımsız değişkenler tüm OnDestinationChangeListener örneklerine gönderilir. (b/156545508)

Bağımlılık Güncellemeleri

Sürüm 2.3.0-alpha06

29 Nisan 2020

androidx.navigation:navigation-*:2.3.0-alpha06 yayınlandı. (Sürüm 2.3.0-alpha06 bu kaydetmeleri içerir.)

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • İç içe yerleştirilmiş başlangıç hedefi kullanılırken derin bağlantı Amaçlarının yoksayılmasına neden olan sorun düzeltildi. (b/154532067)

Sürüm 2.3.0-alpha05

15 Nisan 2020

androidx.navigation:navigation-*:2.3.0-alpha05 yayınlandı. 2.3.0-alpha05 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • <include-dynamic> kullanan dinamik grafik şunları içerir için artık app:graphPackage belirtmeniz gerekmez. applicationId bölümüne bir noktadan sonra moduleName son eki eklenerek varsayılan bir değer kullanılır. graphPackage öğenizi özelleştirmeniz gerekiyorsa artık ${applicationId} yer tutucusu destekleniyor. (b/152696768)
  • Gezinme Grafiği Kotlin DSL, artık işlemler için bir defaultArguments Map gösteriyor. Bu, Gezinme XML dosyalarındaki <action> öğelerinde varsayılan değerleri ayarlama yeteneğini yansıtıyor. (b/150345605)

Hata Düzeltmeleri

  • Gezinme 2.2.2'den: Etkinliğinizde birden fazla NavHostFragment örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken IllegalStateException sorunu düzeltildi. (b/147378752)

Bağımlılık güncellemeleri

Sürüm 2.3.0-alpha04

18 Mart 2020

androidx.navigation:navigation-*:2.3.0-alpha04 yayınlandı. 2.3.0-alpha04 sürümü bu kaydetmeleri 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 oluşturucu kalıbını kullanmaz ve doğrudan oluşturulabilir. (aosp/1253671)
  • DynamicActivityNavigator artık oluşturucusunda Activity yerine Context alıyor. (aosp/1250252)

Hata Düzeltmeleri

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

Bağımlılık Güncellemeleri

  • Gezinme Dinamik Özellikler yapıları artık Play Core 1.6.5 sürümünü kullanıyor. (b/149556401)

Sürüm 2.3.0-alpha03

4 Mart 2020

androidx.navigation:navigation-*:2.3.0-alpha03 yayınlandı. 2.3.0-alpha03 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • AppBarConfiguration, somut DrawerLayout sınıfını kullanmak yerine artık CustomView 1.1.0-alpha02'da sunulan Openable arayüzünü kullanır (Bu, DrawerLayout DrawerLayout 1.1.0-alpha04 tarihinden itibaren geçerlidir) ve NavigationUI ile Openable özel uygulamalarını kullanmanıza olanak tanır. (b/129030452)

Hata Düzeltmeleri

  • navigation-common-ktx ProGuard kuralları artık doğru bir şekilde, tüm NavArgs örnekleri yerine kullanılan NavArgs sınıflarını tutuyor. (b/150213558)

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

  • Navigasyon, Core 1.2.0 sürümüne olan bağımlılığını geri aldı. Artık Navigasyon, Core 1.2.0 içindeki yeni API'lere bağımlı olmadığında geliştiricileri daha yeni bir bağımlılığa geçmeye zorlamak için Çekirdek 1.1.0'e ihtiyaç duyar.

Sürüm 2.3.0-alpha02

19 Şubat 2020

androidx.navigation:navigation-*:2.3.0-alpha02 yayınlandı. 2.3.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • NavBackStackEntry artık belirli bir arka yığın girişiyle ilişkilendirilmesi gereken az miktarda kayıtlı durumu depolamak için uygun bir SavedStateHandle'e erişmenize olanak tanıyor. Örnek 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 almayı kolaylaştırmak amacıyla getCurrentBackStackEntry() ve getPreviousBackStackEntry() 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 ve KEY_DEEP_LINK_INTENT değerini önceki hedefe iletir. (b/147456890)

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

  • Navigasyon artık Temel 1.2.0 sürümüne bağımlıdır.

Sürüm 2.3.0-alpha01

5 Şubat 2020

androidx.navigation:navigation-*:2.3.0-alpha01 yayınlandı. 2.3.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni özellikler

  • Yeni navigation-testing yapısı, TestNavHostController sınıfı sağlar. Bu sınıf, Navigasyon'u test ederken gezinme işlemlerinden sonra geçerli hedefi ayarlamanıza ve geri yığını doğrulamanıza olanak tanıyan bir NavController modeli kullanmaya alternatif sunar. (b/140884273)
  • Yeni navigation-dynamic-features-fragment (ve geçişli bağımlılığı, navigation-dynamic-features-runtime), özellik modüllerinden hedefleri veya gezinme grafiklerinin tamamını (<include-dynamic> üzerinden) dahil etmenize olanak tanır. Böylece, bu hedeflere giderken isteğe bağlı özellik modüllerini sorunsuz bir şekilde yükleyebilirsiniz. Daha fazla bilgi için Özellik modülleriyle gezinme konusuna bakın. (b/132170186)

Hata düzeltmeleri

  • Gezinme 2.2.1'den: Sorgu parametresi olmayan derin bağlantılar, artık sorgu parametrelerini sondaki {argument} öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksaymaktadır. (b/147447512)
  • 2.2.1 gezinme menüsünden: DrawerArrowDrawable için navigation-ui ProGuard kuralları, android.enableJetifier=true değerinin gerekli olmamasını sağlayacak şekilde güncellendi. (b/147610424)
  • 2.2.1 gezinme bölümünden: navigation-common-ktx modülü artık navigation-runtime-ktx ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)

Bağımlılık güncellemeleri

Sürüm 2.2.2

Sürüm 2.2.2

15 Nisan 2020

androidx.navigation:navigation-*:2.2.2 serbest bırakıldı. Sürüm 2.2.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Etkinliğinizde birden fazla NavHostFragment örneği olduğunda grafiğinizin başlangıç hedefine derin bağlantı oluştururken ortaya çıkan IllegalStateException düzeltildi. (b/147378752)
  • NavigationUI artık boş etiketleri (ör. android:label=”” içeren bir hedef) yoksaymıyor ve başlığı boş bir dizeye doğru şekilde ayarlıyor. Bu özellik daha önce Gezinme 2.3.0-alpha04 sürümünde kullanıma sunulmuştu. (b/148679860)
  • navigation-common-ktx ProGuard kuralları artık doğru bir şekilde, tüm NavArgs örnekleri yerine kullanılan NavArgs sınıflarını tutuyor. Bu özellik daha önce Gezinme 2.3.0-alpha03 sürümünde kullanıma sunulmuştu. (b/150213558

Bağımlılık güncellemeleri

Sürüm 2.2.1

Sürüm 2.2.1

5 Şubat 2020

androidx.navigation:navigation-*:2.2.1 yayınlandı. Sürüm 2.2.1 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Sorgu parametresi olmayan derin bağlantılar, artık sorgu parametrelerini sondaki {argument} öğelerine eklemek veya derin bağlantıyla eşleşmemek yerine doğru şekilde yoksaymaktadır. (b/147447512)
  • DrawerArrowDrawable için navigation-ui ProGuard kuralları, android.enableJetifier=true gerekliliğinin gerekmediğinden emin olacak şekilde güncellendi. (b/147610424)
  • navigation-common-ktx modülü artık navigation-runtime-ktx ile aynı manifest paket adını paylaşmak yerine benzersiz bir manifest paket adına sahip. (aosp/1141947)

Bağımlılık güncellemeleri

Sürüm 2.2.0

Sürüm 2.2.0

22 Ocak 2020

androidx.navigation:navigation-*:2.2.0 yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.

2.1.0'dan bu yana önemli değişiklikler

  • NavBackStackEntry: Artık NavController.getBackStackEntry()'i çağırarak arka yığında bir hedefin veya gezinme grafiğinin kimliğini iletebilirsiniz. Döndürülen NavBackStackEntry, ilgili hedefi başlatmak için kullanılan bağımsız değişkenlerin yanı sıra, Gezinme odaklı bir LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() tarafından döndürülen bağımsız değişken) ve SavedStateRegistryOwner sağlar.
  • Yaşam Döngüsü ViewModel SavedState Entegrasyonu: SavedStateViewModelFactory, artık NavController.getBackStackEntry() veya NavController.getViewModelStoreOwner() tarafından döndürülen bir ViewModelStoreOwner ile by navGraphViewModels() veya ViewModelProvider oluşturucusu kullanılırken kullanılan varsayılan fabrika oldu.
  • Derin Bağlantılar İçin Sorgu Parametresi Desteği: Sorgu parametrelerine sahip derin bağlantılar, artık yeniden sıralanmış sorgu parametrelerini desteklemektedir. Varsayılan değere sahip veya boş değerli olan bağımsız değişkenler artık derin bağlantıları eşleştirirken isteğe bağlıdır.
  • İyileştirilmiş Animasyon Desteği: NavHostFragment artık Parça 1.2.0'dan FragmentContainerView değerini kullanıyor, animasyon z sıralama sorunlarını ve Parçalara gönderilen pencere iç içe aktarmalarını düzeltiyor.

Sürüm 2.2.0-rc04

18 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc04 yayınlandı. Sürüm 2.2.0-rc04 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • navigation-ui tarafından kullanılan varsayılan karartma animasyonları, Parça 1.2.0-rc04 içindeki ayarlanmış şeffaf kararma animasyonlarıyla eşleşecek şekilde ayarlandı. (b/145769814)

Sürüm 2.2.0-rc03

4 Aralık 2019

androidx.navigation:navigation-*:2.2.0-rc03 yayınlandı. Sürüm 2.2.0-rc03 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Son yol bağımsız değişkenindeki birden fazla karakterin ayrıştırılmasını engelleyen sorgu parametreleri ve yolun son bölümü olarak bir bağımsız değişken kullanılırken derin bağlantı ayrıştırmayla ilgili sorun düzeltildi. (b/144554689)
  • İsteğe bağlı parametrelerin null yerine "@null" almasına yol açan derin bağlantı ayrıştırma sorunu düzeltildi. (b/141613546)
  • NavHostFragment, FragmentContainerView ile kullanıldığında bir yapılandırma değişikliğinden sonra grafiği doğru şekilde geri yüklüyor. (b/143752103)

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

  • Gezinme artık uygun olduğunda Yaşam Döngüsü 2.2.0-rc03, Yaşam Döngüsü ViewModel SavedState 1.0.0-rc03, 1.1.0-rc03 Etkinliği ve 1.2.0-rc03 Parçasına bağımlıdır.

Sürüm 2.2.0-rc02

7 Kasım 2019

androidx.navigation:navigation-*:2.2.0-rc02 yayınlandı. 2.2.0-rc02 sürümü bu kaydetmeleri içerir.

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

  • Navigasyon artık androidx.lifecycle (2.2.0-rc02) sürümüne 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 hiçbir değişiklik yapılmadan yayınlandı. Sürüm 2.2.0-rc01 bu kaydetmeleri içerir.

Sürüm 2.2.0-beta01

9 Ekim 2019

androidx.navigation:navigation-*:2.2.0-beta01 yayınlandı. Sürüm 2.2.0-beta01 bu kaydetmeleri içerir.

Yeni özellikler

  • NavDestination ve alt sınıfları, hata ayıklama sırasında daha faydalı bilgiler sağlamak için artık toString() politikasını geçersiz kılıyor. (b/141264986)

Davranış değişiklikleri

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

Hata düzeltmeleri

  • Sorgu parametreleri de belirtilmişse derin bağlantının yolundaki bağımsız değişkenlerin yoksayılmasına neden olan sorun düzeltildi. (b/141505755)
  • Activity üzerindeki navArgs() Kotlin uzantısı artık ekstra olmadığında daha iyi bir hata mesajı veriyor. (b/141408999)
  • Safe Arg'ler tarafından oluşturulan Directions Java sınıfı artık varsayılan değerleri içeriyor. (b/141099045)
  • Safe Arg'ler tarafından oluşturulan Args Java sınıfı artık varsayılan değerleri içeriyor. (b/140123727)
  • Bir Toolbar kullanılırken NavigationUI, iki üst düzey hedef arasında geçiş yaparken artık metin değişikliğini canlandırmaz. (b/140848160)

Sürüm 2.2.0-alpha03

18 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha03 yayınlandı. 2.2.0-alpha03 sürümü bu kaydetmeleri içerir.

Davranış değişiklikleri

  • setGraph arandıktan sonra setViewModelStore() arandığında artık IllegalStateException ile sonuçlanıyor. Tüm NavBackStackEntry örneklerinin ViewModel örnekleri için tutarlı bir depolamaya sahip olmasını sağlamak amacıyla bu değer, ilk kurulumun bir parçası olarak her zaman NavHost tarafından ayarlanmalıdır. (aosp/1111821)

Hata düzeltmeleri

  • Kapsamında ViewModelStore örnekleri olan birden fazla farklı gezinme grafiğine ekli ViewModel örnekleri kullanılırken ConcurrentModificationException düzeltildi. (aosp/1112257)

Sürüm 2.2.0-alpha02

5 Eylül 2019

androidx.navigation:navigation-*:2.2.0-alpha02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Sorgu parametreleri içeren derin bağlantılar artık yeniden sıralanmış sorgu parametrelerini destekliyor. Varsayılan değere sahip olan veya boş değer atanabilen bağımsız değişkenler artık derin bağlantılarla eşleşirken isteğe bağlı. (b/133273839)
  • Artık NavController.getBackStackEntry() öğesini çağırarak arka yığında bir hedefin veya gezinme grafiğinin kimliğini iletebilirsiniz. Döndürülen NavBackStackEntry, ilgili hedefi başlatmak için kullanılan bağımsız değişkenlerin yanı sıra, Gezinme odaklı bir LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() tarafından döndürülen bağımsız değişken) ve SavedStateRegistryOwner sağlar. (aosp/1101691, aosp/1101710)

Hata düzeltmeleri

  • ViewPager2 öğesine NavHostFragment ekleme işleminin IllegalArgumentException ile başarısız olmasına neden olan sorun düzeltildi. (b/133640271)
  • NavInflater artık getResourceName() numaralı telefonu gereksiz yere aramaktan kaçınarak 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ınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

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

API değişiklikleri

  • 2.1.0-rc01 gezinme bölümünden: 2.1.0-alpha02 ürününde kullanıma sunulan ve NavController itibarıyla desteği sonlandırılmış getViewModelStore() API kaldırıldı. (aosp/1091021)

Hata düzeltmeleri

  • NavHostFragment artık FragmentContainerView kullanarak animasyonun z sıralama sorunlarını ve Parçalara gönderilen pencere içe aktarmalarını düzeltiyor. (b/137310379)

Sürüm 2.1.0

Sürüm 2.1.0

5 Eylül 2019

androidx.navigation:navigation-*:2.1.0 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

2.0.0'dan bu yana önemli değişiklikler

  • ViewModel'leri bir gezinme grafiğinde kapsama: Artık -ktx kitaplıklarını veya NavController ürününe eklenen getViewModelStoreOwner() API'sini kullanarak Kotlin kullanıcıları için by navGraphViewModels() özellik yetkilendirmesini 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 bölümüne bakın.
  • İletişim kutusu hedefleri: Artık onlara navigate koyduğunuzda DialogFragment gösterecek <dialog> hedefler oluşturabilirsiniz. NavHostFragment varsayılan olarak iletişim kutusu hedeflerini destekler. Daha fazla bilgi için DialogFragment'tan hedef oluşturma bölümüne bakın.
  • Uri ile gezinme: Artık bir hedefe eklediğiniz <deepLink> öğeyi kullanan Uri kullanarak navigate yapabilirsiniz. Daha fazla bilgi için Uri kullanarak gezinme konusuna bakın.
  • NavHostController: Özellikle özel bir NavHost oluşturmak için kullanılan API'ler NavHostController hizmetine taşındı. Böylece uygulamalar, NavController API'lerini barındıran LifecycleOwner, OnBackPressedDispatcher ve ViewModelStore barındıran sitelere bağlama olanağına sahip oldu.

Sürüm 2.1.0-rc01

7 Ağustos 2019

androidx.navigation:navigation-*:2.1.0-rc01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

API değişiklikleri

  • NavController tarihinde kullanıma sunulan ve 2.1.0-alpha02 kapsamındaki desteği sonlandırılan getViewModelStore() API kaldırıldı. (aosp/1091021)

Sürüm 2.1.0-beta02

19 Temmuz 2019

androidx.navigation:*:2.1.0-beta02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Hata düzeltmeleri

  • 2.1.0-beta01 yılında kullanıma sunulan kasıtsız jakoko bağımlılığı kaldırıldı. (b/137782950)

Sürüm 2.1.0-beta01

17 Temmuz 2019

androidx.navigation:*:2.1.0-beta01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

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

Hata düzeltmeleri

  • findNavController() ile aynı kapsayıcıya sahip birden çok NavHostFragment kullanılırken zamanlama sorunu düzeltildi. (b/136021571)

Sürüm 2.1.0-alpha06

2 Temmuz 2019

androidx.navigation:*:2.1.0-alpha06 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • NavHostFragment tarafından kullanılan app:navGraph özelliği artık navigation-runtime yapısına taşındı. XML aracılığıyla eklenebilen özel gezginler, Gezinme Editörü'nün Ana Makine paneli ile entegrasyon sağlamak için bu özelliği kullanmalıdır. (b/133880955)

API değişiklikleri

  • NavController işletim sisteminde getViewModelStore() API desteği sonlandırılarak yerine ViewModelStoreOwner döndüren yeni getViewModelStoreOwner() yöntemi kullanılmaya başlandı. (aosp/987010)
  • <dialog> hedefleri gibi kayan pencere hedeflerinin uygulanması, artık tüm <dialog> hedeflerinin uyguladığı bir işaretçi arayüzü (FloatingWindow) şeklinde genelleştirildi. Üst uygulama çubuğuyla etkileşim için NavigationUI yöntemleri artık FloatingWindow hedeflerini yoksayıyor. (b/133600763)

Davranış değişiklikleri

  • Navigasyon artık durumunu, bir <dialog> hedefi kullanılırken ekranda görünen durumla senkronize bir şekilde tutar. Sonuç olarak, <fragment> hedefi gibi iletişim kutusu olmayan ve etkinlik dışı bir hedefe gittiğinizde Navigasyon artık <dialog> hedeflerini otomatik olarak gösteriyor. (b/134089818)

Hata düzeltmeleri

  • Gezinme artık derin bağlantı işlenirken etkinlik yeniden oluşturulurken meydana gelen animasyonu engelleyerek görsel bir flash'ı düzeltiyor. (b/130362979)
  • İlk parça eklenirken bir Parça patlatılırken Gezinme arka yığınının senkronize olmamasına neden olan hata düzeltildi. (b/133832218)

Sürüm 2.1.0-alpha05

5 Haziran 2019

androidx.navigation:*:2.1.0-alpha05 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

API değişiklikleri

  • NavController alan adındaki ana makineyle ilgili API'ler yeniden adlandırıldı ve NavController adlı yeni bir alt sınıfa taşındı: NavHostController. (aosp/966091)
  • NavController setHostOnBackPressedDispatcherOwner() yöntemi, NavHostController ile ilişkili setOnBackPressedDispatcher() yöntemiyle değiştirildi ve artık çağrı yapmadan önce setLifecycleOwner() yöntemini çağırmanızı gerektiriyor. (aosp/965409)
  • NavHostController artık daha önce setHostOnBackPressedDispatcherOwner() tarafından döndürülen NavHostOnBackPressedManager sınıfının yerini alan bir enableOnBackPressed(boolean) yöntemi içeriyor. (aosp/966091)

Hata düzeltmeleri

  • URI ile gittikten sonra arka yığının doğru olmamasına neden olan sorun düzeltildi. (b/132509387)
  • NavController tarafından otomatik olarak işlenen derin bağlantılar artık yalnızca bir kez tetikleniyor. (b/132754763)

Sürüm 2.1.0-alpha04

16 Mayıs 2019

androidx.navigation:*:2.1.0-alpha04 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Hata düzeltmeleri

  • NavHostFragment, sistemin Geri düğmesi etkinliklerine müdahale ederken app:defaultNavHost politikasını doğru bir şekilde gözeterek Gezinme 2.1.0-alpha03'deki regresyonu düzeltir. b/132077777
  • DialogFragmentNavigator artık popBackStack() ve navigateUp() işlemlerini doğru şekilde işliyor. b/132576764
  • İç içe yerleştirilmiş grafikler arasında sürekli olarak gezinmeye neden olan IllegalStateException: unknown destination during restore sorunu düzeltildi. b/131733658

Sürüm 2.1.0-alpha03

7 Mayıs 2019

androidx.navigation:*:2.1.0-alpha03 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Bilinen Sorunlar

  • NavHostFragment, app:defaultNavHost="false" b/132077777 kullanılmasına rağmen sistemin Geri düğmesine müdahale etmeye devam ediyor

Yeni özellikler

  • Artık <dialog> tane hedef oluşturabilirsiniz. Bu hedefler için navigate işlemini gerçekleştirdiğinizde DialogFragment gösterilir. NavHostFragment, varsayılan olarak iletişim kutusu hedeflerini destekler. b/80267254
  • navigate öğesini bir kaynak kimliği veya NavDirections örneğiyle çağırmanın yanı sıra artık doğru hedefe gitmek için bir hedefe eklediğiniz <deepLink> öğesini kullanan bir Uri aracılığıyla 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 yükseltildi. b/130055522

API değişiklikleri

  • NavHostFragment için createFragmentNavigator() yöntemi kullanımdan kaldırıldı ve işlevi, NavHostFragment alt sınıfı oluştururken özel gezginler ekleme konusunda doğru giriş noktası olduğunu netleştirmek için yeni onCreateNavController() yöntemine taşındı. b/122802849
  • Belirli bir Uri öğesinin, ilgili hedef veya NavGraph kullanılması durumunda gezinme grafiğindeki herhangi bir hedef tarafından işlenip işlenemeyeceğini kontrol etmenizi sağlamak için NavDestination uygulamasına hasDeepLink() yöntemi eklendi. b/117437718

Hata düzeltmeleri

  • Varsayılan bağımsız değişkenler artık OnDestinationChangedListener örneklerine doğru şekilde iletiliyor. b/130630686
  • NavHostFragment artık OnBackPressedDispatcher kullanarak sistemdeki Geri etkinliklere müdahale ediyor. Bu sayede, bir Parçaya döndüğünde Parça yaşam döngüsü yöntemlerinde koşullu gezinme yaparken oluşan bir sorun düzeltiliyor. b/111598096
  • Güvenli Bağımsız Değişkenler için, belirtilmemiş app:argType içeren bir android:defaultValue=”@null”, artık string bağımsız değişkeni olarak doğru şekilde tahmin ediliyor. b/129629192

Sürüm 2.1.0-alpha02

3 Nisan 2019

androidx.navigation:*:2.1.0-alpha02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni özellikler

  • Artık Kotlin kullanıcıları için by navGraphViewModels() mülk yetkisi ile veya NavController ürününe eklenen getViewModelStore() API'yi kullanarak gezinme grafiği düzeyinde kapsama sahip ViewModel'ler oluşturabilirsiniz. b/111614463

API değişiklikleri

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

Hata düzeltmeleri

  • <activity> hedefleri için android:name artık enflasyon zamanında bir Sınıf olarak ayrıştırılmıyor. Bu durum, dinamik özellikler kullanılırken ClassNotFoundExceptions durumlarını engelliyor. b/124538597

Sürüm 2.1.0-alpha01

19 Mart 2019

Bu, 2.1.0 gezinmesinin ilk alfa sürümüdür.

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

  • Gezinme artık androidx.core:core:1.0.1 ve androidx.fragment:fragment:1.1.0-alpha05 uygulamasına bağlı. Bu sürüm, androidx.legacy:legacy-support-core-utils:1.0.0 bağımlılığını da ortadan kaldırır. b/128632612

API Değişiklikleri

  • Kaynak kimliği ve Paket ile tıklama işleyici oluşturmaya alternatif olarak yeni bir Navigation.createNavigateOnClickListener(NavDirections) yöntemi eklenmiştir.b/127631752
  • FragmentNavigator.instantiateFragment desteği sonlandırıldı. Varsayılan uygulama, Parçaları örneklendirmek için artık FragmentFactory kullanıyor. b/119054429

Hata Düzeltmeleri

  • Gezinme, bir hedefe ekli bağımsız değişkenler olduğunda artık null Bundle göndermez ve android:defaultValue="@null" kullanılırken bir sorun düzeltilir. b/128531879
  • Güvenli argümanlar artık KotlinPoet 1.1.0'a bağlı olarak çok uzun paket adlarıyla ilgili bir sorunu düzeltmektedir. b/123654948

Sürüm 2.0.0

Sürüm 2.0.0

14 Mart 2019

2.0.0-rc02 tarihinden itibaren değişiklik yapılmadan 2.0.0 gezinmesi yayınlandı.

Sürüm 2.0.0-rc02

6 Mart 2019

Gezinme 2.0.0-rc02, androidx.navigation grup kimliğiyle yeni yapılar sağlar ve bağımlılıklarını AndroidX eşdeğerleriyle değiştirir.

2.0.0-rc02'nin davranışı, Gezinme 1.0.0-rc02 davranışıyla aynıdır ve bağımlılıklarınızı yeni bağımlılıklarla eşleşecek şekilde güncellemenin yanı sıra, kodunuzda 1.0.0-rc02 sürümünden güncelleme yapmak için herhangi bir değişiklik gerekmez.

Navigasyon'un 2.X sürümlerini kullanmak için projenizin AndroidX'e taşınmış olması gerekir. Gezinme 1.0 kararlı sürümü, Destek Kitaplığı bağımlılıklarını kullanan son sürüm olacak. 1.0'dan sonraki tüm geliştirmeler AndroidX'i temel alacak ve 2.0 kararlı sürümünü temel alacaktır.

AndroidX Öncesi Bağımlılıkları

Navigasyon'un AndroidX öncesi sürümleri için şu bağımlılıkları dahil edin:

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

Güvenli bağımsız değişkenler için üst düzey build.gradle dosyanıza aşağıdaki classpath'i ekleyin

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

Sürüm 1.0.0

Sürüm 1.0.0

14 Mart 2019

1.0.0-rc02 tarihinden itibaren değişiklik yapılmadan 1.0.0 gezinmesi yayınlandı.

Sürüm 1.0.0-rc02

26 Şubat 2019

Bu, Navigasyon'un 1.0.0 kararlı sürümü için ikinci sürüm adayıdır. Bu sürüm çeşitli hata düzeltmelerini içerir.

Hata Düzeltmeleri

  • Kök grafiğin b/126251695 kimliği yoksa popBackStack() öğesinin yok sayılmasına neden olan sorun düzeltildi
  • navigateUp() artık FLAG_ACTIVITY_NEW_TASK olmadan bir derin bağlantı işlendikten sonra çağrıldığında uygulamanızın görevine geri gitmeyi doğru şekilde işliyor b/126082008
  • ActivityNavigator.applyPopAnimationsToPendingTransition öğesinin doğru pop çıkış animasyonunun uygulanmamasıyla ilgili sorun düzeltildi b/126237567
  • Güvenli Bağımsız Değişkenler tarafından oluşturulan Kotlin kodu, R sınıfıyla ilişkili paket adında in ve fun gibi Kotlin anahtar kelimelerinin çıkışını artık düzgün şekilde yapıyor. b/126020455

Sürüm 1.0.0-rc01

21 Şubat 2019

Bu, Navigation'ın 1.0.0 kararlı sürümü için bir sürüm adayıdır. Bu sürüm bir hata düzeltmesi içeriyor.

Hata Düzeltmeleri

  • Parçalar ve singleTop gezinme işlemleri kullanılırken karşılaşılan bir sorun düzeltildi b/124294805

Sürüm 1.0.0-beta02

12 Şubat 2019

Bu sürüm, birçok küçük geliştirme ve önemli hata düzeltmesi içerir.

Yeni Özellikler

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

Davranış değişiklikleri

  • Tam derin bağlantı eşlemeleri artık .* içeren derin bağlantılara veya bağımsız değişken eşlemelerine göre önceliklendiriliyor. b/123969518

Hata Düzeltmeleri

  • popBackStack() ve navigateUp, arka yığındaki son hedef açılırken 1.0.0-beta01 ürününde ortaya çıkan regresyonu düzelterek artık false doğru şekilde döndürülüyor. b/123933201
  • Gezinme artık kaydedilmiş örnek durumunun geri yüklenmesi sırasında ClassLoader öğesini doğru şekilde ayarlıyor. Böylece, kayıtlı durumda Navigator durumundaki özel sınıfları veya bir NavDestination öğesine gönderilen bağımsız değişkenlerde sorun yaşanmayacaktır. b/123893858
  • Kayıtlı örnek durumundan bir Parcelable[] bağımsız değişkeni geri yüklenirken, Güvenli args tarafından oluşturulan NavArgs sınıfları artık çökmüyor. b/123963545
  • Güvenli Bağımsız Değişkenler artık gereksiz oluşturulan Kotlin sınıflarını düzgün şekilde temizliyor. b/124120883

Sürüm 1.0.0-beta01

4 Şubat 2019

Bu, Navigasyon'un ilk beta sürümüdür. Bundan sonra, kritik bir sorun olmadığı sürece Navigation API'nin bir sonraki sürüme kadar kararlı kalması beklenmektedir. Bu sürüm, bazı hata düzeltmeleri ve davranış değişiklikleri içerir.

Davranış değişiklikleri

  • Gezinme artık bağımsız değişken varsayılan değerlerinin çalışma zamanında ve Güvenli Bağımsız Değişkenler aracılığıyla aynı şekilde ele alınmasını sağlıyor. Sonuç olarak, yalnızca app:argType="reference" içeren bağımsız değişkenlerin varsayılan değer noktası başka bir kaynağa (örneğin, @color/colorPrimary) sahip olabilir. Farklı bir app:argType ile bir varsayılan referans değeri kullanılmaya çalışılması, gezinme XML'i ayrıştırılırken bir istisnayla sonuçlanır. b/123551990
  • Güvenli argümanlar artık Android Gradle Plugin 3.3.0'a bağlı aosp/888413
  • Güvenli argümanlar artık Kotlin 1.3.20'ye bağlı aosp/888414

Hata Düzeltmeleri

  • Güvenli Bağımsız Değişkenler artık Android Gradle Eklentisi'nin tüm sürümlerindeki kitaplık ve özellik modüllerinde kullanılabilir. b/121304903
  • Tek bir popBackStack() işleminin tek bir hedef yerine, bir hedefin tüm kopyalarını arka yığının üst kısmından çıkarmasına neden olan regresyon düzeltildi. b/123552990
  • FragmentNavigator durumunun, NavController durumuyla senkronize olmaması ve arka yığını geri yüklemeye çalışırken IllegalStateException hatasına neden olması sorunu düzeltildi.b/123803044
  • ProGuard kod karartma ile kullanıldığında NavigationUI işlenen geri okunun görünmemesine neden olan sorun düzeltildi. b/123449431
  • Güvenli Bağımsız Değişkenler tarafından oluşturulan kod artık .OuterClass$InnerClass biçimindeki statik iç sınıfa işaret eden bir app:argType kullanarak düzgün şekilde işliyor. b/123736741
  • Güvenli Bağımsız Değişkenler tarafından oluşturulan Java kodu artık global işlemleri ve derinlemesine iç içe yerleştirilmiş hedefleri düzgün şekilde işliyor. b/123347762

Sürüm 1.0.0-alpha11

23 Ocak 2019

Bu, Güvenli Bağımsız değişkenler ile ilgili bir sorunu düzelten bir 1.0.0-alpha10 düzeltme sürümüdür.

Hata Düzeltmeleri

  • Güvenli Bağımsız Değişkenlerin genel işlemlerle ilişkili Yol Tarifi sınıfını içe aktaramaması sorunu düzeltildi. b/123307342

Sürüm 1.0.0-alpha10

23 Ocak 2019

Bilinen Sorunlar

  • Güvenli Bağımsız Değişkenler, genel işlemlerle ilişkili Yol Tarifi sınıfını içe aktaramıyor. b/123307342

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

Yeni Özellikler

  • Kotlin kullanıcıları artık Activity veya Fragment içinde oluşturulan NavArgs sınıfına ilişkin Güvenli argümanlara ilişkin referansları geç bir şekilde almak için by navArgs() özelliği temsilcisini kullanabilir. b/122603367
  • Safe Args'ler artık androidx.navigation.safeargs.kotlin eklentisini uygulayarak Kotlin kodu oluşturmanıza olanak tanıyor. Kotlin kodu, yalnızca Kotlin modülleri için özel olarak oluşturulmuştur. Bu kod, eski androidx.navigation.safeargs eklentisiyle hâlâ kullanılabilen oluşturucu kalıbı üzerinden varsayılan bağımsız değişkenler ve sabit sınıflar kullanılarak oluşturulmuştur. 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şkenlere sahip derin bağlantıya ağırlık veriyor. b/118393029
  • NavController cihazında setGraph() çağrısı yapıldığında arkadaki yığın sıfırlanacak. b/111450672
  • Bilinmeyen derin bağlantılar artık IllegalStateException tetiklemez ancak yok sayılır. İç içe yerleştirilmiş veya birden çok NavHostFragment ile ilgili sorunlar düzeltilir. b/121340440

Çarpıcı Değişiklikler

  • Pop animasyonlarını bir etkinliğe uygulamak için kullanılan NavOptions.applyPopAnimationsToPendingTransition() yöntemi ActivityNavigator klasörüne 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 özdeş sınıfların kopyalanmasını önler. Oluşturulan NavDirections sınıflarındaki bağımsız değişken olmayan yöntemlerin dönüş türü artık NavDirections olur. b/123233147
  • Güvenli Arg'ler tarafından oluşturulan Yol Tarifi sınıflarının artık herkese açık oluşturucusu yoktur. Yalnızca oluşturulan statik yöntemlerle etkileşimde bulunmanız gerekir. b/123031660
  • Oluşturulan NavDirections sınıfların artık herkese açık oluşturucusu yoktur. Yalnızca oluşturulan Yol Tarifi sınıflarındaki statik yöntemlerle oluşturulmalıdırlar.b/122963206
  • NavDirections' getArguments() adlı kullanıcıdan döndürülen Bundle artık @Nullable yerine @NonNull olarak işaretlendi. b/123243957

Hata Düzeltmeleri

  • NavDeepLinkBuilder artık benzersizliği belirlemek için, aktardığınız bağımsız değişkenleri kullanarak aynı hedefe yönelik birden fazla eş zamanlı PendingIntent öğesini doğru şekilde işliyor. b/120042732
  • NavController artık iç içe yerleştirilmiş NavHostFragment veya arka yığına sahip diğer alt Parçalar kullanılırken popBackStack() işlemlerini doğru şekilde işliyor.b/122770335
  • NavigationUI artık Yukarı düğmesinin içerik açıklamasını doğru şekilde ayarlıyor. b/120395362
  • Güvenli Bağımsız değişkenler tarafından oluşturulan Yol Tarifi sınıfları, artık bir hedefteki işlemle aynı kimliğe sahip genel işlemleri doğru şekilde işliyor. b/122962504
  • Güvenli Bağımsız Değişkenler, equals() doğru değerini döndürdüğünde artık doğru şekilde hashCode() değerine sahip olan NavDirections sınıfa sahip. b/123043662
  • NavHostFragment öğesinin FragmentManager öğesinde özel FragmentTransactions yapmayı denerseniz FragmentNavigator artık daha iyi bir hata mesajı veriyor. Her zaman getChildFragmentManager() kullanmalısınız. b/112927148

Sürüm 1.0.0-alpha09

18 Aralık 2018

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

android.arch.navigation:navigation-testing yapısının geliştirmeye devam etmemeyi tercih ettik. NavController dahili testinde faydalı olduğu kanıtlanmış olsa da, doğru navigate() çağrılarının yapıldığını doğrulamak için NavController örneğiyle alay etmek 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 testlerle ilgili ek dokümanlar üzerinde çalışacağız.

Yeni Özellikler

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

Çarpıcı Değişiklikler

  • argType="reference" içeren bir <argument> kullanılırken, Gezinme artık referansı ayrıştırmaz, ham kaynak kimliğini sağlar.b/111736515
  • onNavDestinationSelected() artık varsayılan olarak gezinme grafiğinizin başlangıç konumuna geri dönüyor. Bu sayede setup yöntemleriyle tutarlı hale geliyorlar. Arka yığının açılmaması için MenuItem öğenize menuCategory="secondary" ekleyin. aosp/852869
  • Oluşturulan Args sınıflarının fromBundle() yöntemleri artık boş değer atanabilen bir Bundle yerine null olmayan bir Bundle aosp/845616 alıyor.

Hata Düzeltmeleri

  • Bağımsız değişkenler artık derin bağlantılardan her zaman dize yerine doğru argType olarak ayrıştırılıyor. b/110273284
  • Gezinme artık herkese açık kaynaklarını doğru şekilde dışa aktarıyor b/121059552
  • Safe Args artık Android Gradle Plugin 3.4 Canary 4 ve sonraki sürümlerle uyumlu. b/119662045

Sürüm 1.0.0-alpha08

6 Aralık 2018

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

Yeni Özellikler

  • NavigationUI yöntemleriyle kullanıldığında hedef etiketler, artık android:label etiketinizdeki {argName} örneği doğru b/80267266 bağımsız değişkeniyle otomatik olarak değiştirecek
  • Gezinme artık Destek Kitaplığı 28.0.0'a dayalı b/120293333

Çarpıcı Değişiklikler

  • OnNavigatedListener, OnDestinationChangedListener olarak yeniden adlandırıldı b/118670572
  • OnDestinationChangedListener artık Bundle bağımsız değişkeni de iletiyor aosp/837142
  • app:clearTask ve app:launchDocument özellikleri ve bunlarla ilişkili yöntemler kaldırıldı. Arka yığınınızdaki tüm hedefleri kaldırmak için grafiğinizin kökünde app:popUpTo kullanın. b/119628354
  • ActivityNavigator.Extras artık Builder kalıbı kullanıyor ve tüm Intent.FLAG_ACTIVITY_ işaretlerini aosp/828140 ayarlama özelliğini ekliyor
  • NavController.onHandleDeepLink, handleDeepLink aosp/836063 olarak yeniden adlandırıldı
  • Alt sınıflandırmaya yönelik olmayan NavOptions, NavInflater, NavDeepLinkBuilder ve AppBarConfiguration gibi birçok sınıf ve yöntem geliştirilmiştir final aosp/835681
  • Desteği sonlandırılan NavHostFragment.setGraph() yöntemi kaldırıldı aosp/835684
  • Kullanımdan kaldırılan NavigationUI.navigateUp(DrawerLayout, NavController) yöntemi kaldırıldı. aosp/835684
  • Parça oluşturma işlemi FragmentNavigator bölümüne taşındı. Bu sayede, bir FragmentFactory öğesine Parça oluşturma yetkisi vermek artık daha kolay. b/119054429
  • NavGraphNavigator oluşturucusu artık Context aosp/835340 almıyor
  • NavigatorProvider bir arayüz değil, bir sınıf oldu. getNavigatorProvider() tarafından döndürülen NavigatorProvider, işlevselliğini değiştirmedi. aosp/830660
  • NavDestination.navigate() kaldırıldı. Bunun yerine Navigator numaralı telefondan navigate() adlı kuruluşu arayın. aosp/830663
  • Navigator için önemli ölçüde yeniden düzenleme, OnNavigatorNavigatedListener ihtiyacını ortadan kaldırma ve bunun yerine navigate ürününün gidilen NavDestination öğesini döndürmesi.
  • Navigator örnekleri artık pop etkinliklerini NavController öğesine gönderemiyor. Geri düğmesine basmaları durdurmak ve navController.popBackStack() işlevini çağırmak için OnBackPressedCallback kullanabilirsiniz. aosp/833716

Hata Düzeltmeleri

  • Hedef, <navigation> öğesi b/116831650 olduğunda popUpTo artık tutarlı şekilde çalışıyor
  • İç içe yerleştirilmiş grafikler kullanılırken IllegalArgumentException hatasına neden olan çeşitli hatalar düzeltildi b/118713731 b/113611083 b/113346925 b/113305559
  • <activity> hedeflerinin dataPattern özelliği artık toString() b/120161365 çağrısı yaparak Dize olmayan bağımsız değişkenlerden bağımsız değişkenleri dolduracak.

Güvenli Bağımsız Değişkenler

  • Güvenli Bağımsız Değişkenler, Enum değerleri dahil olmak üzere Serileştirilebilir nesneleri destekler. Enum türleri, sınıf adı olmadan numaralandırma sabit değerini kullanarak varsayılan bir değer ayarlayabilir (ör. app:defaultValue="READ") b/111316353
  • Güvenli Bağımsız Değişkenler, desteklenen tüm türlerdeki dizileri destekler b/111487504
  • Güvenli Bağımsız Değişkenler artık kaynak dizinlerinin alt klasörlerini yoksayıyor b/117893516
  • Safe Args, uygun olan durumlarda @Override ek açıklamaları ekler b/117145301

Sürüm 1.0.0-alpha07

29 Ekim 2018

Yeni Özellikler

  • Yeni bir AppBarConfiguration sınıfı, üst düzey hedef olarak kabul edilecek hedefleri özelleştirmenize olanak tanır. Ayrıntılar için güncellenen belgelere göz atın. b/117333663
  • Artık bağımsız değişkenleri grafiğinizin başlangıç hedefine aktarabilirsiniz b/110300470
  • Derin bağlantılar artık nokta, kısa çizgi ve artı işareti içeren özel şemaları destekliyor. b/112806402

Çarpıcı Değişiklikler

  • navigation-testing-ktx modülü, navigation-testing artifact içine katlandı ve artık yayınlanmayacak.
  • navigation-testing yapısı artık Kotlin standart kitaplığına bağımlıdır. API, Kotlin kurallarına daha uygun olacak şekilde değiştirilmiştir. Ancak Java'da yazılan testlerde bu API'yi kullanmaya devam edebilirsiniz.
  • Meta veri manifestinde kayıtlı gezinme grafikleri artık desteklenmiyor. b/118355937
  • İşlemler artık <activity> hedeflerine eklenemez. aosp/785539

Hata Düzeltmeleri

  • Derin bağlantılar artık sorgu parametrelerini doğru şekilde ayrıştırıyor. b/110057514
  • Etkinlik hedefleri artık tüm giriş ve çıkış animasyonlarını doğru şekilde uyguluyor. b/117145284
  • Özel Gezginler kullanılırken yapılandırma değişikliklerinden sonra ortaya çıkan kilitlenme düzeltildi. b/110763345

Güvenli Bağımsız Değişkenler

  • Güvenli bağımsız değişkenlerin artık Android Gradle Plugin 3.2.1'e sabit bir bağımlılığı var. b/113167627
  • Artık iç sınıflar için yol tarifi oluşturulabilir. b/117407555
  • <include> grafiği için Yol Tarifi oluşturmayla ilgili sorun düzeltildi. b/116542123

Sürüm 1.0.0-alpha06

20 Eylül 2018

Yeni Özellikler

API Değişiklikleri

  • Çarpıcı Değişiklik: Navigator navigate() yöntemi artık Navigator.Extras parametresini almaktadır.
  • NavController'ın getGraph() yöntemi artık NonNull b/112243286 oldu

Hata Düzeltmeleri

  • NavigationUI.setupWithNavController(), ayrı hedeflerden gelen görüntülemelerle kullanılırsa b/111961977 görüntüleme sayısını artık sızdırmıyor
  • onSaveState() adlı gezgin artık yalnızca bir kez çağrılıyor b/112627079

Güvenli Bağımsız Değişkenler

  • Navigasyon hedefi Yol tarifi sınıfları artık, varsa velilerinin Yol Tarifi sınıfını genişletiyor b/79871405
  • Yol Tarifi ve Bağımsız değişkenler sınıflarında artık kullanışlı bir toString() uygulaması bulunuyor 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 hatayı düzeltin. b/111907708
  • Oluşturulan Bağımsız Değişkenlerin equals() sınıfındaki bir hatayı düzeltin. b/111450897
  • Güvenli Bağımsız Değişkenler'de derleme hatasını düzeltme. b/109409713
  • Kaynak tanımlayıcılardan Java adlarına dönüşümü düzeltme b/111602491
  • Güvenli Bağımsız Değişkenler eklentisinde boş değer atanması ile ilgili hata mesajlarını düzeltin.
  • Eksik null değer ek açıklamalarını ekleyin.

Sürüm 1.0.0-alpha04

19 Temmuz 2018

1.0.0-alpha04 gezinmesi ve ilişkili Güvenli Bağımsız değişkenler gradle eklentisi bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.

API / Davranış Değişiklikleri

  • NavHostFragment, mevcut Fragment'ı her zaman birincil gezinme parçası olarak ayarlar ve alt parça yöneticilerinin, dış NavController'ın popülaritesi başlatılmadan (b/111345778) önce yerleştirilmesini sağlar.

Güvenli Bağımsız Değişkenler

  • Zarar Veren Değişiklik: app:type, ConstraintLayout 2.0.0-alpha1 b/111110548 gibi diğer kitaplıklarla çakışma olmaması için app:argType olarak değiştirildi
  • Güvenli Bağımsız değişkenlerdeki hata mesajları artık tıklanabilir b/111534438
  • Bağımsız değişkenler sınıfları artık NonNull özelliklerinin aslında null (b/111451769) olmadığını doğruluyor
  • NavDirections ve Bağımsız değişkenler tarafından oluşturulan b/111455455 b/111455456 sınıflarına ek NonNull ek açıklamaları eklendi

Hata Düzeltmeleri

  • Parça hedefine b/111515685 derin bağlantı oluşturulduktan sonra sistem geri düğmesiyle ilgili sorun düzeltildi

Sürüm 1.0.0-alpha03

12 Temmuz 2018

1.0.0-alpha03 gezinmesi ve ilişkili Güvenli Bağımsız değişkenler gradle eklentisi bir dizi API değişikliği, davranış değişikliği ve hata düzeltmesi içerir.

API / Davranış Değişiklikleri

  • Araç Çubuğu için bir NavigationUI.setupWithNavController yöntemi eklendi b/109868820
  • CollapsingToolbarLayout için NavigationUI.setupWithNavController yöntemi eklendi b/110887183
  • popBackStack() artık arka yığın boş olduğunda veya belirtilen hedef kimliği arka yığınında olmadığında false (b/110893637) döndürüyor
  • FragmentNavigator, FragmentManager durumu kaydettikten sonra gezinme işlemlerini yoksayar ve b/110987825 ile "onSaveInstanceState sonrası bu işlem gerçekleştirilemez" istisnalarından kaçınır

Güvenli Bağımsız Değişkenler

  • Kırılma Değişikliği: İlgili NavDirections yöntem adlarında alfasayısal olmayan karakterler ve bağımsız değişken adları, büyük/küçük harf kullanımıyla değiştirilir
    • Ör. DemoController.index, setDemoControllerIndex b/79995048 olacak
    • Ör. action_show_settings, actionShowSettings b/79642240 olacak
  • Zarar Veren Değişiklik: Bağımsız değişkenler artık varsayılan olarak boş olmayan kabul edilir. Dize ve ayrıştırılabilir bağımsız değişkenlerde null değerlere izin vermek için app:nullable="true" b/79642307 ifadesini ekleyin.
  • Artık app:type="long" öğesini "123L" b/79563966 biçiminde defaultValues ile kullanabilirsiniz
  • Ayrıştırılabilir bağımsız değişkenler artık app:type için tam nitelikli sınıf adı kullanılarak desteklenmektedir. Desteklenen tek varsayılan değer "@null" b/79563966 şeklindedir
  • Bağımsız değişkenler sınıfları artık equals() ve hashCode() b/79642246 uygulamalarını uyguluyor
  • Safe Args eklentisi artık kitaplık projelerine (b/80036553) uygulanabilir
  • Safe Args eklentisi, artık b/110011752 özellik projelerine uygulanabilir

Hata Düzeltmeleri

  • Parça yaşam döngüsü yöntemlerinde gezinirken yaşanan sorunlar b/109916080
  • İç içe yerleştirilmiş grafiklerde birden çok kez gezinirken karşılaşılan sorunlar b/110178671
  • b/109909461 grafiğindeki ilk hedefle setPopUpTo kullanıldığında karşılaşılan sorunlar düzeltildi
  • Tüm app:defaultValue değerlerinin Dize b/110710788 olarak iletilmesine neden olan sorun düzeltildi
  • Android Gradle Eklentisi 3.2 Beta 01 ile paket halinde sunulan aapt2 artık Gezinme XML dosyalarındaki her android:name özelliği için saklama kuralları ekliyor b/79874119
  • Varsayılan FragmentNavigator b/110900142 değiştirilirken bellek sızıntısı düzeltildi

Sürüm 1.0.0-alpha02

7 Haziran 2018

Davranış Değişiklikleri

  • FragmentNavigator artık setReorderingAllowed(true) kullanıyor. b/109826220

  • Gezinme artık derin bağlantı URL'lerinden ayrıştırılan URLDecode bağımsız değişkenlerinin kodunu çözer. b/79982454

Hata Düzeltmeleri

  • Parça yaşam döngüsü yöntemlerinden gezinme çağrısında bulunurken karşılaşılan IllegalStateException düzeltildi. b/79632233

  • Animasyonlar kullanılırken titreme sorununu düzeltmek için artık Destek Kitaplığı 27.1.1'i kullanmanız gerekir. b/80160903

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

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

  • İç içe yerleştirilmiş grafiğe geri dönerken yaşanan IllegalArgumentException sorunu düzeltildi. b/80453447

  • launchSingleTop kullanılırken çakışan Parçalarla ilgili bir sorun düzeltildi. b/79407969

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

  • NavigationUI, iç içe yerleştirilmiş grafiği MenuItem olarak kullanırken artık doğru öğeyi vurgular. b/109675998

API Değişiklikleri

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

  • NavOptions ürününde işlemler için launchDocument özelliği ve ilişkili API kullanımdan kaldırıldı. b/109806636

Sürüm 1.0.0-alpha01

8 Mayıs 2018

Gezinme, uygulama içi gezinme oluşturmak için bir çerçeve sağlar. Bu ilk sürüm 1.0.0-alpha01.