Parça

Uygulamanızı bir Etkinlik içinde barındırılan birden fazla bağımsız ekrana ayırın.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
13 Ağustos 2025 1.8.9 - - -

Bağımlılıkları bildirme

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

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Eski

dependencies {
    def fragment_version = "1.8.9"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.8.9"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.8

Sürüm 1.8.9

13 Ağustos 2025

androidx.fragment:fragment-*:1.8.9 iptal edilir. 1.8.9 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Bir gizleme işlemini tetikleyen tahmin edilen geri gitme hareketinin iptal edilmesinin, animatörler kullanılırken sonraki hareketin doğru şekilde animasyon oluşturmamasına neden olması sorunu düzeltildi. (I0a400, b/384765586)
  • setMaxLifecycle ve popBackStack kombinasyonunun, üst parçayı RESUMED durumuna taşımayı başaramadığı hata düzeltildi. (I3448b, b/406127576)

Sürüm 1.8.8

4 Haziran 2025

androidx.fragment:fragment-*:1.8.8 iptal edilir. 1.8.8 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • setMaxLifecycle(Lifecycle.State.INITIALIZED) ile eklenen parçaların durumu kaydedilmeye çalışılırken FragmentManager'nın çökmesine neden olan sorun düzeltildi. Bu parçalar onCreate() işleminden hiç geçmediğinden artık kaydedilmiş bir duruma veya onSaveInstanceState() çağrısına sahip değildir. (I6e37a)

Sürüm 1.8.7

20 Mayıs 2025

androidx.fragment:fragment-*:1.8.7 iptal edilir. 1.8.7 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Aynı karede pop ve değiştirme işlemlerinden sonra FragmentManager öğesinin uygun durumda olmaması sorunu düzeltildi. Bu durum, geri yığını popBackStack veya tahmin edilen geri gitme hareketi aracılığıyla pop edildiğinde kilitlenmeye neden olabiliyordu. (I50ad1)
  • AndroidX Transitions kullanılırken ve hızlı ardışık parça işlemleri başlatılmamış bir geçişi iptal etmeye çalışırken AndroidX Transition kitaplığının geçiş durumunu düzgün şekilde temizlememesi nedeniyle oluşan kilitlenme sorunu düzeltildi. (b/414612221 adresine bakın). (Ib5235)

Sürüm 1.8.6

12 Şubat 2025

androidx.fragment:fragment-*:1.8.6 iptal edilir. 1.8.6 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • FragmentContainerView'nın setOnApplyWindowInsetsListener geçersiz kılma işlemi artık çerçeve tarafından izin verilen şekilde boş bir dinleyici alıyor. (I575f0, b/282790626)

Sürüm 1.8.5

30 Ekim 2024

androidx.fragment:fragment-*:1.8.5 iptal edilir. 1.8.5 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Yalnızca Tahmin Edilen Geri Gitme hareketi iptal edildikten veya kesintiye uğradıktan sonra saveBackStack tarafından tetiklenen IllegalStateException düzeltildi. (I3387d, b/342419080)

Sürüm 1.8.4

2 Ekim 2024

androidx.fragment:fragment-*:1.8.4 iptal edilir. 1.8.4 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Androidx Transitions kullanılırken sistemin geri düğmesine hızlıca basıldığında veya geri hareketinin hızlıca yapıldığında Fragment'ların kilitlenmesine neden olan sorun düzeltildi. (Ibc038, b/364804225)
  • Parçalarda, tahmin edilen geri gitme hareketinin kesintiye uğratılmasının parça yöneticisini tanımlanmamış bir duruma göndermesine ve hatta yanlış parçayı göstermesine neden olan sorun düzeltildi. (If82e2, b/338624457)
  • UninitializedPropertyAccessException, AndroidFragment örneğinizin kullandığı sınıf dinamik olarak değiştirilirken AndroidFragment içinde düzeltildi. (I12dea)

Sürüm 1.8.3

4 Eylül 2024

androidx.fragment:fragment-*:1.8.3 iptal edilir. 1.8.3 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • FragmentManager, Tahmin Edilen Geri Gitme hareketini işlerken artık bekleyen işlemleri doğru şekilde hesaba katıyor. Bu işlem, sistem yedeklemesi yapmanın artık IndexOutOfBoundsException neden olmamasını sağlar. (I9ba32, b/342316801)
  • AndroidFragment, kapsayan etkinlik/parçanın durumu zaten kaydedilmişken kompozisyona eklenirse artık kilitlenmiyor. (I985e9, b/356643968)

Sürüm 1.8.2

24 Temmuz 2024

androidx.fragment:fragment-*:1.8.2 iptal edilir. 1.8.2 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • AndroidFragment artık üst parçanın Fragment geri yığınına yerleştirildiği durumları düzgün şekilde işliyor ve bu parçaya geri dönüldüğünde "No view found for id" (Kimlik için görünüm bulunamadı) sorunlarını önlüyor. (I94608)
  • FragmentTransaction.add yöntemiyle eklenen ve ViewGroup alanını kullanan parçalar, onStart()'e geçmeden önce onContainerAvailable'yi bekler. Bu durum, AndroidFragment gibi API kullanıcılarını etkiler. AndroidFragment artık AndroidFragment öğesini onStart() üzerinden taşımadan önce yeniden oluşturulmasını bekler. (I94608)

Sürüm 1.8.1

26 Haziran 2024

androidx.fragment:fragment-*:1.8.1 iptal edilir. 1.8.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Kapsayıcısı olmayan parçaların, tahmin edilen geri gitme hareketi başlatıldığında hemen DESTROYED olmasına neden olan sorun düzeltildi. Artık hareket tamamlanana kadar CREATED durumunda tutuluyor. (If6b83, b/345244539)

Sürüm 1.8.0

12 Haziran 2024

androidx.fragment:fragment-*:1.8.0 iptal edilir. 1.8.0 sürümü bu commit'leri içerir.

1.7.0 sürümünden beri yapılan önemli değişiklikler

  • fragment-compose yapısı artık, parça sınıfı adı aracılığıyla Compose hiyerarşisine parça eklenmesine olanak tanıyan bir AndroidFragment Composable içeriyor. Fragment'ın durumunun kaydedilmesi ve geri yüklenmesi otomatik olarak işlenir. Bu yöntem, daha önce bir Fragment'i genişletmek için AndroidViewBinding kullanılması önerilen yaklaşımın doğrudan yerine kullanılmalıdır.
  • onBackStackChangeCancelled FragmentManager'nin OnBackStackChangedListener arayüzündeki geri çağırma işlevi artık FragmentManager'de işlemler yürütülürken tetikleniyor ve onBackStackChangeCommitted geri çağırma işlevinin zamanlamasına daha yakın hale geliyor.

Sürüm 1.8.0-rc01

29 Mayıs 2024

androidx.fragment:fragment-*:1.8.0-rc01 iptal edilir. 1.8.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • FragmentManagers OnBackStackChangedListener arayüzündeki onBackStackChangeCancelled geri çağırma işlevi artık FragmentManager'de işlemler yürütülürken tetikleniyor ve onBackStackChangeCommitted geri çağırma işlevinin zamanlamasına daha yakın hale geliyor. (I5ebfb, b/332916112)

Sürüm 1.8.0-beta01

14 Mayıs 2024

androidx.fragment:fragment-*:1.8.0-beta01 iptal edilir. 1.8.0-beta01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Parça 1.7.1: Tahmin edilen geri gitme özelliği artık yalnızca tüm parçaların Animator veya Seekable Androidx Transition'a sahip olduğu işlemlerde çalışacak. Bu düzeltme, kısmen aranabilir bir işlemin iptal edilmesinin siyah ekrana neden olduğu sorunu giderir. (I43037, b/339169168)

Sürüm 1.8.0-alpha02

17 Nisan 2024

androidx.fragment:fragment-*:1.8.0-alpha02 iptal edilir. 1.8.0-alpha02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Parça 1.7.0-rc02: Başka geçiş olmadan sharedElement ayarlanmasının neden çalışmayacağını belirten günlükler eklendi. (Iec48e)
  • Parça 1.7.0-rc02: Diğer tüm geçişlerin aranabilir olduğu işlemlere aranabilir olmayan bir paylaşılan öğe eklendiğinde kilitlenmeye neden olan hata düzeltildi. Artık işlem doğru şekilde aranabilir olmayan olarak kabul edilecek. (I18ccd)

Sürüm 1.8.0-alpha01

3 Nisan 2024

androidx.fragment:fragment-*:1.8.0-alpha01 iptal edilir. 1.8.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Yeni AndroidFragment Composable, parça sınıfı adı aracılığıyla Compose hiyerarşisine parça eklenmesine olanak tanır. Fragment'ın durumunun kaydedilmesi ve geri yüklenmesi otomatik olarak işlenir. Bu, AndroidViewBinding Composable için doğrudan bir yedek olarak kullanılabilir.(b/312895363, Icf841)

Belgelerdeki Değişiklikler

  • OnBackStackChangedListener API'lerinin ne zaman çağrıldığı ve nasıl kullanılması gerektiğiyle ilgili dokümanlar güncellendi. (I0bfd9)

Bağımlılık güncellemesi

Sürüm 1.7

Sürüm 1.7.1

14 Mayıs 2024

androidx.fragment:fragment-*:1.7.1 iptal edilir. 1.7.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Tahmin edilen geri gitme özelliği artık yalnızca tüm parçaların Animator veya Seekable Androidx Transition'a sahip olduğu işlemlerde çalışacak. Bu düzeltme, kısmen aranabilir bir işlemin iptal edilmesinin boş ekrana neden olduğu sorunu giderir. (I43037, b/339169168)

Sürüm 1.7.0

1 Mayıs 2024

androidx.fragment:fragment-*:1.7.0 iptal edilir. 1.7.0 sürümü bu commit'leri içerir.

Tahmini Geri Hareket Desteği

  • Parçalar artık Animator kullanılırken veya AndroidX Transition 1.5.0 kullanılırken uygulama içi tahmini geri özelliğini destekliyor. Bu sayede kullanıcılar, işlemi hareketi tamamlayarak onaylamaya veya iptal etmeye karar vermeden önce Animator/Transition'ınızı arayarak önceki parçayı görmek için geri hareketini kullanabilir.
Geçiş Sistemi XML Kaynağı Tahmin edilen geri gitme özelliğini destekler
Animation R.anim Hayır
Animator R.animator Evet
Framework Transition R.transition Hayır
Transition 1.4.1 veya daha eski bir sürümle AndroidX Transition R.transition Hayır
AndroidX Transition ve Transition 1.5.0 R.transition Evet

Tahmin edilen geri gitme hareketini etkinleştirdikten sonra Fragment'lerde tahmin edilen geri gitme desteğiyle ilgili sorunlar görürseniz lütfen sorununuzu yeniden üreten örnek bir projeyle birlikte Fragment'e karşı bir sorun bildirin. Etkinliğinizin onCreate() bölümündeki FragmentManager.enabledPredictiveBack(false) simgesini kullanarak tahmin edilen geri gitme özelliğini devre dışı bırakabilirsiniz.

FragmentManager.OnBackStackChangedListener(), artık sırasıyla tahmini geri gitme ilerlemesi ve iptal edilen etkinlikleri almak için onBackStackChangeProgressed() ve onBackStackChangeCancelled() değerlerini sağlıyor.

Fragment Compose Artifact

Fragment tabanlı mimariden tamamen Compose tabanlı mimariye geçiş sürecinde olan uygulamaları desteklemeye odaklanan yeni bir fragment-compose yapısı oluşturuldu.

Bu yeni yapıda kullanıma sunulan ilk özellik, content üzerinde bir uzantı yöntemidir Fragment. Bu yöntem, sizin için bir ComposeView oluşturup doğru ViewCompositionStrategy'yi ayarlayarak Compose'u tek bir Fragment'ın kullanıcı arayüzünde kullanmayı kolaylaştırmayı amaçlar.

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

Sürüm 1.7.0-rc02

17 Nisan 2024

androidx.fragment:fragment-*:1.7.0-rc02 iptal edilir. 1.7.0-rc02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Başka geçişler olmadan sharedElement ayarlanmasının neden çalışmayacağını belirten günlükler eklendi. (Iec48e)
  • Aranabilir olmayan bir paylaşılan öğe, diğer tüm geçişlerin aranabilir olduğu bir işleme eklendiğinde kilitlenmeye neden olan hata düzeltildi. Artık işlem doğru şekilde aranabilir olmayan olarak kabul edilecek. (I18ccd)

Sürüm 1.7.0-rc01

3 Nisan 2024

androidx.fragment:fragment-*:1.7.0-rc01 iptal edilir. 1.7.0-rc01 sürümü bu commit'leri içerir.

Bağımlılık güncellemesi

Sürüm 1.7.0-beta01

20 Mart 2024

androidx.fragment:fragment-*:1.7.0-beta01 iptal edilir. 1.7.0-beta01 sürümü bu commit'leri içerir.

API Değişiklikleri

  • FragmentHostCallback artık Kotlin'de yazılıyor. Böylece, Host'un genel türünün null değer alabilme özelliği, onGetHost()'nin dönüş türünün null değer alabilme özelliğiyle eşleşiyor. (I40af5)

Hata Düzeltmeleri

  • Bir kapsayıcıda bulunmayan bir parçada tahmin edilen geri gitme hareketini onaylarken parçanın hiçbir zaman yok edilmemesine neden olan sorun düzeltildi. Parça artık hemen son duruma taşınacak. (Ida0d9)
  • Parçalarda, gelen geçişlerin tahmin edilen geri gitme hareketiyle kesintiye uğratılması durumunda giriş görünümünün yok olmasına ve boş ekran gösterilmesine neden olan sorun düzeltildi. (Id3f22, b/319531491)

Sürüm 1.7.0-alpha10

7 Şubat 2024

androidx.fragment:fragment-*:1.7.0-alpha10 iptal edilir. 1.7.0-alpha10 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Önceki Fragment sürümünde bilinen bir sorun düzeltildi. Bu sorunda, Fragment'ın Animator veya AndroidX Transition için tahmini geri gitme desteği kullanılırken addOnBackStackChangedListener üzerinden hiç FragmentManager.OnBackStackChangedListener eklenmemişse Fragment'lar handleOnBackProgressed'dan NullPointerException atıyordu. (I7c835)

Sürüm 1.7.0-alpha09

24 Ocak 2024

androidx.fragment:fragment-*:1.7.0-alpha09 iptal edilir. 1.7.0-alpha09 sürümü şu commit'leri içerir.

Fragment Compose Artifact

Fragment tabanlı mimariden tamamen Compose tabanlı mimariye geçiş sürecinde olan uygulamaları desteklemeye odaklanan yeni bir fragment-compose yapısı oluşturuldu.

Bu yeni yapıda kullanıma sunulan ilk özellik, content üzerinde bir uzantı yöntemidir Fragment. Bu yöntem, sizin için bir ComposeView oluşturup doğru ViewCompositionStrategy'yi ayarlayarak Compose'u tek bir Fragment'ın kullanıcı arayüzünde kullanmayı kolaylaştırmayı amaçlar. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

Yeni Özellikler

  • FragmentManager.OnBackStackChangedListener(), artık sırasıyla tahmini geri gitme ilerlemesi ve iptal edilen etkinlikleri almak için onBackStackChangeProgressed() ve onBackStackChangeCancelled() değerlerini sağlıyor. (214b87)

Bilinen Sorun

  • Animator veya AndroidX Geçişi için Fragment'ın Tahmin Edilen Geri Gitme desteği kullanılırken addOnBackStackChangedListener aracılığıyla hiç FragmentManager.OnBackStackChangedListener eklenmemişse Fragment'lar, handleOnBackProgressed konumundan NullPointerException hatası verir. İşleyiciyi manuel olarak eklemek, kilitlenmeyi önler. Bu sorun, Fragments'ın sonraki sürümünde düzeltilecektir.

Sürüm 1.7.0-alpha08

10 Ocak 2024

androidx.fragment:fragment-*:1.7.0-alpha08 iptal edilir. 1.7.0-alpha08 sürümü şu commit'leri içerir.

Temizleme

Sürüm 1.7.0-alpha07

29 Kasım 2023

androidx.fragment:fragment-*:1.7.0-alpha07 iptal edilir. 1.7.0-alpha07 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Paylaşılan öğe geçişi ayarlanıp enter/exitTransition ayarlanmadığı için oluşan NullPointerException düzeltildi. (I8472b)
  • Parça 1.6.2: FragmentContainerView öğesinin parçası şişirildiğinde FragmentManager, Host ve id gibi durumlarına artık onInflate geri çağırmasında erişilebilir. (I1e44c, b/307427423)
  • Fragment 1.6.2 öğesinden: Bir dizi parçayı kaldırmak için clearBackStack kullanılırken artık üst parçanın ViewModels öğeleri temizlendiğinde iç içe yerleştirilmiş Fragment'ın ViewModel öğeleri de temizlenecek. (I6d83c, b/296173018)

Sürüm 1.7.0-alpha06

4 Ekim 2023

androidx.fragment:fragment-*:1.7.0-alpha06 iptal edilir. 1.7.0-alpha06 sürümü şu commit'leri içerir.

Bağımlılık Güncellemesi

  • Parçalar, Geçiş 1.5.0-alpha04'te eklenen yeni animateToStart API'ye bağlı olacak şekilde güncellendi.

Sürüm 1.7.0-alpha05

20 Eylül 2023

androidx.fragment:fragment-*:1.7.0-alpha05 iptal edilir. 1.7.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Parçalar artık Androidx Transitions kullanılırken tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanmış hareketle onaylamaya veya iptal etmeye karar vermeden önce özel Androidx Geçişinizle önceki parçayı aramak için geri hareketini kullanabilirsiniz. Bu özelliği etkinleştirmek için Geçiş 1.5.0-alpha03 sürümünü kullanmanız gerekir. (Ib49b4, b/285175724)

Bilinen Sorunlar

  • Şu anda, bir geçişle geri hareketini bir kez iptal ettikten sonra, geri hareketini bir sonraki başlatışınızda geçişin çalışmaması ve boş bir ekranın görünmesiyle ilgili bir sorun var. Bu durum, Transition kitaplığındaki bir sorundan kaynaklanıyor olabilir. (b/300157785). Bu sorunla karşılaşırsanız lütfen sorununuzu yeniden üreten bir örnek proje ile Fragment'a karşı bir sorun bildirin. Etkinliğinizin onCreate() bölümündeki FragmentManager.enabledPredictiveBack(false) simgesini kullanarak tahmin edilen geri gitme özelliğini devre dışı bırakabilirsiniz.

Sürüm 1.7.0-alpha04

6 Eylül 2023

androidx.fragment:fragment-*:1.7.0-alpha04 iptal edilir. 1.7.0-alpha04 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Tahmin edilen geri gitme hareketi iptal edildiğinde parçaların doğru yaşam döngüsü durumuna geçememesine neden olan sorun düzeltildi. (I7cffe, b/297379023)
  • Animasyonların geçişlerle birlikte çalışmasına izin verilen gerileme sorunu düzeltildi. (I59f36)
  • Geri yığında sondan bir önceki parçada hızlıca iki kez geri gitmeye çalışıldığında kilitlenmeye neden olan, parçalarla birlikte Tahmini Geri özelliğinin kullanılmasıyla ilgili sorun düzeltildi. (Ifa1a4)

Sürüm 1.7.0-alpha03

23 Ağustos 2023

androidx.fragment:fragment-*:1.7.0-alpha03 iptal edilir. 1.7.0-alpha03 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Tahmin edilen geri gitme özelliği kullanılırken, parça yöneticisinin geri yığınındaki ilk parçanın atlanmasına ve 3 düğmeli gezinme veya tahmin edilen geri gitme hareketi aracılığıyla sistem geri gitme özelliği kullanılırken Etkinliğin tamamlanmasına neden olan parçalarla ilgili sorun düzeltildi. (I0664b, b/295231788)

Sürüm 1.7.0-alpha02

9 Ağustos 2023

androidx.fragment:fragment-*:1.7.0-alpha02 iptal edilir. 1.7.0-alpha02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • API 34'ten itibaren Tahmini Geri Hareketler ile Parçalar'ı kullanırken arama işlemini desteklemeyen (Animations, Transitions) bir geçiş sistemi veya hiç geçiş kullanmıyorsanız Parçalar artık geri hareketini yürütmeden önce hareketin tamamlanmasını bekleyecektir. (I8100c)

Sürüm 1.7.0-alpha01

7 Haziran 2023

androidx.fragment:fragment-*:1.7.0-alpha01 iptal edilir. Bu sürüm dahili bir dalda geliştirilmiştir.

Yeni Özellikler

  • Parçalar artık Animator kullanılırken uygulama içi tahmin edilen geri gitme özelliğini destekliyor. Bu sayede, işlemi tamamlanan hareketle onaylamaya veya iptal etmeye karar vermeden önce özel Animator'ınızla önceki parçayı görmek için geri hareketini kullanabilirsiniz. Deneysel enablePredictiveBack() özelliğini kullanıp false değerini ileterek de bu yeni davranışı devre dışı bırakabilirsiniz.

Sürüm 1.6

Sürüm 1.6.2

1 Kasım 2023

androidx.fragment:fragment-*:1.6.2 iptal edilir. 1.6.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • FragmentContainerView Fragment'i genişletildiğinde FragmentManager, Host ve id gibi durumlarına artık onInflate geri çağırma işlevinde erişilebilir. (I1e44c, b/307427423)
  • Bir dizi parçayı kaldırmak için clearBackStack kullanılırken, üst parçanın ViewModels temizlendiğinde artık iç içe yerleştirilmiş parçaların ViewModel de temizlenecek. (I6d83c, b/296173018)

Sürüm 1.6.1

26 Temmuz 2023

androidx.fragment:fragment-*:1.6.1 iptal edilir. 1.6.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Etkinlik durdurulduğunda ancak yok edilmediğinde depolanan kaydedilmiş durumun, parça örneği RESUMED durumuna geri taşındıktan sonra bile yanlış şekilde önbelleğe alınmasına neden olan sorun düzeltildi. Bu durum, birden fazla geri yığın API'si kullanılarak söz konusu parçayı kaydedip geri yüklerken parçanın örneği geri yığında bulunuyorsa önbelleğe alınan durumun yeniden kullanılmasına neden olur. (I71288, b/246289075)

Bağımlılık Güncellemesi

  • Fragment artık Activity 1.7.2'ye bağlıdır. Bu düzeltme, Kotlin kullanıcılarının ComponentDialog öğesini Activity'ye açıkça bağımlı olmadan genişletememesine neden olan sorunu giderir. (b/287509323)

Sürüm 1.6.0

7 Haziran 2023

androidx.fragment:fragment-*:1.6.0 iptal edilir. 1.6.0 sürümü şu commit'leri içerir.

1.5.0 sürümünden beri yapılan önemli değişiklikler

  • Fragment'ların kaydedilmiş durumu tamamen özel kitaplık durumu (özel Parcelable sınıfları) ve geliştirici tarafından sağlanan durum arasında bölünmüştür. Geliştirici tarafından sağlanan durum artık her zaman bir parçanın durumunun tam olarak nereden kaynaklandığını belirlemeye olanak tanıyan bir Bundle içinde depolanır.
  • FragmentManager.OnBackStackChangedListener arayüzü, onBackStackChangeStarted ve onBackStackChangeCommitted olmak üzere iki ek geri çağırma ile genişletildi. Bu geri çağırmalar, her Fragment ile birlikte sırasıyla parçanın eski yığına eklenmeden/yığına eklenmeden hemen önce ve işlem onaylandıktan hemen sonra çağrılır.
  • FragmentStrictMode, bir alt parçanın üst öğesinin görünüm hiyerarşisine yerleştirildiğini ancak üst öğenin childFragmentManager öğesine eklenmediğini algılayan yeni bir WrongNestedHierarchyViolation ekledi.
  • Intent veya IntentSender alanını kullanan Fragment ve FragmentManager API'leri artık @NonNull ile düzgün şekilde açıklama eklenmiş durumda. Bunun nedeni, boş değerin her zaman ilgili Android çerçeve API'lerinin bu yöntemleri çağırmasına neden olmasıdır.
  • DialogFragment artık requireComponentDialog() API'si aracılığıyla temel ComponentDialog'ye erişim sağlıyor.
  • Fragment artık Lifecycle 2.6.1'a bağlıdır.
  • Fragment artık SavedState 1.2.1'e bağlıdır.
  • Fragment artık ProfileInstaller 1.3.0'a bağlıdır.
  • fragment-testing-manifest yapısı, manifest girişlerini parça testi bileşenlerinin geri kalanından ayırır. Bu durumda şunları yapabilirsiniz:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    Bu sayede fragment-testing ile androidx.test arasındaki sürüm farklılığından kaynaklanan çakışmalar önlenir.

Sürüm 1.6.0-rc01

10 Mayıs 2023

androidx.fragment:fragment-*:1.6.0-rc01 iptal edilir. 1.6.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Birden fazla startActivityForResult isteği art arda gönderildiğinde ActivityResult'ların yanlış istek koduyla gönderilmesine neden olan sorun düzeltildi. (If0b9d, b/249519359)
  • onBackStackChangeListener geri çağırmalarının, arka yığını gerçekten değiştiren işlemlerle karıştırıldığında arka yığını değiştirmeyen işlemler için gönderilmesine neden olan sorun düzeltildi. (I0eb5c, b/279306628)

Sürüm 1.6.0-beta01

19 Nisan 2023

androidx.fragment:fragment-*:1.6.0-beta01 iptal edilir. 1.6.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • postponeEnterTransition işlevini zaman aşımıyla kullanıp ertelenen parçayı değiştirmek artık ertelenen parçanın sızmasına neden olmuyor. (I2ec7d, b/276375110)
  • Yeni onBackStackChangeStarted ve onBackStackChangeCommitted geri çağırmaları, birden fazla işlem aynı parçayı içerse bile artık yalnızca bir kez parça gönderir. (Ic6b69)

Sürüm 1.6.0-alpha09

5 Nisan 2023

androidx.fragment:fragment-*:1.6.0-alpha09 iptal edilir. 1.6.0-alpha09 sürümü şu commit'leri içerir.

API Değişiklikleri

  • DialogFragment artık requireComponentDialog() API'si aracılığıyla temel ComponentDialog'ye erişim sağlıyor. (I022e3, b/234274777)
  • commitNow(), executePendingTransactions() ve popBackStackImmediate() parçası API'leri @MainThread ile açıklama eklenmiş olup artık çalışma zamanında başarısız olmayı beklemek yerine ana iş parçacığından çağrılmadıklarında derleme hataları verecekler. (Ic9665, b/236538905)

Hata Düzeltmeleri

  • FragmentManager'da aynı karede kaydetme ve geri yüklemenin kilitlenmeye neden olabildiği hata düzeltildi. (Ib36af, b/246519668)
  • OnBackStackChangedListener onBackStackChangeStarted ve onBackStackChangeCommitted geri çağırmaları artık yalnızca FragmentManager geri yığını değiştirildiğinde yürütülüyor. (I66055, b/274788957)

Sürüm 1.6.0-alpha08

22 Mart 2023

androidx.fragment:fragment-*:1.6.0-alpha08 iptal edilir. 1.6.0-alpha08 sürümü şu commit'leri içerir.

Davranış Değişikliği

  • OnBackStackChangedListener.onBackStackChangeCommited Geri çağırma zamanlaması, parça işlemleri yürütülmeden önce yürütülecek şekilde ayarlandı. Bu, geri çağırma işlevine hiçbir zaman ayrılmış bir parça iletilmemesini sağlar. (I66a76, b/273568280)

Hata Düzeltmeleri

  • Fragment 1.5.6: Lifecycle zaten STARTED ise ve sonuç zaten mevcutsa setFragmentResultListener içinde clearFragmentResultListener çağrısının çalışmamasına neden olan sorun düzeltildi. (If7458)

Bağımlılık Güncellemeleri

Sürüm 1.6.0-alpha07

8 Mart 2023

androidx.fragment:fragment-*:1.6.0-alpha07 iptal edilir. 1.6.0-alpha07 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Fragment 1.5.6: Menü öğeleri eklenmiş olsun veya olmasın herhangi bir Fragment'in kaldırılmasının etkinliğin menüsünü geçersiz kılmasına neden olan sorun düzeltildi. (50f098, b/244336571)

Sürüm 1.6.0-alpha06

22 Şubat 2023

androidx.fragment:fragment-*:1.6.0-alpha06 iptal edilir. 1.6.0-alpha06 sürümü şu commit'leri içerir.

Davranış değişikliği

  • onBackStackChangedStarted FragmentManager'nin onBackStackChangedListener üzerindeki yeni geri çağırma işlemi artık parçalar hedef durumlarına taşınmaya başlamadan önce yürütülecek. (I34726)

Sürüm 1.6.0-alpha05

8 Şubat 2023

androidx.fragment:fragment-*:1.6.0-alpha05 iptal edilir. 1.6.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentManager.OnBackStackChagnedListener arayüzü artık FragmentManager'de geri yığın değişiklikleri gerçekleştiğinde ek bilgi ve kontrol sağlayan iki ek geri çağırma (onBackStackChangeStarted ve onBackStackChangeCommitted) sunuyor. (Ib7ce5, b/238686802)

API Değişiklikleri

  • Intent veya IntentSender alanını kullanan Fragment ve FragmentManager API'leri artık @NonNull ile düzgün şekilde açıklama eklenmiş durumda. Bunun nedeni, boş değerin her zaman ilgili Android çerçeve API'lerinin hemen kilitlenmesine neden olmasıdır. (I06fd4)

Sürüm 1.6.0-alpha04

7 Aralık 2022

androidx.fragment:fragment-*:1.6.0-alpha04 iptal edilir. 1.6.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentStrictMode, bir alt parçanın üst öğesinin görünüm hiyerarşisine yerleştirildiğini ancak üst öğenin childFragmentManager öğesine eklenmediğini algılayan yeni bir WrongNestedHierarchyViolation ekledi. (I72521, b/249299268)

Davranış Değişiklikleri

  • Parçalar artık SavedStateRegistry durumunu onAttach() öncesinde geri yüklüyor. Böylece, tüm yukarı yönlü yaşam döngüsü yöntemlerinde kullanılabilir. (I1e2b1)

API Değişiklikleri

  • fragment-testing-manifest yapısı, manifest girişlerini parça testi bileşenlerinin geri kalanından ayırır. Bu durumda şunları yapabilirsiniz:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

Bu sayede, fragment-testing ve androidx.test arasındaki sürüm farklılığından kaynaklanan çakışmalar önlenir.(I8e534, b/128612536)

Hata Düzeltmeleri

  • Fragment 1.5.5: Fragment'lar artık ViewModel durumunu, görünüm kayıtlı durumunun bir parçası olarak yanlış şekilde kaydetmeyecek. (I10d2b, b/253546214)

Sürüm 1.6.0-alpha03

5 Ekim 2022

androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 ve androidx.fragment:fragment-testing:1.6.0-alpha03 özellikleri kullanıma sunulur. 1.6.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • DialogFragment sınıfını genişleten sınıfların artık onDismiss() geçersiz kılmalarında super'ı çağırması gerekecek. (I14798, b/238928865)

Hata Düzeltmeleri

  • Parçaların her zaman uygun geri çağırmaları almasını sağlamak için yeni sağlayıcı geri çağırma arayüzlerinin (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) entegrasyonundan kaynaklanan gerilemeler düzeltildi. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

Sürüm 1.6.0-alpha02

24 Ağustos 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 ve androidx.fragment:fragment-testing:1.6.0-alpha02 özellikleri kullanıma sunulur. 1.6.0-alpha02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parça 1.5.2: Aynı anda popBackStack() ve replace() işlemlerinin yürütülmesinin, çıkış parçalarının yanlış Animation/Animator'yi çalıştırmasına neden olabildiği sorun düzeltildi. (Ib1c07, b/214835303)

Sürüm 1.6.0-alpha01

27 Temmuz 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 ve androidx.fragment:fragment-testing:1.6.0-alpha01 özellikleri kullanıma sunulur. 1.6.0-alpha01 sürümü şu commit'leri içerir.

Davranış Değişiklikleri

  • Fragment'ların kaydedilmiş durumu tamamen özel kitaplık durumu (özel Parcelable sınıfları) ve geliştirici tarafından sağlanan durum arasında bölünmüştür. Geliştirici tarafından sağlanan durum artık her zaman bir parçanın durumunun tam olarak nereden kaynaklandığını belirlemeye olanak tanıyan bir Bundle içinde depolanır. (b/207158202)

Hata Düzeltmeleri

  • Fragment 1.5.1: AGP 7.4 ile birlikte gelen lint sürümünün kullanılması durumunda lint'in kilitlenmesine neden olan DialogFragmentCallbacksDetector'deki regresyon düzeltildi. (b/237567009)

Bağımlılık güncellemesi

Sürüm 1.5

Sürüm 1.5.7

19 Nisan 2023

androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 ve androidx.fragment:fragment-testing:1.5.7 özellikleri kullanıma sunulur. 1.5.7 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • postponeEnterTransition işlevini zaman aşımıyla kullanıp ertelenen parçayı değiştirmek artık ertelenen parçanın sızmasına neden olmuyor. (I2ec7d, b/276375110)

Sürüm 1.5.6

22 Mart 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 ve androidx.fragment:fragment-testing:1.5.6 özellikleri kullanıma sunulur. 1.5.6 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Menü öğeleri eklenmiş olsun veya olmasın herhangi bir Fragment'ın kaldırılması durumunda etkinliğin menüsünün geçersiz olmasına neden olan sorun düzeltildi. (50f098, b/244336571)
  • clearFragmentResultListener öğesinin setFragmentResultListener içinde çağrılması durumunda, Lifecycle öğesi zaten STARTED ise ve sonuç zaten mevcutsa çalışmamasına neden olan sorun düzeltildi. (If7458)

Sürüm 1.5.5

7 Aralık 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 ve androidx.fragment:fragment-testing:1.5.5 özellikleri kullanıma sunulur. 1.5.5 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parçalar artık ViewModel durumunu, görünüm kayıt defterinin kayıtlı durumu olarak yanlış şekilde kaydetmeyecek. (I10d2b, b/253546214)

Sürüm 1.5.4

24 Ekim 2022

androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 ve androidx.fragment:fragment-testing:1.5.4 özellikleri kullanıma sunulur. 1.5.4 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Bir sağlayıcı geri çağırma arayüzü (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) uygulamayan bir ana makineyle özel FragmentController kullanıldığında ve bunun kullanımdan kaldırılan dispatch işlevi çağrıldığında alt parçalara gönderimin başarısız olmasına neden olan hata düzeltildi. (I9b380)

Sürüm 1.5.3

21 Eylül 2022

androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 ve androidx.fragment:fragment-testing:1.5.3 yayınlandı. 1.5.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Geri yığında bulunan parçaların onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() ve onConfigurationChanged() geri çağırmalarını almasına neden olan hata düzeltildi. (I34581, I8dfe6, b/242570955)
  • İç içe yerleştirilmiş alt parçalar artık birden fazla onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() veya onConfigurationChanged() geri çağırma işlemi almayacak. (I690b3, Id0096, If9d6b, I2cba2)

Sürüm 1.5.2

10 Ağustos 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 ve androidx.fragment:fragment-testing:1.5.2 yayınlandı. 1.5.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Aynı anda popBackStack() ve replace() işlemi yürütmenin, çıkış yapan parçaların yanlış Animation/Animator çalıştırmasına neden olabildiği sorun düzeltildi. (Ib1c07, b/214835303)

Sürüm 1.5.1

27 Temmuz 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 ve androidx.fragment:fragment-testing:1.5.1 özellikleri kullanıma sunulur. 1.5.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • AGP 7.4 ile birlikte gelen hata analizi sürümünün kullanılması durumunda hata analizinin kilitlenmesine neden olan DialogFragmentCallbacksDetector ile ilgili regresyon düzeltildi. (b/237567009)

Bağımlılık güncellemesi

Sürüm 1.5.0

29 Haziran 2022

androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 ve androidx.fragment:fragment-testing:1.5.0 özellikleri kullanıma sunulur. 1.5.0 sürümü şu commit'leri içerir.

1.4.0 sürümünden beri yapılan önemli değişiklikler

  • CreationExtras Entegrasyonu - Fragment artık Lifecycle 2.5.0'ın CreationExtras aracılığıyla durum bilgisi içermeyen ViewModelProvider.Factory sağlayabilir.
  • Bileşen iletişim kutusu entegrasyonu: DialogFragment artık onCreateDialog() tarafından döndürülen varsayılan iletişim kutusu olarak Activity 1.5.0 aracılığıyla ComponentDialog kullanıyor.
  • Kaydedilmiş örnek durumu yeniden düzenleme: Parçalar, örnek durumlarını kaydetme şekillerini değiştirmeye başladı. Bu, parçada hangi durumun kaydedildiğini ve durumun kaynağını net bir şekilde belirlemeye yardımcı olmak için yapılan bir çalışmadır. Mevcut değişiklikler şunlardır:
    • FragmentManager artık kaydedilen örnek durumunu doğrudan özel bir Parcelable içine değil, Bundle içine kaydediyor.
    • Fragment Result APIs aracılığıyla ayarlanan ve henüz teslim edilmemiş sonuçlar artık FragmentManager'nin dahili durumundan ayrı olarak kaydediliyor.
    • Artık her bir parçayla ilişkili durum, FragmentManager öğesinin dahili durumundan ayrı olarak kaydedilir. Böylece, tek bir parçayla ilişkili kaydedilmiş durum miktarını, FragmentManager hata ayıklama günlüğünde bulunan benzersiz kimliklerle ilişkilendirebilirsiniz.Fragment

Diğer Değişiklikler

  • FragmentStrictMode artık özel üçüncü taraf parçalarının, sınıf adıyla birlikte allowViolation() kullanarak belirli ihlal cezalarını atlamasına olanak tanıyor.
  • Etkinliğinizin ActionBar menüsünü sağlamak için kullanılan Fragment API'leri kullanımdan kaldırıldı. Activity 1.4.0'de eklenen MenuHost ve MenuProvider API'leri, parçaların kullanması gereken, test edilebilir ve yaşam döngüsüne duyarlı eşdeğer bir API yüzeyi sağlar.

Sürüm 1.5.0-rc01

11 Mayıs 2022

androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 ve androidx.fragment:fragment-testing:1.5.0-rc01 özellikleri kullanıma sunulur. 1.5.0-rc01 sürümü şu commit'leri içerir.

Kayıtlı örnek durumu yeniden düzenleme

  • Her bir parçayla ilişkili durum artık FragmentManager'nın dahili durumundan ayrı olarak kaydedilir. Böylece, tek bir parçayla ilişkili kaydedilmiş durum miktarını Parça hata ayıklama günlüğünde bulunan benzersiz kimliklerle ilişkilendirebilirsiniz. (a153e0, b/207158202)

Sürüm 1.5.0-beta01

20 Nisan 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 ve androidx.fragment:fragment-testing:1.5.0-beta01 özellikleri kullanıma sunulur. 1.5.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • DialogFragment, showNow işleviyle eşitlik için commitNow kullanan yeni bir dismissNow yöntemi ekledi. Bu işlemin Dialog öğesini hemen kapatmayacağını, yalnızca FragmentManager öğesinin durumunu eşzamanlı olarak güncelleyeceğini unutmayın. (I15c36, b/72644830)

Kayıtlı örnek durumu yeniden düzenleme

  • FragmentManager artık kaydedilen örnek durumunu doğrudan özel bir Parcelable içine değil, Bundle içine kaydediyor. Bu, Fragments tarafından gerçekten kaydedilenler konusunda daha fazla şeffaflık sağlamanın ilk adımıdır. (I93807, b/207158202)
  • Parça Sonuç API'leri aracılığıyla ayarlanan ve henüz teslim edilmemiş sonuçlar artık FragmentManager'nin dahili durumundan ayrı olarak kaydediliyor. Bu sayede, kaydedilmiş örnek durumunuzun bir parçası olarak hangi sonuçların kaydedildiği konusunda daha fazla şeffaflık sağlanır. (I6ea12, b/207158202)

Sürüm 1.5.0-alpha05

6 Nisan 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 ve androidx.fragment:fragment-testing:1.5.0-alpha05 özellikleri kullanıma sunulur. 1.5.0-alpha05 sürümü şu commit'leri içerir.

API Değişiklikleri

Sürüm 1.5.0-alpha04

23 Mart 2022

androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 ve androidx.fragment:fragment-testing:1.5.0-alpha04 özellikleri kullanıma sunulur. 1.5.0-alpha04 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Etkinliğinizin ActionBar için menü sağlayan Fragment API'leri, parçanızı etkinliğinize sıkı bir şekilde bağladığı ve tek başına test edilemediği için kullanımdan kaldırıldı. Activity 1.4.0-alpha01'de eklenen MenuHost ve MenuProvider API'leri, parçaların kullanması gereken, test edilebilir ve yaşam döngüsüne duyarlı eşdeğer bir API yüzeyi sağlar. (I50a59, I20758)

Hata Düzeltmeleri

  • SavedStateViewFactory artık SavedStateRegistryOwner ile başlatılmış olsa bile CreationExtras kullanımını destekliyor. Ekstralar sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)

Sürüm 1.5.0-alpha03

23 Şubat 2022

androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 ve androidx.fragment:fragment-testing:1.5.0-alpha03 özellikleri kullanıma sunulur. 1.5.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Artık CreationExtras değerini by viewModels() ve by activityViewModels() işlevlerine iletebilirsiniz. (Ibefe7, b/217601110)

Davranış Değişiklikleri

Sürüm 1.5.0-alpha02

9 Şubat 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 ve androidx.fragment:fragment-testing:1.5.0-alpha02 özellikleri kullanıma sunulur. 1.5.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentStrictMode artık özel üçüncü taraf parçalarının, sınıf adıyla birlikte allowViolation() kullanarak belirli ihlal cezalarını atlamasına olanak tanıyor. (I8f678)

Sürüm 1.5.0-alpha01

26 Ocak 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 ve androidx.fragment:fragment-testing:1.5.0-alpha01 özellikleri kullanıma sunulur. 1.5.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Parça 1.4.1: FragmentContainerView, XML'den oluşturulan görünüm kimlikleri negatif değerlere sahip olduğunda artık yasa dışı durum istisnası oluşturmuyor. (Ic185b, b/213086140)
  • Parçadan 1.4.1: by viewModels() lazy işleviyle özel bir ownerProducer lambda kullanılırken artık her zaman parçanın fabrikasını kullanmak yerine özel bir ViewModelProvider.Factory sağlanmazsa söz konusu sahibin defaultViewModelProviderFactory öğesi kullanılacak. (I56170, b/214106513)
  • Fragment öğesinin registerForActivityResult() geri çağırmasından ilk kez ViewModel öğesine erişirken yaşanan kilitlenme sorunu düzeltildi. (Iea2b3)

Sürüm 1.4

Sürüm 1.4.1

26 Ocak 2022

androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 ve androidx.fragment:fragment-testing:1.4.1 özellikleri kullanıma sunulur. 1.4.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • FragmentContainerView, XML'den oluşturulan görünüm kimlikleri negatif değerlere sahip olduğunda artık yasa dışı durum istisnası oluşturmuyor. (Ic185b, b/213086140)
  • by viewModels() lazy işleviyle özel bir ownerProducer lambda kullanılırken artık her zaman parçanın fabrika işlevini kullanmak yerine özel bir ViewModelProvider.Factory sağlanmazsa söz konusu sahibin defaultViewModelProviderFactory işlevi kullanılır. (I56170, b/214106513)

Sürüm 1.4.0

17 Kasım 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 ve androidx.fragment:fragment-testing:1.4.0 özellikleri kullanıma sunulur. 1.4.0 sürümü şu commit'leri içerir.

1.3.0 sürümünden beri yapılan önemli değişiklikler

  • FragmentStrictMode API'leri, uygulamanızın veya bağlı olduğunuz kitaplıkların kullanımdan kaldırılan parça API'lerini çağırmadığını doğrulamanıza olanak tanıyan çalışma zamanı kontrolleri sağlar. İhlal tespit edildiğinde bir günlük mesajı yazdırmayı, kendi özel dinleyicinizi tetiklemeyi veya uygulamanızın kilitlenmesini seçebilirsiniz. Hangi kontrollerin etkinleştirileceğini ve hangi "cezaların" tetikleneceğini kontrol eden FragmentStrictMode.Policy, yeni setStrictModePolicy() yöntemiyle FragmentManager üzerinde ayarlanabilir. Bu politika, söz konusu FragmentManager için ve kendi benzersiz politikasını ayarlamayan tüm alt parça yöneticileri için geçerlidir. Parçalar için StrictMode başlıklı makaleyi inceleyin.
  • FragmentContainerView artık kapsayıcıya en son eklenen parçayı döndüren bir getFragment() yöntemi sunuyor. Bu işlev, FragmentContainerView kimliğiyle findFragmentById() ile aynı mantığı kullanır ancak çağrının zincirlenmesine izin verir.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario artık Closeable'yi uyguluyor. Bu sayede, Kotlin'in use yöntemi veya try-with-resources ile kullanabilirsiniz.

  • Eklendi FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} Temanızdan alınan standart Etkinlik geçişi animasyonunun Parçalar geçişinde etkinleştirilip etkinleştirilmeyeceğini belirtmek için.

  • FragmentManager.enableNewStateManager(boolean) deneysel API'si kaldırıldı ve artık yalnızca yeni durum yöneticisi kullanılabiliyor.

Birden fazla geri yığın

FragmentManager, addToBackStack() kullanılan parça işlemlerinden oluşan bir geri yığın tutar. Bu sayede, Durumu parçalarla kaydetme mekanizmalarını kullanarak bu işlemleri pop edebilir ve önceki duruma dönebilirsiniz. Böylece parçalarınız durumlarını uygun şekilde geri yükleyebilir.

Bu sürüm, FragmentManager, saveBackStack(String name) ve restoreBackStack(String name) olmak üzere üç yeni clearBackStack(String name) API'si sunarak bu mekanizmaları genişletir. Bu API'ler, name ile aynı addToBackStack()'yi kullanarak FragmentTransaction'nin durumunu ve bu işlemlerde eklenen her parçanın durumunu kaydeder. Böylece, bu işlemleri ve parçalarını daha sonra durumları bozulmadan geri yükleyebilirsiniz. Bu sayede, geçerli geri yığını kaydedip kaydedilmiş bir geri yığını geri yükleyerek birden fazla geri yığın arasında etkili bir şekilde "geçiş" yapabilirsiniz.

saveBackStack(), popBackStack() ile benzer şekilde çalışır. Yani eşzamansızdır ve bu ada geri dönen tüm parça işlemlerinin geri alınmasına ("popped") ve eklenen tüm parçaların yok edilip kaldırılmasına neden olur. Ancak birkaç önemli açıdan farklılık gösterir:

  • saveBackStack() her zaman dahil edilir.
  • Belirtilen ad geri yığında bulunmazsa veya null ad sağlanırsa geri yığındaki tüm işlemleri açan popBackStack()'dan farklı olarak, daha önce addToBackStack() ile tam olarak aynı ve null olmayan bir ad kullanarak parça işlemi yapmadıysanız saveBackStack() hiçbir işlem yapmaz.
  • Bu işlemlerden eklenen tüm parçaların durumu kaydedilir. Bu, her parçanın görünüm durumunun depolandığı, her parçanın onSaveInstanceState() işlevinin çağrıldığı ve durumun geri yüklendiği, bu parçalarla ilişkili tüm ViewModel örneklerinin tutulduğu (ve bunlar üzerinde onCleared() işlevinin çağrılmadığı) anlamına gelir.

saveBackStack() ile kullanılabilen parça işlemlerin belirli ölçütleri karşılaması gerekir:

  • İşlemlerin tek bir atomik işlem olarak geri yüklenebilmesi için her parça işleminde setReorderingAllowed(true) kullanılmalıdır.
  • Kaydedilen işlemlerin daha sonraki bir zamanda geri yüklenebilmesi için kendi içinde tutarlı olması gerekir (yani, bu işlem kümesinin dışındaki parçalara açıkça referans vermemelidir). Bu sayede, arada geçen sürede geri yığında yapılan değişikliklerden bağımsız olarak işlemler geri yüklenebilir.
  • FragmentManager, geri yığın kaydedildikten sonra kaydedilmiş parçalara herhangi bir referans döndürmemesini sağlamak için kaydedilen hiçbir parça saklanan bir parça olamaz veya geçişli alt parça kümesinde saklanan bir parça bulunamaz.

saveBackStack(), restoreBackStack() ve clearBackStack()'ye benzer şekilde, sırasıyla önceden kaydedilmiş bir geri yığını geri yükleyecek veya önceden kaydedilmiş bir geri yığınını temizleyecek olan bu işlevler, daha önce aynı adla saveBackStack()'yı çağırmadıysanız hiçbir şey yapmaz.

Daha fazla bilgi için Birden fazla geri yığını: Ayrıntılı inceleme başlıklı makaleyi inceleyin.

Sürüm 1.4.0-rc01

3 Kasım 2021

androidx.fragment:fragment:1.4.0-rc01 Fragment 1.4.0-beta01'den herhangi bir değişiklik yapılmadan yayınlandı. 1.4.0-rc01 sürümü şu commit'leri içerir.

Sürüm 1.4.0-beta01

27 Ekim 2021

androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 ve androidx.fragment:fragment-testing:1.4.0-beta01 yayınlandı. 1.4.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Üst parçalar artık kendi geri çağırmalarını başlatmadan önce onHiddenChanged() tüm hiyerarşileri boyunca gönderilecek. (Iedc20, b/77504618)
  • Klavyenin açık olduğu bir parçadan geri dönüşüm görünümü içeren bir parçaya geçildiğinde klavye artık otomatik olarak kapanacak. (I8b842, b/196852211)
  • DialogFragment artık show(), showNow() veya dismiss() numaralarını aradığınızda oluşturduğu tüm işlemler için setReorderingAllowed(true) kullanıyor. (Ie2c14)
  • DetachAndAttachFragmentInSameFragmentTransaction ile ilgili çok uzun hata analizi uyarısı DetachAndAttachSameFragment olarak kısaltıldı. (e9eca3)

Sürüm 1.4.0-alpha10

29 Eylül 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 ve androidx.fragment:fragment-testing:1.4.0-alpha10 özellikleri kullanıma sunulur. 1.4.0-alpha10 sürümü şu commit'leri içerir.

Hata analizi

  • Aynı FragmentTransaction içinde aynı Fragment üzerinde hem detach() hem de attach() çağrısının algılanması için DetachAndAttachFragmentInSameFragmentTransaction lint uyarısı eklendi. Bu tamamlayıcı işlemler aynı işlemde yapıldığında birbirini iptal ettiğinden, gerçekten bir şey yapmak için ayrı işlemlere bölünmeleri gerekir. (aosp/1832956, b/200867930)
  • MenuHost FragmentAddMenuProvider API'si kullanılırken Fragment yaşam döngüsünün Fragment görünümü yaşam döngüsüyle ilgili kullanımlarını düzeltmek için addMenuProvider lint hatası eklendi. (aosp/1830457, b/200326272)

Doküman Güncellemeleri

  • startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions ve onRequestPermissionsResult olmak üzere artık Activity Result API'leri tarafından işlenen API'lerin desteğinin sonlandırılmasıyla ilgili mesajlar daha ayrıntılı hale getirildi. (cce80f)
  • Hem Fragment hem de DialogFragment için onActivityCreated() desteğinin sonlandırılmasıyla ilgili mesaj, daha fazla ayrıntı içerecek şekilde genişletildi. (224db4)

Sürüm 1.4.0-alpha09

15 Eylül 2021

androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 ve androidx.fragment:fragment-testing:1.4.0-alpha09 özellikleri kullanıma sunulur. 1.4.0-alpha09 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Artık clearBackStack(name) numarasını arayarak saveBackStack(name) ile daha önce kaydedilmiş durumları temizleyebilirsiniz. (I70cd7)

API Değişiklikleri

  • FragmentContainerView sınıfı Kotlin'de yeniden yazıldı. Bu sayede getFragment işlevinin null değer alabilme özelliğine uygun şekilde uyması sağlandı. (If694a, b/189629145)
  • FragmentStrictMode artık Kotlin ile yazılıyor (I11767, b/199183506)

Hata Düzeltmeleri

  • setReorderingAllowed(true) ile eklenen ve bekleyen işlemler yürütülmeden hemen önce kaldırılan bir Fragment'ın durumunun düzgün şekilde temizlenmemesine neden olan sorun düzeltildi. (I8ccb8)

Sürüm 1.4.0-alpha08

1 Eylül 2021

androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 ve androidx.fragment:fragment-testing:1.4.0-alpha08 özellikleri kullanıma sunulur. 1.4.0-alpha08 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • UseRequireInsteadOfGet Lint kontrolü, gereksiz parantezleri daha iyi işleyecek şekilde iyileştirildi. (I2d865)
  • Ek uç durumları işlemek için UseGetLayoutInflater Lint kontrolü iyileştirildi. (Ie5423)

Sürüm 1.4.0-alpha07

18 Ağustos 2021

androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 ve androidx.fragment:fragment-testing:1.4.0-alpha07, önemli bir değişiklik yapılmadan yayınlandı. 1.4.0-alpha07 sürümü şu commit'leri içerir.

Sürüm 1.4.0-alpha06

4 Ağustos 2021

androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 ve androidx.fragment:fragment-testing:1.4.0-alpha06 özellikleri kullanıma sunulur. 1.4.0-alpha06 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Hızlıca geri yığınlar arasında geçiş yaparken birden fazla geri yığınla ilgili bir sorun düzeltildi. Bu sorun, FragmentTransaction geri yüklenirken IllegalStateException olarak görünüyordu veya bir parçanın ikinci kopyası olarak görünüyordu. (I9039f)
  • FragmentManager'nın, daha önce saveBackStack() aracılığıyla kaydedilen durumun bir kopyasını, bu durum geri yüklendikten sonra bile tutmasıyla ilgili sorun düzeltildi. (Ied212)
  • DialogFragment'ı özellikle show(FragmentTransaction, String) yöntemiyle eklerken durum kaydedildikten sonra dismissAllowingStateLoss() yöntemi çağrıldığında DialogFragment artık kilitlenmiyor. (I84422)

Sürüm 1.4.0-alpha05

21 Temmuz 2021

androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 ve androidx.fragment:fragment-testing:1.4.0-alpha05 özellikleri kullanıma sunulur. 1.4.0-alpha05 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parça 1.3.6: Kök görünümde transitionGroup=”true” ayarlanmışken hide() kullanılırken parçanın görünümü artık doğru şekilde GONE olarak ayarlanıyor. (aosp/1766655, b/193603427)
  • Fragment 1.3.6: FragmentActivity artık her zaman geçersiz kıldığı yaşam döngüsü geri çağırmalarında ilk işlem olarak kaydedilmiş durumu açar. (I6db7a)

Bağımlılık güncellemesi

Sürüm 1.4.0-alpha04

30 Haziran 2021

androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 ve androidx.fragment:fragment-testing:1.4.0-alpha04 özellikleri kullanıma sunulur. 1.4.0-alpha04 sürümü şu commit'leri içerir.

API Değişiklikleri

  • FragmentManager artık durumunu kaydetmek için arka planda SavedStateRegistry kullanıyor. saveAllState() ve restoreSavedState() yöntemlerinin desteği FragmentController'de de sonlandırıldı. Parçaları FragmentActivity dışında barındırmak için FragmentController kullanıyorsanız FragmentHostCallbacks, SavedStateRegistryOwner'ü uygulamalıdır. (Iba68e, b/188734238)

Hata Düzeltmeleri

  • Birden fazla geri çağırma yığınını destekleme kapsamında saveBackStack() çağrısının, replace() kullanan bir FragmentTransaction çalıştırılırken aynı anda yapıldığında başarısız olmasına neden olan sorun düzeltildi. (I73137)
  • Birden fazla geri yığın desteği için restoreBackStack() API'si kullanılırken birden fazla işlem içeren kaydedilmiş bir geri yığın manuel olarak geri yüklendikten sonra oluşan NullPointerException düzeltildi. Bu düzeltme, setReorderingAllowed(true) tüm işlemler için kontrol edilmemesine neden olan sorunu da giderdi. (I8c593)
  • FragmentManager öğesinden kaldırılan parçalardan sonra bile FragmentManager öğesinin daha önce kaydedilmiş durumunu yanlış şekilde geri yüklemeye devam etmesi ve bu nedenle kaydedilmiş durumun zaman içinde sürekli olarak büyümesine neden olması sorunu düzeltildi. (I1fb8e)

Sürüm 1.4.0-alpha03

16 Haziran 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 ve androidx.fragment:fragment-testing:1.4.0-alpha03 özellikleri kullanıma sunulur. 1.4.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Tüm Fragment StrictMode Violation sınıfları, ihlalin ayrıntılarını açıklayan daha ayrıntılı hata mesajlarıyla güncellendi. (b/187871638)
    • FragmentTagUsageViolation artık parçanın ekleneceği üst kapsayıcıyı içeren daha ayrıntılı bir hata mesajı içeriyor. (Ic33a7)
    • WrongFragmentContainerViolation artık parçanın eklendiği kapsayıcıyı içeren daha ayrıntılı bir hata mesajına sahip. (Ib55f8)
    • TargetFragmentUsageViolation Kullanım alanı sınıfları artık ihlale neden olan parçayı ve içerdiği diğer bilgileri içeren daha ayrıntılı hata mesajlarına sahip. (Icc6ac)
    • RetainInstanceUsageViolation sınıfını genişleten sınıflar artık ihlale neden olan parçayı içeren daha ayrıntılı hata mesajlarına sahip. (I6bd55)
    • FragmentReuseViolation artık daha ayrıntılı bir hata mesajı içeriyor. Bu mesajda, parçanın önceki kimliği de yer alıyor. (I28ce2)
    • SetUserVisibleHintViolation artık kullanıcının görebileceği ipucunun neye ayarlandığını içeren daha ayrıntılı bir hata mesajına sahip. (Ib2d5f)

Davranış Değişiklikleri

  • fitsSystemWindows üzerinde FragmentContainerView çağrısı yapma kısıtlaması geri alındı. Bu işlem artık uygulamanızın kilitlenmesine neden olmuyor. (6b8ddd, b/190622202)

Hata Düzeltmeleri

  • Fragment 1.3.5: aosp/1679887 tarafından Fragment 1.3.4'da kullanıma sunulan paylaşılan öğe geçişlerindeki regresyon düzeltildi. Parçalar artık geçiş gruplarını (doğrudan transitionGroup="true" aracılığıyla veya dolaylı olarak transitionName ya da background aracılığıyla ayarlanan) doğru şekilde işliyor ve paylaşılan öğeler artık IndexOutOfBoundsException hata vermiyor. (I16484, b/188679569, b/188969304)
  • FragmentManager, artık bir kaldırma parçasını gizlemeye çalıştığınızda kilitlenmeyecek. (I573dd, b/183634730)
  • OnCreateDialogIncorrectCallback Lint denetimi, üst düzey bir değişken değerlendirilirken artık kilitlenmeyecek. (0a9efa, b/189967522)

Sürüm 1.4.0-alpha02

2 Haziran 2021

androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 ve androidx.fragment:fragment-testing:1.4.0-alpha02 özellikleri kullanıma sunulur. 1.4.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentStrictMode, FragmentManager üzerinden günlük kaydı etkinleştirildiğinde, kullanılan mevcut yüksek düzey mod politikasına bakılmaksızın ihlalleri her zaman günlüğe kaydeder. (I02df6, b/187872638)
  • FragmentStrictMode artık belirli Fragment sınıfların yüksek düzey modu Violationdan muaf tutulmasını destekliyor. Bu sayede, söz konusu sınıflar ceza almadan yüksek düzey modu atlayabiliyor. (Ib4e5d, b/184786736)

  • FragmentStrictMode Violation sınıfı, her ihlale dayalı yapı bilgileri eklemek için genişletildi. Bu sayede, ihlale neden olan unsuru ve ihlalde bulunan parçayı (If5118, b/187871150) tam olarak doğrulayabilirsiniz. Her Violation aşağıdaki bilgileri içerir:

    • WrongFragmentContainerViolation artık Fragment'ın eklenmeye çalıştığı ViewGroup'ı içeriyor. (I83c75, b/187871150)
    • TargetFragmentUsageViolation, SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation ve GetTargetFragmentRequestCodeUsageViolation olarak genişletildi. SetTargetFragmentUsageViolation, hedef parçayı ve istek kodunu içerir. (I741b4, b/187871150)
    • SetUserVisibleHintViolation artık setUserVisibleHint() içine iletilen Boole değerini içeriyor. (I00585, b/187871150)
    • FragmentTagUsageViolation artık <fragment> etiketinin bir parçayı genişletmeye çalıştığı ViewGroup'u içeriyor.(I5dbbc, b/187871150)
    • FragmentReuseViolation artık ihlale neden olan önceki Fragment örneğinin benzersiz kimliğini içeriyor. (I0544d, b/187871150)
    • RetainInstanceUsageViolation artık soyuttur ve ihlal türüyle ilgili iki durumu temsil eden SetRetainInstanceUsageViolation ve GetRetainInstanceUsageViolation olmak üzere iki alt sınıfı vardır. (Ic81e5, b/187871150)

Davranış Değişiklikleri

  • FragmentContainerView özelliği programatik olarak veya XML aracılığıyla değiştirilmeye çalışıldığında artık istisna oluşturuyor.fitsSystemWindow Yerleştirmeler, her bir parçanın görünümü tarafından işlenmelidir. (Ie6651, b/187304502)

Sürüm 1.4.0-alpha01

18 Mayıs 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 ve androidx.fragment:fragment-testing:1.4.0-alpha01 özellikleri kullanıma sunulur. 1.4.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentContainerView artık kapsayıcıya en son eklenen parçayı döndüren bir getFragment() yöntemi sunuyor. Bu işlev, FragmentContainerView kimliğiyle findFragmentById() ile aynı mantığı kullanır ancak çağrının zincirlenmesine izin verir. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Eklendi FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} Temanızdan alınan standart Etkinlik geçişi animasyonunun Parçalar geçişinde etkinleştirilip etkinleştirilmeyeceğini belirtmek için. (I46652)

Birden fazla geri yığın

FragmentManager, addToBackStack() kullanılan parça işlemlerinden oluşan bir geri yığın tutar. Bu sayede, Durumu parçalarla kaydetme mekanizmalarını kullanarak bu işlemleri pop edebilir ve önceki duruma dönebilirsiniz. Böylece parçalarınız durumlarını uygun şekilde geri yükleyebilir.

Bu sürüm, FragmentManager ve restoreBackStack(String name) olmak üzere iki yeni saveBackStack(String name) API'si sunarak bu mekanizmaları genişletiyor. Bu API'ler, name ile aynı addToBackStack()'yi kullanarak FragmentTransaction'nin durumunu ve bu işlemlerde eklenen her parçanın durumunu kaydeder. Böylece, bu işlemleri ve parçalarını daha sonra durumları bozulmadan geri yükleyebilirsiniz. Bu sayede, geçerli geri yığını kaydedip kaydedilmiş bir geri yığını geri yükleyerek birden fazla geri yığın arasında etkili bir şekilde "geçiş" yapabilirsiniz.

saveBackStack(), popBackStack() ile benzer şekilde çalışır. Yani eşzamansızdır ve bu ada geri dönen tüm parça işlemlerinin geri alınmasına ("popped") ve eklenen tüm parçaların yok edilip kaldırılmasına neden olur. Ancak birkaç önemli açıdan farklılık gösterir:

  • saveBackStack() her zaman dahil edilir.
  • Belirtilen ad geri yığında bulunmazsa veya null ad sağlanırsa geri yığındaki tüm işlemleri açan popBackStack()'dan farklı olarak, daha önce addToBackStack() ile tam olarak aynı ve null olmayan bir ad kullanarak parça işlemi yapmadıysanız saveBackStack() hiçbir işlem yapmaz.
  • Bu işlemlerden eklenen tüm parçaların durumu kaydedilir. Bu, her parçanın görünüm durumunun depolandığı, her parçanın onSaveInstanceState() işlevinin çağrıldığı ve durumun geri yüklendiği, bu parçalarla ilişkili tüm ViewModel örneklerinin tutulduğu (ve bunlar üzerinde onCleared() işlevinin çağrılmadığı) anlamına gelir.

saveBackStack() ile kullanılabilen parça işlemlerin belirli ölçütleri karşılaması gerekir:

  • İşlemlerin tek bir atomik işlem olarak geri yüklenebilmesi için her parça işleminde setReorderingAllowed(true) kullanılmalıdır.
  • Kaydedilen işlemlerin daha sonraki bir zamanda geri yüklenebilmesi için kendi içinde tutarlı olması gerekir (yani, bu işlem kümesinin dışındaki parçalara açıkça referans vermemelidir). Bu sayede, arada geçen sürede geri yığında yapılan değişikliklerden bağımsız olarak işlemler geri yüklenebilir.
  • FragmentManager, geri yığın kaydedildikten sonra kaydedilmiş parçalara herhangi bir referans döndürmemesini sağlamak için kaydedilen hiçbir parça saklanan bir parça olamaz veya geçişli alt parça kümesinde saklanan bir parça bulunamaz.

saveBackStack() işlevine benzer şekilde, daha önce aynı adla saveBackStack() işlevini çağırmadıysanız restoreBackStack() işlevi hiçbir şey yapmaz. (b/80029773)

Fragment StrictMode

FragmentStrictMode API'leri, uygulamanızın veya bağlı olduğunuz kitaplıkların kullanımdan kaldırılan parça API'lerini çağırmadığını doğrulamanıza olanak tanıyan çalışma zamanı kontrolleri sağlar. İhlal tespit edildiğinde bir günlük mesajı yazdırmayı, kendi özel dinleyicinizi tetiklemeyi veya uygulamanızın kilitlenmesini seçebilirsiniz. Hangi kontrollerin etkinleştirileceğini ve hangi "cezaların" tetikleneceğini kontrol eden FragmentStrictMode.Policy, yeni setStrictModePolicy() yöntemiyle FragmentManager üzerinde ayarlanabilir. Bu politika, söz konusu FragmentManager için ve kendi benzersiz politikasını ayarlamayan tüm alt parça yöneticileri için geçerlidir. (#123, #131, #150, b/143774122)

  • detectFragmentReuse(), daha önce kaldırılmış bir Fragment örneğinin FragmentManager'ye yeniden eklenip eklenmediğini algılar. Bir Fragment örneği yok edildikten ve bir FragmentManager'den kaldırıldıktan sonra bu örnekle hiçbir zaman etkileşimde bulunmamalı veya bu örneğe referans vermemelisiniz. (#142, b/153738653)
  • detectFragmentTagUsage(), düzen XML'nizde <fragment> etiketini kullandığınızda bunu algılar. Düzeninizin bir parçası olarak parçaları genişletirken her zaman FragmentContainerView kullanmanız gerekir. (#141, b/153738235)
  • detectWrongFragmentContainer(), FragmentContainerView olmayan bir kapsayıcıya parça eklediğinizde bunu algılar. Düzeninizdeki parçalar için her zaman FragmentContainerView kapsayıcısını kullanmanız gerekir. (#146, b/181137036)
  • detectRetainInstanceUsage(), desteği sonlandırılmış setRetainInstance() veya getRetainInstance() API'lerini kullandığınızda sizi uyarır. (#140, b/153737954)
  • detectSetUserVisibleHint(), kullanımdan kaldırılan setUserVisibleHint() API'sini kullandığınızda bunu algılar. (#136, b/153738974)
  • detectTargetFragmentUsage(), getTargetFragment() veya getTargetRequestCode() API'lerini kullandığınızda bunu algılar.setTargetFragment() (#139, b/153737745)

API Değişiklikleri

Yeni hata analizi kontrolleri

  • UseGetLayoutInflater Lint kontrolü artık DialogFragment içinde LayoutInflater.from(Context) kullanıldığında uyarı veriyor. LayoutInflater için uygun olanı almak üzere her zaman iletişim kutusu parçasının getLayoutInflater() yöntemini kullanmanız gerekir. (#156, b/170781346)
  • DialogFragmentCallbacksDetector Lint kontrolü artık DialogFragment sınıfının onCreateDialog() yönteminde setOnCancelListener veya setOnDismissListener çağrıldığında uyarı veriyor. Bu dinleyiciler DialogFragment sınıfına aittir ve bu geri aramaları almak için onCancel() ve onDismiss() yöntemlerini geçersiz kılmanız gerekir. (#171, b/181780047, b/187524311)

Hata Düzeltmeleri

  • Fragment 1.3.4: ViewTreeViewModelStoreOwner.get() API'si ViewModelProvider ile veya bir Fragment içinde viewModel() Jetpack Compose yöntemiyle kullanılırken Fragment 1.3.3'da ortaya çıkan regresyon düzeltildi. Bu kullanım alanları artık ViewModelProvider.Factory tarafından sağlanan getDefaultViewModelProviderFactory()'yi geçersiz kılıyorsa (@AndroidEntryPoint ek açıklamalı parçalar Hilt kullanırken yaptığı gibi) doğru şekilde kullanıyor. Bu yöntemi geçersiz kılmıyorsanız varsayılan fabrika olarak, Fragment'ın görünümüyle birlikte durumunu kaydedip geri yükleyen bir SavedStateViewModelFactory oluşturulur. (I5cbfa, b/186097368)
  • Fragment 1.3.4'ten itibaren: API 29'da FragmentContainerView kullanılırken artık sonsuza kadar yerleştirme gönderilmeyecek. Böylece BottomNavigationBar ve FloatingActionButton örnekleriyle ilgili sorunlar düzeltilecek. (I1bb78, b/186012452)
  • Fragment 1.3.4: Artık işlem sonlandırıldıktan sonra Parcelable'ınızı parça sonucu paketinden alabilirsiniz. (I65932, b/187443158)
  • Fragment 1.3.4 sürümünden itibaren: ViewGroup üzerinde paylaşılan öğe geçişi yapılırken ViewGroup'un transitionGroup değeri false olarak ayarlanmışsa artık düzgün şekilde geçiş yapılır. (I99675)

Harici Katkı (External Contribution)

Sürüm 1.3

Sürüm 1.3.6

21 Temmuz 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 ve androidx.fragment:fragment-testing:1.3.6 özellikleri kullanıma sunulur. 1.3.6 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parça 1.4.0-alpha03: Kaldırılan bir parçayı gizlemeye çalıştığınızda FragmentManager artık kilitlenmeyecek. (I573dd, b/183634730)
  • Kök görünümde transitionGroup=”true” ayarlandığında hide() kullanılırken Fragment'ın görünümü artık GONE olarak doğru şekilde ayarlanıyor. (aosp/1766655, b/193603427)
  • FragmentActivity artık yaşam döngüsü geri çağırmalarında geçersiz kıldığı ilk işlem olarak her zaman kayıtlı durumu kilidini açar. (I6db7a)

Bağımlılık güncellemesi

Sürüm 1.3.5

16 Haziran 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 ve androidx.fragment:fragment-testing:1.3.5 özellikleri kullanıma sunulur. 1.3.5 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Fragment 1.3.4'ta aosp/1679887 tarafından sunulan paylaşılan öğe geçişlerindeki gerileme düzeltildi. Parçalar artık geçiş gruplarını (doğrudan transitionGroup="true" aracılığıyla veya dolaylı olarak transitionName ya da background aracılığıyla ayarlanan) doğru şekilde işliyor ve paylaşılan öğeler artık IndexOutOfBoundsException hata vermiyor. (I16484, b/188679569, b/188969304)

Sürüm 1.3.4

18 Mayıs 2021

androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 ve androidx.fragment:fragment-testing:1.3.4 özellikleri kullanıma sunulur. 1.3.4 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Hilt kullanılırken ViewTreeViewModelStoreOwner.get() API'si ViewModelProvider ile veya bir Fragment içinde viewModel() Jetpack Compose yöntemiyle kullanıldığında Fragment 1.3.3 içinde ortaya çıkan bir regresyon düzeltildi. Bu kullanım alanları artık getDefaultViewModelProviderFactory() öğesini geçersiz kılıyorsa Fragment'ınız tarafından sağlanan ViewModelProvider.Factory öğesini doğru şekilde kullanıyor (@AndroidEntryPoint ile açıklama eklenmiş Fragment'lar gibi). Bu yöntemi geçersiz kılmıyorsanız varsayılan fabrika olarak, Fragment'ın görünümüyle birlikte durumunu kaydedip geri yükleyen bir SavedStateViewModelFactory oluşturulur. (I5cbfa, b/186097368)
  • API 29'da FragmentContainerView kullanılırken artık ekler süresiz olarak gönderilmeyecek. Böylece, BottomNavigationBar ve FloatingActionButton örnekleriyle ilgili sorunlar düzeltilecek. (I1bb78, b/186012452)
  • Artık işlem sonlandırıldıktan sonra Parcelable'ınızı fragment sonucu paketinden alabilirsiniz. (I65932, b/187443158)
  • Bir ViewGroup'da paylaşılan öğe geçişi yapılırken ViewGroup'un transitionGroup değeri false olarak ayarlanmışsa artık düzgün şekilde geçiş yapılır. (I99675)

Sürüm 1.3.3

21 Nisan 2021

androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 ve androidx.fragment:fragment-testing:1.3.3 özellikleri kullanıma sunulur. 1.3.3 sürümü şu commit'leri içerir.

Yeni Özellikler

  • SavedStateViewModelFactory artık ViewTreeSavedStateRegistryOwner.get() ile Fragment's View kullanılarak döndürülen SavedStateRegistryOwner ile birlikte kullanıldığında çalışıyor. (I21acf, b/181577191)

Hata Düzeltmeleri

  • Fragment 1.3.2'te kullanıma sunulan ve NavHostFragment tarafından kullanılanlar gibi setPrimaryNavFragment işlemi içeren bir FragmentTransaction açılırken popEnter animasyonlarının çalışmamasına neden olan regresyon düzeltildi. (I38c87, b/183877426)
  • FragmentContainerView artık her Fragment için yeni bir WindowInsets kümesi gönderilmesini sağlayarak her parçanın artık ekleri bağımsız olarak kullanabilmesini sağlar. (I63f68, b/172153900)
  • DialogFragment artık bir alt parçanın, özel Dialog sınıfınızdaki bir kapsayıcıyla aynı kimliğe sahip bir kapsayıcıya eklendiği durumları düzgün şekilde işliyor. Böylece, BottomSheetDialog gibi iletişim kutuları tarafından dahili olarak kullanılan kimliklerin yeniden kullanılmasıyla ilgili görünüm hiyerarşisi sorunları düzeltiliyor. (Ie6279, b/180021387)
  • FragmentManager.dump() artık etkin parçalar listesindeki ilk parçayı düzgün şekilde girintiliyor. (If5c33, b/183705451)

Yeni State Manager hata düzeltmeleri

  • Yeni parça durumu yöneticisi artık çıkış geçişlerini gizleme işlemleriyle düzgün şekilde işliyor. (I9e4de, b/184830265)

Sürüm 1.3.2

24 Mart 2021

androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 ve androidx.fragment:fragment-testing:1.3.2 özellikleri kullanıma sunulur. 1.3.2 sürümü şu commit'leri içerir.

Yeni State Manager hata düzeltmeleri

  • Hem popBackStack() hem de commit() işlemleri birlikte çalıştırıldığında, son işlem artık bazı pop animasyonlarını ve bazı giriş animasyonlarını çalıştırmak yerine tüm animasyonların yönünü ayarlayacak. (I7072e, b/181142246)
  • Paylaşılan öğe hiyerarşisindeki görünümler, paylaşılan öğe geçişi sırasında artık geçiş adlarını temizlemeyecek. (I4d4a6, b/179934757)

Bağımlılık Güncellemeleri

  • Fragment artık Activity 1.2.2'ye bağlıdır. Bu sayede, Fragment 1.3.1 veya daha yeni bir sürüm kullanılırken Activity'nin InvalidFragmentVersionForActivityResult lint kontrolüyle ilgili bir sorun düzeltilir.
  • Fragment artık Lifecycle 2.3.1'e bağlıdır.

Sürüm 1.3.1

10 Mart 2021

androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 ve androidx.fragment:fragment-testing:1.3.1 özellikleri kullanıma sunulur. 1.3.1 sürümü şu commit'leri içerir.

Yeni Özellikler

  • DialogFragment içindeki iletişim kutuları artık DecorView'ları aracılığıyla ViewTree sahiplerine erişebilir. Bu sayede DialogFragment, ComposeView ile kullanılabilir. (Ib9290, b/180691023)

Hata Düzeltmeleri

  • FragmentContainerView kullanılarak zaten RESUMED etkinliğine yerleştirilmiş parçalar, yapılandırma değişikliğinden sonra artık düzgün şekilde gösteriliyor. (Ie14c8, b/180538371)
  • Parçanın sonunda artık fazladan bir } yok toString() (I54705, b/177761088)
  • FragmentActivity'deki geçersiz kılınan yöntemler artık temel yöntem javaDoc'u düzgün şekilde devralıyor (I736ce, b/139548782)
  • setFragmentResult ve setFragmentResultListener ile ilgili dokümanlar, artık null değerleri kabul etmediklerini yansıtacak şekilde parametre dokümanlarını güncelledi (I990ba, b/178348386).

Yeni State Manager hata düzeltmeleri

  • mFocusedView nedeniyle parçalarda oluşan bellek sızıntısı düzeltildi (Ib4e9e, b/179925887).
  • Parçalar artık işlemleri gösterme/gizleme (I8bce8, b/180255554) kullanılırken onCreateOptionsMenu işlevini düzgün şekilde çağırıyor.
  • Parça düzenlenmeden önce başlayan geçişlere sahip alt parçalar artık düzgün şekilde RESUMED'ya ulaşacak (Ic11e6, b/180825150).
  • <fragment> etiketi kullanılarak şişirilen parçalar artık her zaman RESUMED'a ulaşacak (I452ac, (I9fa49)

Bağımlılık Güncellemeleri

Sürüm 1.3.0

10 Şubat 2021

androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 ve androidx.fragment:fragment-testing:1.3.0 özellikleri kullanıma sunulur. 1.3.0 sürümü şu commit'leri içerir.

1.2.0 sürümünden beri yapılan önemli değişiklikler

  • Yeni State Manager: FragmentManager'in iç kısımlarının önemli ölçüde yeniden yazılmasıyla yaşam döngüsü etkinliklerinin, animasyonların ve geçişlerin gönderilmesiyle ilgili çok sayıda sorun ve ertelenen parçaların işlenme şekli düzeltildi.
  • Activity Result API Entegrasyonu: ActivityResultRegistry API'si için destek eklendi. Bu API, Activity 1.2.0'de kullanıma sunulmuştu. Bu API ile, startActivityForResult()+onActivityResult() ve requestPermissions()+onRequestPermissionsResult() akışlarını Fragment'inizdeki yöntemleri geçersiz kılmadan işleyebilir ve bu akışları test etmek için kancalar sağlayabilirsiniz. Güncellenen Bir Etkinlikten Sonuç Alma başlıklı makaleyi inceleyin.

    • Bu sürümde, Activity Result API'nin FragmentActivity'nın önceki sürümlerinde çalışmasını engelleyen geçersiz istek kodları ve izin isteklerinin gönderilmesiyle ilgili çeşitli sorunlar düzeltilmiştir. Activity Result API'lerini FragmentActivity veya AppCompatActivity içinde kullanmak için Fragment 1.3.0'a yükseltmeniz gerekir.
  • Fragment Result API: FragmentManager üzerindeki yeni API'ler aracılığıyla sonuçların iki Fragment arasında aktarılması için destek eklendi. Bu, hiyerarşi parçaları (üst/alt), DialogFragment'lar ve Gezinme'deki parçalar için geçerlidir. Ayrıca, sonuçların yalnızca Fragment'ınız en az STARTED durumundayken gönderilmesini sağlar. Hedef fragment API'leri, bu yeni API'ler lehine kullanımdan kaldırıldı. Parça Sonucu API'sini kullanarak sonuç alma başlıklı makaleyi inceleyin.

  • FragmentOnAttachListener: FragmentActivity ve Fragment üzerindeki onAttachFragment() geri çağırma işlevinin desteği sonlandırıldı. Daha esnek bir alternatif sunmak için yeni bir FragmentOnAttachListener eklendi. Bu sayede onAttachFragment(), ayrı ve test edilebilir dinleyicilere devredilebiliyor ve doğrudan alt FragmentManager'ınızın dışındaki FragmentManager'lara dinleyici ekleme desteği sağlanıyor.

  • FragmentScenario İyileştirmeler: fragment-testing yapıtındaki FragmentScenario sınıfı Kotlin ile yeniden yazıldı ve çeşitli iyileştirmeler yapıldı:

    • FragmentScenario artık moveToState()'i uygulamak için setMaxLifecycle() kullanıyor. Bu sayede, tüm API düzeylerinde tutarlı davranış sağlanıyor ve Fragment'ın durumu temel Activity'den ayrılıyor.
    • FragmentScenario artık ilk kez her Lifecycle.State öğesine geçmeden önce parçanın durumunu onaylamayı desteklemek için başlangıç Lifecycle.State ayarlanmasını destekliyor.
    • Artık bir değer döndürmenize olanak tanıyan Kotlin reified uzantı yöntemi withFragment biçiminde, onFragment FragmentScenario API'sinin bir alternatifi bulunmaktadır. Özellikle, belirtilen blokta oluşturulan istisnaları yeniden oluşturur.
  • ViewTree Support: Fragment artık ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View) ve ViewTreeSavedStateRegistryOwner API'lerini destekliyor. Bu API'ler Lifecycle 2.3.0 ve SavedState 1.1.0'e eklenmişti. Bu sayede, Fragment içinde View kullanılırken Fragment'ı ViewModelStoreOwner olarak, SavedStateRegistryOwner ve LifecycleOwner'ı da fragment'ın view Lifecycle'ına bağlı olarak döndürecek.

  • TRANSIT_ animasyon değişiklikleri: Parçanın varsayılan efektleri olan TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE ve TRANSIT_FRAGMENT_FADE artık Animation yerine Animator kullanıyor. Bu animasyonları oluşturmak için kullanılan kaynaklar artık gizli.

  • setRetainInstance() desteğinin sonlandırılması: Parçalardaki setRetainInstance() yönteminin desteği sonlandırıldı. ViewModels'in kullanıma sunulmasıyla birlikte geliştiriciler, durumun korunması için Etkinlikler, Parçalar ve Gezinme grafikleriyle ilişkilendirilebilen belirli bir API'ye sahip oldu. Bu sayede geliştiriciler, tutulmayan normal bir Fragment kullanabilir ve tutulmasını istedikleri belirli durumu ayrı tutabilir. Böylece, tutulan durumun tek bir oluşturma ve yok etme işleminin faydalı özelliklerini (yani ViewModel oluşturucusu ve aldığı onCleared() geri çağırması) korurken yaygın bir sızıntı kaynağı önlenir.

  • ViewPager 1 bağdaştırıcısının desteğinin sonlandırılması: ViewPager2 1.0.0'nin yayınlanmasıyla birlikte ViewPager ile etkileşim için kullanılan FragmentPagerAdapter ve FragmentStatePagerAdapter sınıflarının desteği sonlandırıldı. ViewPager'dan ViewPager2'ye taşıma başlıklı makaleyi inceleyin.

Sürüm 1.3.0-rc02

27 Ocak 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 ve androidx.fragment:fragment-testing:1.3.0-rc02 özellikleri kullanıma sunulur. 1.3.0-rc02 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Yapılandırma değişikliğinden sonra bir ebeveyn DialogFragment öğesinin bir alt öğe DialogFragment üzerinde görünmesine neden olan sorun düzeltildi. Alt öğe iletişim kutusu parçaları artık her zaman ebeveyn iletişim kutusu parçalarının üzerinde görünüyor. (I30806, b/177439520)
  • hide işlemi yapmanın, Animation ile birlikte kullanıldığında gizleme parçasının animasyonun sonunda yanıp sönmesine neden olması sorunu düzeltildi. (I57e22, b/175417675)
  • Görünüm hiyerarşisi eklenmeden önce geçişler eklenen parçalar artık RESUMED'a doğru şekilde ulaşıyor. (I1fc1d, b/177154873)

Yeni State Manager hata düzeltmeleri

  • Fragment'ın görünümü Lifecycle artık Fragment'ın görünümünün Lifecycle CREATED'e ulaşmadan önce yok edildiği durumları düzgün şekilde işleyerek "INITIALIZED'den aşağıya doğru etkinlik yok" ifadesini içeren istisnaları önlüyor. (eda2bd, b/176138645)
  • Animator kullanan parçalar artık FragmentContainerView kullanılırken doğru sırada görünüyor. (Id9aa3, b/176089197)

Sürüm 1.3.0-rc01

16 Aralık 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 ve androidx.fragment:fragment-testing:1.3.0-rc01 özellikleri kullanıma sunulur. 1.3.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • onPrepareOptionsMenu() artık onCreateOptionsMenu() ile aynı mantığı izliyor ve bir üst parça setMenuVisibility(false) öğesini çağırdığında artık çağrılmıyor. (Id7de8, b/173203654)

Yeni State Manager hata düzeltmeleri

  • Animation içeren bir parçayı FragmentContainerView öğesine eklerken ve ardından bu ekleme işlemini bir pop işlemiyle kesintiye uğratırken oluşan sızıntı ve görsel yapaylık sorunu düzeltildi. (I952d8)
  • Parçanın görünümünün, onCreate() veya onViewCreated() yöntemleri sırasında değiştirilmesi durumunda görünüm hiyerarşisinde kalmasına neden olan sorun düzeltildi. (I8a7d5)
  • Odak artık devam ettirildiklerinde Fragment kök görünümlerine düzgün şekilde geri yükleniyor. (Ifc84b)
  • Aynı parça işleminde pop ve değiştirme işlemlerinin birleştirilmesi artık uygun animasyonları (Ifd4e4, b/170328691) gösterecek.

Sürüm 1.3.0-beta02

2 Aralık 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 ve androidx.fragment:fragment-testing:1.3.0-beta02 yayınlandı. 1.3.0-beta02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentScenario, Kotlin 1.4'ün FragmentAction için işlevsel arayüzleri kullanılarak kaynak ve ikili uyumluluk korunurken tamamen Kotlin'e dönüştürüldü. (I19d31)

Davranış Değişiklikleri

  • Artık class veya android:name özelliğini kullanarak bir parçayı genişletmeyen FragmentContainerView'lar FragmentActivity dışında kullanılabilir. (Id4397, b/172266337)
  • Bir parçanın maksimum yaşam döngüsünü DESTROYED olarak ayarlamaya çalışıldığında artık IllegalArgumentException hatası verilecek (Ie7651, b/170765622).
  • Artık DESTROYED durumuyla bir FragmentScenario başlatıldığında IllegalArgumentException istisnası oluşturulacak (I73590, b/170765622).

Yeni State Manager hata düzeltmeleri

  • Animator veya TRANSIT_FRAGMENT_ seçeneklerinden birini kullanan bir parça geçişini kesintiye uğratırsanız görünümün son durumuna ulaşmamasına neden olan sorun düzeltildi. (I92426, b/169874632)
  • Çıkış Animation animasyonu içeren parçaların düzgün şekilde yok edilmesini engelleyen sorun düzeltildi. (I83d65)
  • Efektleri tersine çevrilmiş çıkış parçaları artık doğru şekilde iptal ediliyor ve uygun giriş efektiyle yeniden başlatılıyor. (I62226, b/167092035)
  • Bir hide() öğesinin çıkışının Animator çalışmamasına neden olan sorun düzeltildi. (Id7ffe)
  • Parçalar artık ertelendikten sonra hemen başlatıldığında düzgün şekilde gösteriliyor. (Ie713b, b/170022857)
  • Animasyon sırasında odaklanmış görünümünü kaldıran parçalar, RESUMED'ya ulaştıktan sonra ayrılmış görünümdeki odağı geri yüklemeye çalışmayacak (I38c65, b/172925703).

Harici Katkı (External Contribution)

  • FragmentFactory artık farklı ClassLoader örnekleri için parça sınıflarını ayrı ayrı önbelleğe alıyor. Teşekkürler Simon Schiller! (#87, b/113886460)

Sürüm 1.3.0-beta01

1 Ekim 2020

androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 ve androidx.fragment:fragment-testing:1.3.0-beta01 özellikleri kullanıma sunulur. 1.3.0-beta01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • setMaxLifecycle() artık parça CREATED'e taşınmadığı sürece Lifecycle durumunun INITIALIZING olarak ayarlanmasını destekliyor. (b/159662173)

API Değişiklikleri

Davranış Değişiklikleri

  • Parça kaynak dosyaları doğru şekilde gizli hale getirilmiştir. (aosp/1425237)

Hata Düzeltmeleri

  • <fragment> etiketi kullanılarak şişirilen parçalar artık STARTED'a (I02f4c) geçmeden önce görünümlerinin bir kapsayıcıya eklenmesini düzgün bir şekilde bekleyecek.
  • Görünür olan ve ardından setMaxLifecycle() ile CREATED arasında geçiş yapan parçalar artık çıkış efektlerini düzgün şekilde çalıştırıyor. (b/165822335)
  • Geri yığına eklenmemiş ayrılmış bir parçanın kaldırılması artık bellek sızıntısına neden olmuyor. Nicklas Ansman Giertz'in izniyle (b/166489383)
  • Etkin parçalarda artık her zaman sıfır olmayan bir FragmentManager olacak ve sıfır olmayan bir FragmentManager içeren parçalar her zaman etkin kabul edilecek. (aosp/1422346)
  • Parça varsayılan efektleri TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE ve TRANSIT_FRAGMENT_FADE artık Animation yerine Animator kullanıyor. (b/166155034)

Yeni State Manager hata düzeltmeleri

  • Parçalar artık animasyonlarına başlamadan hemen önceki görünüm odak durumunu doğru şekilde geri yüklüyor. (Icc256)
  • Artık yalnızca paylaşılan öğe geçişine sahip olan parçalar, özel efektlerini düzgün şekilde tamamlayarak son durumlarına geçiyor (Iaebc7, b/166658128).
  • Parça görünümleri artık yok edilmeden önce her zaman kapsayıcıdan kaldırılıyor. (Id5876)
  • Yeni durum yöneticisi, artık çıkış yapan parçalanmış görünümü, giriş yapanı eklemeden önce tutarlı bir şekilde kaldırıyor. (I41a6e)
  • Bir parça görünümünün görünürlüğünde yapılan açık değişiklikler artık yeni durum yöneticisi tarafından dikkate alınıyor. Bu nedenle, animasyon başlamadan önce giren bir parçanın görünümünü INVISIBLE olarak ayarlarsanız bu parça görünmez kalır. (b/164481490)
  • Parçalar artık Animators öğesine Animations öğesinden daha fazla öncelik veriyor. Yani her ikisini de içeren bir parça yalnızca Animator öğesini çalıştıracak ve Animation öğesini yoksayacak. (b/167579557)
  • Yeni durum yöneticisi, giriş animasyonları kullanılırken artık parçaların yanıp sönmesine neden olmuyor. (b/163084315)

Bilinen Sorun

Yeni durum yöneticisini kullanırken özel efekt girme sırasında önceki parçaya dönmek yerine geri tuşuna basarsanız eski parça hiçbir zaman yeniden eklenmez ve ekran boş kalır. (b/167259187, b/167092035, b/168442830)

Sürüm 1.3.0-alpha08

19 Ağustos 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 ve androidx.fragment:fragment-testing:1.3.0-alpha08 özellikleri kullanıma sunulur. 1.3.0-alpha08 sürümü şu commit'leri içerir.

Yeni State Manager

Bu sürümde, FragmentManager'nın dahili durum yönetiminde büyük bir yeniden düzenleme yapıldı. Bu düzenleme, yaşam döngüsü yöntemlerinin, animasyonların ve geçişlerin gönderilmesini ve ertelenen işlemlerin nasıl işlendiğini etkiler. Bu ayar varsayılan olarak etkindir. Daha fazla bilgi için Fragments: Rebuilding the Internals blog yayınını inceleyin. (b/139536619, b/147749580)

  • FragmentManager.enableNewStateManager(boolean) içindeki deneysel bir API, FragmentManager'ın yeni durum yöneticisini kullanıp kullanmayacağını kontrol etmek için kullanılabilir. (I7b6ee)

Aşağıdaki sorunlar yalnızca yeni durum yöneticisi kullanılırken düzeltilir:

  • replace işleminin önceki parçası, yeni parça başlatılmadan önce artık doğru şekilde durduruluyor. (b/161654580)
  • Parçalar artık aynı parçalarda birden fazla rekabet eden animasyonu önleyerek Animation öğesinin tüm Transition efektlerini geçersiz kıldığı veya tek bir parçada hem Animator hem de Transition öğesinin çalıştığı durumları engelliyor. (b/149569323)
  • Giren ve çıkan tüm parçaların enterTransition ve exitTranstion değerleri artık yalnızca son giren ve ilk çıkan parçalar yerine tüm parçalar için çalıştırılıyor. (b/149344150)
  • Ertelenen parçalar artık CREATED durumunda takılı kalmıyor, bunun yerine diğer parçalarla birlikte STARTED durumuna geçiyor. (b/129035555)
  • FragmentManager, ertelenmiş yeniden sıralanmış bir işlem ile yeniden sıralanmamış bir işlem karıştırıldığında işlemlerin sırasını karıştırıyordu. Bu sorun düzeltildi. (b/147297731)
  • Birden fazla parçayı aynı anda kaldırma işlemi, parçaları ertelediğinizde artık ara parçaların geçici olarak görünmesine neden olmayacak. (b/37140383)
  • FragmentManager artık onAttachFragment() geri çağırma işlevi içinden findFragmentById() veya findFragmentByTag() çağrıldığında doğru parçaları döndürüyor. (b/153082833)
  • Parçalar, kendilerini değiştiren parça ertelendiğinde artık yok edilen parçalarda onCreateView() işlevini çağırmıyor. (b/143915710)
  • Çerçeve Transition ve AndroidX Transition örnekleri birleştirilmeye çalışıldığında gösterilen hata mesajında artık geçersiz geçişe sahip parça belirtiliyor. (b/155574969)

Davranış Değişiklikleri

  • Artık bir parçanın onCreate() yaşam döngüsü yönteminde ActivityResultLauncher içinde launch() çağırabilirsiniz. (b/161464278)
  • onCreate() işleminden sonra registerForActivityResult() çağrıldığında artık yapılandırma değişikliğinden sonra sonuçların sessizce iletilememesi yerine bunun izin verilmediğini belirten bir istisna oluşturuluyor. (b/162255449)
  • FragmentActivity, OnContextAvailableListener durumunu geri yüklemek için Activity 1.2.0-alpha08'de kullanıma sunulan OnContextAvailableListener API'sini kullanır.FragmentManager FragmentActivity alt sınıflarına eklenen tüm dinleyiciler bu dinleyiciden sonra çalışır. (I513da)

Hata Düzeltmeleri

  • ActivityOptions, startIntentSenderForResult() kullanılırken iletildiğinde artık dikkate alınıyor. (b/162247961)

Bilinen Sorun

  • Yeni durum yöneticisi kullanılırken, parçanın kök görünümünün görünürlüğünü doğrudan onViewCreated() sonrasında ve onResume() öncesinde ayarlamak, kök görünümün görünürlüğünü kontrol eden FragmentManager tarafından ayarladığınız görünürlüğün geçersiz kılınmasına neden olur. Geçici çözüm olarak, parçanızın görünürlüğünü değiştirmek için her zaman hide() ve show() işlemlerini kullanmanız gerekir. (b/164481490)

Sürüm 1.3.0-alpha07

22 Temmuz 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 ve androidx.fragment:fragment-testing:1.3.0-alpha07 özellikleri kullanıma sunulur. 1.3.0-alpha07 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentScenario artık Fragment'ı her zaman RESUMED durumuna taşımak yerine CREATED, STARTED veya RESUMED için başlangıç yaşam döngüsü durumu ayarlamayı destekliyor. (b/159662750)
  • Değer döndürmenize olanak tanıyan Kotlin reified uzantı yöntemi withFragment biçiminde, onFragment FragmentScenario API'sinin alternatifi eklendi. Özellikle, belirtilen blokta oluşturulan istisnaları yeniden oluşturur. (b/158697631)

Davranış Değişiklikleri

  • FragmentScenario artık moveToState()'i uygulamak için setMaxLifecycle() kullanıyor. Bu sayede, tüm API düzeylerinde tutarlı davranış sağlanıyor ve Fragment'ın durumu temel Activity'den ayrılıyor. (b/156527405)
  • ViewTreeSavedStateRegistryOwner tarafından döndürülen SavedStateRegistryOwner artık parça görünümünün yaşam döngüsüne bağlı. Bu, durumunun kaydedilmesini ve parça görünümüyle aynı anda geri yüklenmesini sağlar. (b/158503763)

Hata Düzeltmeleri

  • Parçalar artık ViewCompat.requestApplyInsets() işlevini çağırmadan önce parçanın görünümünün eklenmesini bekliyor. Böylece, yerleştirme isteğinin bırakıldığı durumlar önleniyor. (b/158095749)
  • clearFragmentResultListener adlı işlev çağrıldığında yaşam döngüsü gözlemcisi artık düzgün şekilde temizleniyor. (b/159274993)

Sürüm 1.3.0-alpha06

10 Haziran 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 ve androidx.fragment:fragment-testing:1.3.0-alpha06 yayınlandı. 1.3.0-alpha06 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentActivity ve Fragment üzerindeki onAttachFragment() geri çağırma işlevinin desteği sonlandırıldı. Daha esnek bir alternatif sunmak için yeni bir FragmentOnAttachListener eklendi. Bu sayede onAttachFragment(), ayrı ve test edilebilir dinleyicilere devredilebilir. Ayrıca, doğrudan alt FragmentManager'ınız dışındaki FragmentManager'lara dinleyici ekleme desteği de sağlanır. (I06d3d)

Hata Düzeltmeleri

  • Ebeveyn parçalarının görünüm durumu artık alt parçalarından önce geri yükleniyor. Bu sayede, bir yapılandırma değişikliğinden sonra görsel sıralama sorunu düzeltiliyor. Bu sorun, bir DialogFragment başka bir DialogFragment öğesini alt parça olarak gösterdiğinde ortaya çıkıyordu. (b/157195715)
  • UseRequireInsteadOfGet Lint denetiminin, ?. ve !! operatörlerinin zincirleme kullanımlarını doğru şekilde işlememesine neden olan sorun düzeltildi. (b/157677616)

Sürüm 1.3.0-alpha05

20 Mayıs 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 ve androidx.fragment:fragment-testing:1.3.0-alpha05 yayınlandı. 1.3.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

API Değişiklikleri

  • setFragmentResult() ve setFragmentResultListener() API'leri artık sırasıyla boş olmayan bir Bundle ve FragmentResultListener parametresini kabul ediyor. Daha önce ayarlanmış bir sonucu veya dinleyiciyi açıkça temizlemek için yeni clearFragmentResult() ve clearFragmentResultListener() yöntemlerini kullanın. (b/155416778)
  • Lambda alan setFragmentResultListener() Kotlin uzantıları artık inline olarak işaretleniyor. (b/155323404)

Davranış Değişiklikleri

  • Fragment üzerindeki daha önce desteği sonlandırılmış startActivityForResult(), startIntentSenderForResult() ve requestPermissions artık dahili olarak ActivityResultRegistry kullanıyor. Bu nedenle, bu API'leri kullanırken istek kodlarınız için yalnızca düşük bitleri (0xFFFF'ın altında) kullanma kısıtlaması kaldırıldı. (b/155518741)

Doküman Güncellemeleri

  • Fragment(@LayoutRes int) ve DialogFragment(@LayoutRes int) oluşturucularla ilgili dokümanları genişleterek varsayılan FragmentFactory kullanılırken alt sınıflarınızın bağımsız oluşturucusundan çağrılmaları gerektiğini netleştirdik. (b/153042497)

Sürüm 1.3.0-alpha04

29 Nisan 2020

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 ve androidx.fragment:fragment-testing:1.3.0-alpha04 özellikleri kullanıma sunulur. 1.3.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • FragmentManager üzerindeki yeni API'ler aracılığıyla iki Fragment arasında sonuç geçirme desteği eklendi. Bu, hiyerarşi parçaları (üst/alt), DialogFragment'lar ve Gezinme'deki parçalar için geçerlidir. Ayrıca, sonuçların yalnızca Fragment'ınız en az STARTED durumundayken gönderilmesini sağlar. (b/149787344)

API Değişiklikleri

  • Hedef fragment API'leri kullanımdan kaldırıldı. Parçalar arasında veri aktarmak için bunun yerine yeni Fragment Result API'leri kullanılmalıdır. (b/149787344)
  • Fragment'taki startActivityForResult()/onActivityResult() ve requestPermissions()/onRequestPermissionsResult() API'lerinin desteği sonlandırıldı. Lütfen Activity Result API'lerini kullanın. (aosp/1290887)
  • Etkinlik 1.2.0-alpha04 ile ilgili uyumsuz değişiklik: prepareCall() yöntemi, registerForActivityResult() olarak yeniden adlandırıldı. (aosp/1278717)

Hata Düzeltmeleri

  • Parçanın getViewLifecycleOwner() işlevi artık onSaveInstanceState() işlevi çağrılmadan önce durduruluyor. Bu, parçanın yaşam döngüsünün davranışını yansıtıyor. (b/154645875)
  • Bir parçada setMenuVisibility(false) işlevi çağrıldığında, alt parçaları tarafından sağlanan menülerin görünürlüğü artık doğru şekilde değiştiriliyor. (b/153593580)
  • FragmentContainerView ile bir parçacık DialogFragment'nin görünüm hiyerarşisine eklenirken oluşan illegalStateException düzeltildi. (b/154366601)
  • Parçalarınızı bir etkinliğin dışında barındırdığınızda parçalardaki getDefaultViewModelProviderFactory() yöntemi artık kilitlenmiyor. (b/153762914)

Sürüm 1.3.0-alpha03

1 Nisan 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 ve androidx.fragment:fragment-testing:1.3.0-alpha03 özellikleri kullanıma sunulur. 1.3.0-alpha03 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Fragment üzerindeki prepareCall yöntemleri artık final. (b/152439361)

Hata Düzeltmeleri

  • BottomSheetDialogFragment kullanılırken Fragment 1.3.0-alpha02'ta ortaya çıkan gerileme düzeltildi. (b/151652127, aosp/1263328, aosp/1265163)
  • Yapılandırma değişikliğinden sonra bir parçadan prepareCall kullanılırken yaşanan kilitlenme sorunu düzeltildi. (b/152137004)
  • setTargetFragment() kullanılırken paylaşılan öğe ve çıkış geçişlerinin yoksayılmasına neden olan sorun düzeltildi. (b/152023196)
  • Fragment 1.2.4: Fragment ProGuard kuralları, tutulan parçaların karartılmasına izin verecek şekilde güncellendi. (b/151605338)
  • Fragment 1.2.4: Yaşam döngüleri ve görünüm yaşam döngüleri her zaman senkronize olduğundan FragmentLiveDataObserve Lint kuralı DialogFragment sınıflarında devre dışı bırakıldı. Bu nedenle, observe çağrılırken this veya viewLifecycleOwner kullanmak güvenlidir. (b/151765086)

Bağımlılık Değişiklikleri (Dependency Changes)

  • Parçalar, Activity 1.2.0-alpha03'e bağlıdır. Activity 1.2.0-alpha02'te Activity Result API'sinde önemli iyileştirmeler yapılmıştır.

Sürüm 1.3.0-alpha02

18 Mart 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 ve androidx.fragment:fragment-testing:1.3.0-alpha02 yayınlandı. 1.3.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • startActivityForResult()+onActivityResult() ve requestPermissions()+onRequestPermissionsResult() akışlarını işlemek için Activity 1.2.0-alpha02'de kullanıma sunulan ActivityResultRegistry API'si için destek eklendi. Bu sayede, bu akışları test etmek için kancalar sağlamanın yanı sıra Fragment'ınızdaki yöntemleri geçersiz kılmadan bu akışları işleyebilirsiniz. Güncellenen Bir Etkinlikten Sonuç Alma başlıklı makaleyi inceleyin. (b/125158199)

API Değişiklikleri

  • DialogFragment artık onCreateView() öğesinin varsayılan olarak genişletmesi gereken düzeni belirten bir @LayoutRes alan oluşturucu sağlar. (b/150327080)
  • onActivityCreated() yöntemi artık kullanımdan kaldırıldı. Parçanın görünümüne dokunan kod onViewCreated() içinde (onActivityCreated()'den hemen önce çağrılır) yapılmalı, diğer başlatma kodu ise onCreate() içinde olmalıdır. Özellikle etkinliğin onCreate() tamamlandığında geri arama almak için onAttach() içindeki etkinliğin Lifecycle üzerinde bir LifeCycleObserver kaydedilmeli ve onCreate() geri araması alındıktan sonra kaldırılmalıdır. (b/144309266)

Hata Düzeltmeleri

  • Fragment 1.2.3: onCreateDialog() içinden getLayoutInflater() çağrılırken StackOverflowError'ye neden olan DialogFragment'deki hata düzeltildi. (b/117894767, aosp/1258664)
  • Fragment 1.2.3: Kullanılmayan Fragment sınıflarının kaldırılabilmesi için Fragment'ın dahil edilen ProGuard kurallarının kapsamı daraltıldı. (b/149665169)
  • Parça 1.2.3: Kotlin özelliği adını gölgeleyen yerel bir değişken adı kullanılırken UseRequireInsteadOfGet Lint kontrolündeki yanlış pozitifler düzeltildi. (b/149891163)
  • Fragment 1.2.3: FragmentContainerView artık düzen önizlemesinde yanlış oluşturucu kullanıldığında UnsupportedOperationException oluşturmuyor. (b/149707833)

Bilinen Sorunlar

  • BottomSheetDialogFragment artık iletişim kutusunu ekranda doğru şekilde konumlandırmıyor. (b/151652127)

Sürüm 1.3.0-alpha01

4 Mart 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 ve androidx.fragment:fragment-testing:1.3.0-alpha01 özellikleri kullanıma sunulur. 1.3.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • ViewTreeLifecycleOwner.get(View) API'si için destek eklendi. Bu API, Lifecycle 2.3.0-alpha01'da eklenmişti. onCreateView() tarafından döndürülen tüm Görünümler için LifecycleOwner olarak Fragment'ın viewLifecycleOwner değerini döndürür. (aosp/1182955)

API Değişiklikleri

  • Parçalardaki setRetainInstance() yöntemi kullanımdan kaldırıldı. ViewModels'in kullanıma sunulmasıyla birlikte geliştiriciler, durumun korunması için Etkinlikler, Parçalar ve Gezinme grafikleriyle ilişkilendirilebilen belirli bir API'ye sahip oldu. Bu sayede geliştiriciler, normal (tutulmayan) bir Fragment kullanabilir ve tutulmasını istedikleri belirli durumu ayrı tutabilir. Böylece, tutulan durumun tek bir oluşturma ve yok etme işleminin faydalı özelliklerini (yani ViewModel oluşturucusu ve aldığı onCleared() geri çağırması) korurken yaygın bir bellek sızıntısı kaynağı önlenir. (b/143911815)
  • ViewPager2 1.0.0'nin yayınlanmasıyla birlikte ViewPager ile etkileşim için kullanılan FragmentPagerAdapter ve FragmentStatePagerAdapter sınıfları kullanımdan kaldırıldı. ViewPager'dan ViewPager2'ye taşıma başlıklı makaleyi inceleyin. (b/145132715)

Hata Düzeltmeleri

  • Fragment ProGuard kuralları artık yalnızca kullanılan Fragment sınıfları için varsayılan oluşturucuları doğru şekilde tutarak Fragment 1.2.1'ta ortaya çıkan bir gerilemeyi düzeltiyor.Fragment (b/149665169
  • require___() Fragment 1.2.2'a eklenen Lint kuralları artık gölgelenen Kotlin özellik adlarıyla aynı ada sahip yerel değişkenlerde yanlış pozitif sonuç vermiyor (ör. view). (b/149891163)
  • Android Studio'da düzen önizlemesi kullanılırken artık FragmentContainerView istisnası oluşturulmuyor.UnsupportedOperationException (b/149707833)
  • Durum kaydedildikten sonra eklenen tutulan parçaların sürekli olarak yeniden oluşturulup her yapılandırma değişikliğinden sonra yok edilmemesine neden olan sorun düzeltildi. (b/145832397)

Sürüm 1.2.5

Sürüm 1.2.5

10 Haziran 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 ve androidx.fragment:fragment-testing:1.2.5 özellikleri kullanıma sunulur. 1.2.5 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Parçanın getViewLifecycleOwner() işlevi artık onSaveInstanceState() işlevi çağrılmadan önce durduruluyor. Bu, parçanın yaşam döngüsünün davranışını yansıtıyor. Bu özellik daha önce Fragment 1.3.0-alpha04'ta yayınlanmıştı. (b/154645875)
  • Bir parçada setMenuVisibility(false) işlevi çağrıldığında, alt parçaları tarafından sağlanan menülerin görünürlüğü artık doğru şekilde değiştiriliyor. Bu özellik daha önce Fragment 1.3.0-alpha04'ta yayınlanmıştı. (b/153593580)

Sürüm 1.2.4

Sürüm 1.2.4

1 Nisan 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 ve androidx.fragment:fragment-testing:1.2.4 özellikleri kullanıma sunulur. 1.2.4 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Fragment ProGuard kuralları, tutulan parçaların karartılmasına izin verecek şekilde güncellendi. (b/151605338)
  • Yaşam döngüleri ve görünüm yaşam döngüleri her zaman senkronize olduğundan FragmentLiveDataObserve Lint kuralı DialogFragment sınıflarında devre dışı bırakıldı. Bu nedenle, observe çağrılırken this veya viewLifecycleOwner kullanmak güvenlidir. (b/151765086)

Sürüm 1.2.3

Sürüm 1.2.3

18 Mart 2020

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 ve androidx.fragment:fragment-testing:1.2.3 yayınlandı. 1.2.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • DialogFragment'da, onCreateDialog() içinden getLayoutInflater() çağrılırken StackOverflowError'ye neden olan hata düzeltildi. (b/117894767, aosp/1258665)
  • Kullanılmayan Fragment sınıflarının kaldırılabilmesi için Fragment'in içerdiği ProGuard kurallarının kapsamı daraltıldı. (b/149665169)
  • Kotlin özellik adını gölgeleyen yerel değişken adı kullanıldığında UseRequireInsteadOfGet Lint kontrolündeki yanlış pozitifler düzeltildi. (b/149891163)
  • FragmentContainerView artık düzen önizlemesinde yanlış oluşturucu kullanıldığında UnsupportedOperationException oluşturmuyor. (b/149707833)

Sürüm 1.2.2

Sürüm 1.2.2

19 Şubat 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 ve androidx.fragment:fragment-testing:1.2.2 özellikleri kullanıma sunulur. 1.2.2 sürümü şu commit'leri içerir.

Yeni hata analizi kontrolleri

  • Lint, onCreateView(), onViewCreated() ve onActivityCreated()'taki OnBackPressedDispatcher'ye yapılan aramalar için LifecycleOwner olarak viewLifecycleOwner'nın kullanılmasını önerir. (b/142117657)
  • fragment-testing yapısını kullanırken doğru debugImplementation kullandığınızı doğrulayan yeni bir Lint kontrolü eklendi. (b/141500106)
  • Parçalar artık hem get hem de require eşdeğeri içeren tüm Parça API'leri için checkNotNull(get___()), requireNonNull(get___()) veya get___()!! yerine daha açıklayıcı hata mesajları için ilişkili require___() yöntemlerinin kullanılmasını öneriyor. (aosp/1202883)

Hata Düzeltmeleri

  • R8 uyarılarını önlemek için Fragment ProGuard dosyaları düzeltildi (b/148963981).
  • viewLifecycleOwner kullanırken observe kullanmayı öneren mevcut Lint kontrolü, observe'nin livedata-ktx uzantı yöntemi sürümünü de işleyecek şekilde iyileştirildi. (b/148996309)
  • Hata analizi kontrollerinin çoğunda biçimlendirme düzeltildi (aosp/1157012)

Harici katkılar

  • require___() Lint kontrollerini Slack adına gönderdiği için Zac Sweers'e teşekkür ederiz. (aosp/1202883)

Sürüm 1.2.1

Sürüm 1.2.1

5 Şubat 2020

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 ve androidx.fragment:fragment-testing:1.2.1 özellikleri kullanıma sunulur. 1.2.1 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • add ve replace yöntemleriyle eklenen ve Class örneği (veya Kotlin reified sürümleri) alan parçaların varsayılan oluşturucusu artık ProGuard tarafından korunuyor. (b/148181315)
  • FragmentStatePagerAdapter ve FragmentPagerAdapter, finishUpdate() çalıştırılırken FragmentManager tarafından oluşturulan istisnaları artık yakalamıyor. (aosp/1208711)
  • FragmentManager.findFragment() öğesinin, <fragment> etiketiyle eklenen parçalarla çalışmaması sorunu düzeltildi. (b/147784323)
  • <fragment> etiketi kullanılarak şişirilmiş parçalar, artık düzende olduklarında onCreate()'den önce her zaman onInflate() için bir çağrı alır. (aosp/1215856)
  • Bir FragmentManager örneğinde toString() çağrıldığında, Etkinlik zaten yok edilmişse artık NullPointerException oluşturulmuyor. (b/148189412)

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

Sürüm 1.2.0

Sürüm 1.2.0

22 Ocak 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 ve androidx.fragment:fragment-testing:1.2.0 özellikleri kullanıma sunulur. 1.2.0 sürümü şu commit'leri içerir.

1.1.0 sürümünden beri yapılan önemli değişiklikler

  • FragmentContainerView: FragmentContainerView, FrameLayout veya diğer düzenlerin kullanımının yerine dinamik olarak eklenen Fragment'ler için kesinlikle önerilen kapsayıcıdır. Ayrıca, class, android:name ve isteğe bağlı android:tag gibi <fragment> etiketiyle aynı parametreleri destekler ancak bu ilk parçayı eklemek için <fragment> tarafından kullanılan özel kod yolu yerine normal bir FragmentTransaction kullanır.
  • onDestroyView() zamanlama: Parçalar artık onDestroyView() işlevini çağırmadan önce çıkış animasyonlarının, çıkış çerçevesi geçişlerinin ve çıkış AndroidX geçişlerinin (Transition 1.3.0 kullanılırken) tamamlanmasını bekliyor.
  • Sınıfa dayalı add() ve replace(): FragmentTransaction üzerinde add() ve replace() için Class<? extends Fragment> ve isteğe bağlı Bundle bağımsız değişkenlerini alan yeni aşırı yüklemeler eklendi. Bu yöntemler, eklenecek Fragment örneğini oluşturmak için FragmentFactory kullanır. Gerçekleştirilmiş türleri (ör.fragmentTransaction.replace<YourFragment>(R.id.container)) kullanan Kotlin uzantıları da fragment-ktx'ye eklendi.
  • Lifecycle ViewModel SavedState Integration: SavedStateViewModelFactory artık by viewModels(), by activityViewModels(), ViewModelProvider oluşturucusu veya bir Fragment ile ViewModelProviders.of() kullanılırken kullanılan varsayılan fabrika.
  • Yeni hata analizi kontrolleri: LiveData öğesini onCreateView(), onViewCreated() veya onActivityCreated() konumlarından gözlemlerken getViewLifecycleOwner() kullandığınızdan emin olmanızı sağlayan yeni bir hata analizi kontrolü eklendi.
  • getFragmentManager() desteğinin sonlandırılması: Fragment'teki getFragmentManager() ve requireFragmentManager() yöntemlerinin desteği sonlandırıldı ve bu yöntemler, Fragment'in eklendiği null olmayan FragmentManager değerini döndüren tek bir getParentFragmentManager() yöntemiyle değiştirildi (çağrılmasının güvenli olup olmadığını belirlemek için isAdded() kullanabilirsiniz).
  • FragmentManager.enableDebugLogging() desteğinin sonlandırılması: Statik FragmentManager.enableDebugLogging yönteminin desteği sonlandırıldı. FragmentManager artık FragmentManager etiketi için Log.isLoggable() değerini dikkate alıyor. Böylece, uygulamanızı yeniden derlemeden DEBUG veya VERBOSE günlük kaydını etkinleştirebilirsiniz.

Bilinen Sorunlar

  • Yalnızca FragmentContainerView üzerinde class veya android:name özelliği aracılığıyla referans verilen parçalar, ProGuard tarafından otomatik olarak saklanmaz. Bu nedenle, her parça sınıfı için manuel olarak bir saklama kuralı eklemeniz gerekir. (b/142601969)
  • FragmentContainerView ile XML'de class veya android:name kullanarak NavHostFragment eklerken Etkinliğinizin onCreate() bölümünde findNavController() kullanamazsınız. (b/142847973)

Sürüm 1.2.0-rc05

8 Ocak 2020

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 ve androidx.fragment:fragment-testing:1.2.0-rc05 özellikleri kullanıma sunulur. 1.2.0-rc05 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • <fragment> etiketi kullanılırken Fragment 1.2.0-rc04'da gerilemeye neden olan ve etkinlik yok edilirken onViewCreated()'ın yanlış şekilde çağrılmasına yol açan hata düzeltildi. (b/146290333)
  • <fragment> etiketiyle eklenen parçaların, yalnızca bazen düzende olsalar bile (ör. yalnızca yatay düzeninizde) yapılandırılmamış kısımları artık düzgün şekilde temizleniyor. Sonuç olarak, bu parçalar artık düzeninizde olmasalar bile başlatılıp hiçbir yaşam döngüsü yöntemiyle taşınmak yerine doğru şekilde CREATED'ya taşınıyor. (b/145769287)

Sürüm 1.2.0-rc04

18 Aralık 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 ve androidx.fragment:fragment-testing:1.2.0-rc04 özellikleri kullanıma sunulur. 1.2.0-rc04 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Görsel sorunları önlemek için TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE ve TRANSIT_FRAGMENT_FADE animasyonları ayarlandı. (b/145468417)

Sürüm 1.2.0-rc03

4 Aralık 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 ve androidx.fragment:fragment-testing:1.2.0-rc03 özellikleri kullanıma sunulur. 1.2.0-rc03 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Kaldırılan parçaların çıkış animasyonları / geçişleri çalışırken findFragmentById()/findFragmentByTag() tarafından döndürülmeye devam edildiği istenmeyen davranış değişikliği düzeltildi. (b/143982969, aosp/1167585)
  • Kapsayan etkinlik onSaveInstanceState() işlevini çağırdığında alt parçalar artık üst parçalarından önce doğru şekilde durduruluyor. (b/144380645)
  • Gizli bir Fragment açıldıktan sonra Görünümlerin yanlışlıkla INVISIBLE olarak işaretlenmesine neden olan sorun düzeltildi. (b/70793925)
  • Paylaşılan öğe geçişleri artık döndürülmüş, ölçeklendirilmiş vb. görünümleri işleyebiliyor (b/142835261).

Doküman Güncellemeleri

  • setUserVisibleHint() ile ilgili desteğin sonlandırılması dokümanı netleştirildi. (b/143897055)
  • setFragmentFactory() ve getFragmentFactory() ile ilgili dokümanları iyileştirerek FragmentFactory ayarlanmasının alt FragmentManager'ları da etkileyeceğini daha iyi belirttik. (aosp/1170095)

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

  • Parçalar artık Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 ve Activity 1.1.0-rc03'ye bağlıdır.

Sürüm 1.2.0-rc02

7 Kasım 2019

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 ve androidx.fragment:fragment-testing:1.2.0-rc02 özellikleri kullanıma sunulur. 1.2.0-rc02 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Kotlin'de onCreateView(), onViewCreated() veya onActivityCreated() kaynaklı LiveData gözlemlenirken getViewLifecycleOwner() kullanılmasına yönelik LintFix (Fragment 1.2.0-rc01'te kullanıma sunulmuştur) artık getViewLifecycleOwner() yerine Kotlin özellik erişimi söz dizimi viewLifecycleOwner'nı kullanıyor. (aosp/1143821)

Sürüm 1.2.0-rc01

23 Ekim 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 ve androidx.fragment:fragment-testing:1.2.0-rc01 özellikleri kullanıma sunulur. 1.2.0-rc01 sürümü şu commit'leri içerir.

Yeni özellikler

  • FragmentContainerView artık android:name'ye ek olarak class özelliğini de destekliyor ve <fragment> etiketinin işlevini yansıtıyor. (b/142722242)
  • onCreateView(), onViewCreated() veya onActivityCreated() kaynaklı LiveData'yi gözlemlerken getViewLifecycleOwner() kullandığınızdan emin olmanızı sağlayan yeni bir Lint kontrolü eklendi. (b/137122478)

Hata düzeltmeleri

  • DialogFragment üzerindeki onDismiss ve onCancel geri çağırmaları artık kendilerine iletilen DialogInterface değerinin null olmadığını ve yürütüldüklerinde getDialog() değerinin null olmayan bir değer döndürdüğünü garanti eder. (b/141974033)
  • FragmentContainerView artık class veya android:name tarafından tanımlanan parçayı enflasyonun bir parçası olarak ekleyerek findFragmentById() ve findFragmentByTag()'nin hemen ardından çalışmasını sağlar. (b/142520327)
  • Durum kaydedildiği için FragmentContainerView içinde IllegalStateException düzeltildi. (b/142580713)
  • FragmentContainerView sınıfı kod karartıldığında FragmentContainerView içindeki UnsupportedOperationException düzeltildi. (b/142657034)

Bilinen sorunlar

  • Yalnızca FragmentContainerView üzerinde class veya android:name özelliği aracılığıyla referans verilen parçalar, ProGuard tarafından otomatik olarak saklanmaz. Bu nedenle, her parça sınıfı için manuel olarak bir saklama kuralı eklemeniz gerekir. FragmentContainerView'ya geçişi öneren Lint kuralını, aapt2 üzerinden düzeltilene kadar devre dışı bıraktık. (b/142601969)

Sürüm 1.2.0-beta02

11 Ekim 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 ve androidx.fragment:fragment-testing:1.2.0-beta02 özellikleri kullanıma sunulur. 1.2.0-beta02 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Parçanın onInflate() öğesinin FragmentContainerView öğesinden uygun özellikleri almaması nedeniyle NavHostFragment gibi durumların bozulmasına neden olan sorun düzeltildi. (b/142421837)

Sürüm 1.2.0-beta01

9 Ekim 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 ve androidx.fragment:fragment-testing:1.2.0-beta01 yayınlandı. 1.2.0-beta01 sürümü şu commit'leri içerir.

Yeni özellikler

  • FragmentContainerView, android:name ve isteğe bağlı android:tag XML özelliklerinin eklenmesiyle birlikte başlangıç parçası ekleme desteği sunar. <fragment> etiketinden farklı olarak FragmentContainerView, ilk parçayı eklemek için arka planda normal bir FragmentTransaction kullanır. Bu sayede, FragmentContainerView üzerinde başka FragmentTransaction işlemleri yapılabilir ve düzen için View Binding'in kullanılması sağlanır. (b/139830628, b/141177981)
  • Fragments artık <fragment> yerine FragmentContainerView'yi kullanmak için hızlı düzeltme sunan bir hata analizi uyarısı içeriyor. (b/139830056)

Hata düzeltmeleri

  • androidx.transition kullanılırken ClassCastException düzeltildi. (b/140680619)
  • Transition 1.3.0-beta01 kullanılırken parçalar artık onDestroyView() işlemini göndermeden önce androidx.transition geçişlerinin (sırasıyla Fragment 1.2.0-alpha03 ve Fragment 1.2.0-alpha02'te düzeltilen çerçeve geçişleri ve animasyonlara ek olarak) tamamlanmasını bekliyor. (aosp/1119841)
  • Geçiş 1.3.0-beta01 kullanılırken artık Fragment'lar, aynı kapsayıcıda yeni geçişler / animasyonlar başlatmadan önce androidx.transition geçişlerini düzgün şekilde iptal ediyor. (aosp/1119841)
  • FragmentContainerView kullanılırken androidx.transition kullanıldığında API 17 ve önceki sürümlerde Fragment'ınızın kök görünümünde geçişlerin kullanılmasıyla ilgili sorun düzeltildi. (b/140361893)
  • fragment-testing yapısı artık AndroidX Test 1.2.0'e bağlıdır ve en yeni Espresso 3.2.0 ile uyumsuzluk düzeltilmiştir. (b/139100149)
  • FragmentManager'da Log.w kullanımı kaldırıldı. (aosp/1126468)

Bilinen sorunlar

  • Parçanın onInflate() öğeleri, FragmentContainerView öğesinden uygun özellikleri almıyor ve NavHostFragment gibi durumlar bozuluyor. (b/142421837)

Sürüm 1.2.0-alpha04

18 Eylül 2019

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 ve androidx.fragment:fragment-testing:1.2.0-alpha04 özellikleri kullanıma sunulur. 1.2.0-alpha04 sürümü şu commit'leri içerir.

API değişiklikleri

  • Fragment üzerindeki getFragmentManager() ve requireFragmentManager() yöntemleri kullanımdan kaldırıldı ve Fragment'ın eklendiği null olmayan FragmentManager değerini döndüren tek bir getParentFragmentManager() yöntemiyle değiştirildi (çağrılmasının güvenli olup olmadığını belirlemek için isAdded() kullanabilirsiniz). (b/140574496)
  • Statik FragmentManager.enableDebugLogging yöntemi kullanımdan kaldırıldı. FragmentManager artık FragmentManager etiketi için Log.isLoggable() değerini dikkate alıyor. Böylece, uygulamanızı yeniden derlemeden DEBUG veya VERBOSE günlük kaydını etkinleştirebilirsiniz. (aosp/1116591)

Hata düzeltmeleri

  • Parçalar artık diğer parçalardaki çıkış animasyonları çalışırken düzgün şekilde yok ediliyor. (b/140574199)
  • Daha önce Activity.findViewById() öğesini çağırmayan parçaların artık çağırmasına neden olan sorun düzeltildi. (aosp/1116431)

Sürüm 1.2.0-alpha03

5 Eylül 2019

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 ve androidx.fragment:fragment-testing:1.2.0-alpha03 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

Hata düzeltmeleri

  • FragmentContainerView artık parçaları eski yığından çıkarırken çizim sırasını düzgün şekilde tersine çeviriyor. (b/139104187)
  • Hem bir parçayı kaldırma hem de aynı anda yeni bir parça ekleme işlemi yapıldığında yanlış animasyonun çalışmasına neden olan sorun düzeltildi. (b/111659726)
  • Parçalar artık onDestroyView() göndermeden önce geçişlerin (Fragment 1.2.0-alpha02'te düzeltilen animasyonlara ek olarak) tamamlanmasını bekliyor. (b/138741697)

Sürüm 1.2.0-alpha02

7 Ağustos 2019

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 ve androidx.fragment:fragment-testing:11.2.0-alpha02 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • SavedStateViewModelFactory artık by viewModels(), by activityViewModels(), ViewModelProvider oluşturucu veya ViewModelProviders.of() ile Fragment kullanılırken varsayılan olarak kullanılan fabrika. (b/135716331)
  • TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE ile setTransitionFragmentTransaction üzerinde kullanırken varsayılan animasyonlar, Android 10 cihazlardaki etkinlikler tarafından kullanılan animasyonlarla eşleşecek şekilde güncellendi. (aosp/1012812, aosp/1014730)

API değişiklikleri

  • Animasyon z-sıralama sorunlarını ve pencere yerleşimlerinin Fragment'lere gönderilmesini düzelttiği için FrameLayout vb. kullanımının yerine dinamik olarak eklenen Fragment'ler için şiddetle tavsiye edilen kapsayıcı olarak FragmentContainerView öğesini kullanıma sunar. (b/37036000, aosp/985243, b/136494650)
  • Bir fragment tarafından şişirilmiş bir görünümden kapsayan Fragment'ı almak için statik bir FragmentManager.findFragment(View) yöntemi eklendi. fragment-ktx için Kotlin uzantısı da mevcuttur. (aosp/1090757)
  • FragmentTransaction üzerinde, Class<? extends Fragment> ve isteğe bağlı Bundle bağımsız değişkenlerini alan add() ve replace() için yeni aşırı yüklemeler eklendi. Bu yöntemler, eklenecek Fragment örneğini oluşturmak için FragmentFactory kullanır. Gerçekleştirilmiş türleri (ör.fragmentTransaction.replace<YourFragment>(R.id.container)) kullanan Kotlin uzantıları da fragment-ktx'ye eklendi. (b/126124987)
  • @MainThread ek açıklamaları, Fragment yaşam döngüsü geri çağırmalarına eklendi. (b/127272564)
  • FragmentTransaction ve FragmentManager.BackStackEntry üzerindeki içerik haritası başlığıyla ilgili API'lerin desteği sonlandırıldı. (b/138252944)
  • FragmentTransaction üzerindeki setTransitionStyle yöntemi kullanım dışı bırakıldı. (aosp/1011537)
  • FragmentManager bölümündeki yöntemlerin çoğu artık abstract değil. FragmentManager öğesi abstract olarak kalır ve doğrudan oluşturulmamalı veya genişletilmemelidir. Yalnızca getSupportFragmentManager(), getChildFragmentManager() vb. öğelerden mevcut bir örneği almaya devam etmelisiniz.

Hata düzeltmeleri

  • Parça 1.1.0-rc04: Parçalar artık ertelenen geçişleri, parçalar çıkarıldığında doğru şekilde iptal ediyor. (b/138251858)
  • Fragment 1.1.0-rc03: postponeEnterTransition() işlevinin birden fazla kez zaman aşımıyla çağrılmasının önceki zaman aşımlarını iptal etmemesine neden olan sorun düzeltildi. (b/137797118)
  • Parça 1.1.0-rc02: Mevcut öğe kaldırılırken FragmentPagerAdapter ve FragmentStatePagerAdapter'de kilitlenme sorunu düzeltildi. (b/137209870)
  • Parçalar artık göndermeden önce animasyonların tamamlanmasını bekliyor onDestroyView(). (b/136110528)
  • Artık üst parçayı animasyonlandırırken alt parçalardan ve bunların alt öğelerinden gelen parça animasyonları düzgün şekilde işleniyor. (b/116675313)
  • Paylaşılan öğe geçişleri kullanılırken ve bir pop ile ekleme işlemi birleştirilirken oluşan NullPointerException düzeltildi. (b/120507394)
  • Robolectric testlerinde FragmentPagerAdapter ve FragmentStatePagerAdapter kullanılırken IllegalStateException ile ilgili geçici çözüm eklendi. (b/137201343)

Sürüm 1.2.0-alpha01

2 Temmuz 2019

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 ve androidx.fragment:fragment-testing:1.2.0-alpha01 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • FragmentManager artık Fragment'ın görünümünü ekledikten ve doğrudan onViewCreated() işlevini çağırmadan önce requestApplyInsets() işlevini çağırarak görünümünüzün her zaman doğru iç kısımlara sahip olmasını sağlar. (b/135945162)

Hata düzeltmeleri

  • replace() öncesinde setPrimaryNavigationFragment() kullanılan bir FragmentTransaction açılırken oluşan NullPointerException düzeltildi. (b/134673465)

Sürüm 1.1.0

Sürüm 1.1.0

5 Eylül 2019

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 ve androidx.fragment:fragment-testing:1.1.0 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

1.0.0 sürümünden beri yapılan önemli değişiklikler

  • fragment-testing: fragment-testing yapısı, bir parçayı yalıtılmış olarak test etmek için FragmentScenario sınıfını sağlar. Daha fazla bilgi için Uygulamanızın parçalarını test etme dokümanına bakın.
  • FragmentFactory: Artık parça örneklerinin oluşturulmasını yönetmek için FragmentManager üzerinde FragmentFactory ayarlayabilir ve bağımsız değişken içermeyen bir oluşturucuya sahip olma zorunluluğunu kaldırabilirsiniz.
  • ViewModel'ler için Kotlin Özellik Delegeleri: fragment-ktx yapısı artık iki Kotlin özellik delegesi içeriyor: by viewModels(), tek bir parçayla ilişkili ViewModel'lere erişmek için, by activityViewModels() ise etkinliğe kapsamı belirlenmiş ViewModel'lere erişmek için kullanılır.
  • Maksimum yaşam döngüsü: Artık bir FragmentTransaction üzerinde setMaxLifecycle() işlevini çağırarak bir Fragment için maksimum yaşam döngüsü durumu ayarlayabilirsiniz. Bu API, artık desteği sonlandırılan setUserVisibleHint() API'sinin yerini almıştır. FragmentPagerAdapter ve FragmentStatePagerAdapter, yeni davranışa geçmenize olanak tanıyan yeni bir oluşturucuya sahiptir.
  • FragmentActivity LayoutId oluşturucusu: FragmentActivity alt sınıfları artık onCreate() içinde setContentView()'i çağırmak yerine alternatif olarak içerik görünümü olarak ayarlanması gereken düzeni belirten bir R.layout kimliği alan FragmentActivity üzerinde isteğe bağlı olarak bir oluşturucuyu çağırabilir. Bu, alt sınıfınızın bağımsız bir oluşturucuya sahip olması şartını değiştirmez.
  • Fragment LayoutId oluşturucusu: Fragment alt sınıfları artık onCreateView()'i geçersiz kılmaya alternatif olarak bu parça için kullanılması gereken düzeni belirten bir R.layout kimliği alan Fragment üzerinde isteğe bağlı olarak bir oluşturucuyu çağırabilir. Şişirilmiş düzen, onViewCreated() içinde yapılandırılabilir.
  • Zaman aşımıyla erteleme: Zaman aşımı uygulayan yeni bir postponeEnterTransition() aşırı yüklemesi eklendi.

Sürüm 1.1.0-rc04

7 Ağustos 2019

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 ve androidx.fragment:fragment-testing:1.1.0-rc04 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Parçalar artık ertelenen geçişleri, parçalar çıkarıldığında doğru şekilde iptal ediyor. (b/138251858)

Sürüm 1.1.0-rc03

19 Temmuz 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 ve androidx.fragment:fragment-testing:1.1.0-rc03 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • postponeEnterTransition() işlevinin zaman aşımıyla birden fazla kez çağrılmasının önceki zaman aşımlarını iptal etmemesine neden olan sorun düzeltildi. (b/137797118)

Sürüm 1.1.0-rc02

17 Temmuz 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 ve androidx.fragment-testing:fragment:1.1.0-rc02 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Mevcut öğe kaldırılırken FragmentPagerAdapter ve FragmentStatePagerAdapter'de kilitlenme sorunu düzeltildi. (b/137209870)

Sürüm 1.1.0-rc01

2 Temmuz 2019

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 ve androidx.fragment:fragment-testing:1.1.0-rc01 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Parçalar, geçiş devam ederken show() veya hide() işlemleri kullanıldığında artık görünürlüklerini düzgün şekilde güncelliyor. (b/133385058)
  • replace() öncesinde setPrimaryNavigationFragment() kullanılan bir FragmentTransaction açılırken oluşan NullPointerException düzeltildi. (b/134673465)

Sürüm 1.1.0-beta01

5 Haziran 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 ve androidx.fragment:fragment-testing:1.1.0-beta01 yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • İç içe yerleştirilmiş Fragment'ler için androidx.lifecycle.Lifecycle geri çağırmaları (özellikle STARTED, RESUMED, PAUSED, STOPPED ve DESTROYED ile ilgili) artık düzgün şekilde iç içe yerleştiriliyor. (b/133497591)
  • Bir Fragment'ın onCreate() içinde kaydedilen OnBackPressedCallback örnekleri artık alt FragmentManager'a göre önceliklidir. (b/133175997)
  • Üst öğe parçası değiştirilirken alt öğe parçaları artık animasyonlu olarak gösterilmiyor. (b/121017790)
  • Artık animateLayoutChanges="true" kullanılırken parçalarla ilgili animasyonlar ve geçişler yoksayılıyor. Bu sayede, parçaların düzgün şekilde yok edilmemesine neden olan sorun düzeltildi. (b/116257087)

Sürüm 1.1.0-alpha09

16 Mayıs 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 ve androidx.fragment:fragment-testing:1.1.0-alpha09 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

API değişiklikleri

  • Birincil gezinme parçası değiştiğinde artık parçalar yeni bir onPrimaryNavigationFragmentChanged(boolean) yöntemine geri çağırma alıyor. aosp/960857

Hata düzeltmeleri

  • Bir alt fragment tarafından şişirilen menü öğeleri, üst fragment kaldırıldığında artık doğru şekilde kaldırılıyor. b/131581013

Sürüm 1.1.0-alpha08

7 Mayıs 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 ve androidx.fragment:fragment-testing:1.1.0-alpha08 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Bu sürüm, Preferences 1.1.0-alpha01 ile 1.1.0-alpha04 sürümleriyle uyumlu değildir. Fragments'ın bu sürümünü kullanırken lütfen Preferences 1.1.0-alpha05 sürümüne yükseltin.

Yeni özellikler

  • Zaman aşımı süresini alan yeni bir postponeEnterTransition() aşırı yüklemesi eklendi. Bu sürenin ardından Fragment, startPostponedEnterTransition() b/120803208'i otomatik olarak çağırır.

API değişiklikleri

  • Önemli değişiklik: Daha önce desteği sonlandırılan ve Bundle alan FragmentFactory instantiate yöntemi kaldırıldı. aosp/953856
  • Önemli değişiklik: FragmentPagerAdapter ve FragmentStatePagerAdapter içindeki RESUME_ONLY_CURRENT_FRAGMENT ve USE_SET_USER_VISIBLE_HINT sabitleri sırasıyla BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ve BEHAVIOR_SET_USER_VISIBLE_HINT olarak yeniden adlandırıldı. aosp/954782

Hata düzeltmeleri

  • Yaşam döngüsü setMaxLifecycle() ile sınırlandırılmış olan parçalar, son durumlarına ulaşmadan önce artık devam ettirilmiyor. b/131557151
  • setMaxLifecycle(Lifecycle.State.CREATED) kullanılırken parçaların görünümü düzgün şekilde yok edilir. aosp/954180

Sürüm 1.1.0-alpha07

25 Nisan 2019

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 ve androidx.fragment:fragment-testing:1.1.0-alpha07 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • Artık bir FragmentTransaction üzerinde setMaxLifecycle() işlevini çağırarak bir Fragment için maksimum yaşam döngüsü durumu ayarlayabilirsiniz. Bu API, artık desteği sonlandırılan setUserVisibleHint() API'sinin yerini almıştır. FragmentPagerAdapter ve FragmentStatePagerAdapter, yeni davranışa geçmenize olanak tanıyan yeni bir oluşturucuya sahiptir. (b/129780800)

API Değişiklikleri

  • FragmentScenario üzerindeki moveToState(STARTED) artık yalnızca API 24 ve sonraki sürümlere sahip cihazlarda çağrılabilir. (b/129880016)

Davranış Değişiklikleri

  • (b/129907905) nedeniyle, arka yığında bulunan parçalar, barındırma etkinliği yeniden oluşturulduğunda onCreateView() için geri çağırma almaz. onCreateView() artık yalnızca parça görünür hale geldiğinde (yani geri yığın çıkarıldığında) çağrılacak.

Hata düzeltmeleri

  • XML'de <fragment> etiketi ve FragmentActivity veya AppCompatActivity öğesinin contentLayoutId oluşturucusu kullanılırken oluşan sorun düzeltildi. (b/129907905)
  • Yapılandırma değişikliğinden sonra arka yığındaki parçaların en az CREATED'ya taşınmamasına ve bu nedenle ViewModel'lerin ve alt tutulan parçaların düzgün şekilde kaldırılmamasına neden olan sorun düzeltildi. (b/129593351)
  • Örnek durumu kaydedildikten sonra tutulan parçaların senkronizasyonunun bozulması nedeniyle restoreSaveState'da kilitlenmeye neden olan sorun düzeltildi. (b/130433793) (aosp/947824)
  • Parça yaşam döngüsüyle eklenen bir OnBackPressedCallback, FragmentManager'nin geri yığınında bulunuyorsa çağrılmamasına neden olan sorunlar düzeltildi. Daha fazla bilgi için androidx.activity 1.0.0-alpha07'ye bakın. (aosp/948209)
  • Parçalar artık animasyonlar için LAYER_TYPE_HARDWARE zorunluluğu getirmiyor. Özellikle bir donanım katmanı animasyonuna ihtiyacınız varsa lütfen bunu animasyonunuzun bir parçası olarak ayarlayın. (b/129486478)

Sürüm 1.1.0-alpha06

3 Nisan 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 ve androidx.fragment:fragment-testing:1.1.0-alpha06 özellikleri kullanıma sunulur. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni özellikler

  • FragmentManager tarafından oluşturulan istisnalar artık iletide Fragment'ın adını içeriyor. (b/67759402)

API Değişiklikleri

  • Fragment ve FragmentActivity artık @LayoutRes int alan ikinci bir oluşturucu içeriyor. Bu oluşturucu, sınıfınıza @ContentView ile açıklama ekleme şeklindeki önceki davranışın yerini alıyor. Bu yaklaşım hem uygulama hem de kitaplık modüllerinde çalışır. (b/128352521)
  • FragmentActivity'nin onActivityResult() alanı artık düzgün şekilde @CallSuper olarak işaretleniyor. (b/127971684)
  • FragmentFactory'nin bir Bundle bağımsız değişkeni alan instantiate yöntemi kullanımdan kaldırıldı. Uygulamalar, Bundle almayan yeni instantiate aşırı yüklemesini kullanmalıdır. (b/128836103)
  • FragmentScenario yöntemleri artık @StyleRes ile düzgün şekilde açıklama ekleniyor. (aosp/924193)
  • FragmentTabHost desteği sonlandırıldı. (b/127971835)
  • FragmentActivity'nin getThemedContext() özelliği kaldırıldı. (aosp/934078)

Hata düzeltmeleri

  • 1.1.0-alpha05 sürümünde, gelen parçanın ekranda yanıp sönmesine neden olan regresyon düzeltildi. (b/129405432)
  • Bir popBackStack+replace+popBackStack işlem dizisinden sonra birincil gezinme parçasının kaybolmasına neden olan sorun düzeltildi. (b/124332597)
  • Parça durumu geri yüklenirken Etkinliğinizde @ContentView oluşturucularını kullanmayla ilgili sorun düzeltildi. (b/127313094)
  • Mevcut bir hedef Fragment'ı FragmentManager'a henüz eklenmemiş bir Fragment ile değiştirirken setTargetFragment() mantığı düzeltildi. (aosp/932156)

Sürüm 1.1.0-alpha05

13 Mart 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 ve androidx.fragment:fragment-testing:1.1.0-alpha05 özellikleri kullanıma sunulur. Bu sürüme dahil edilen tüm commit'lerin listesini burada bulabilirsiniz.

Yeni özellikler

  • @ContentView not aramaları artık önbelleğe alınıyor (b/123709449)

Davranış değişiklikleri

  • Farklı bir FragmentManager'a bağlı bir Fragment ile remove(), hide(), show(), detach() ve setPrimaryNavigationFragment()'i çağırmak artık sessizce başarısız olmak yerine IllegalStateException istisnası oluşturuyor (aosp/904301).

Hata düzeltmeleri

  • FragmentActivity için onNewIntent artık @CallSuper ile doğru şekilde işaretleniyor (b/124120586)
  • getDialog().dismiss() veya getDialog().cancel() kullanılırken DialogFragment'nın onDismiss()'sinin iki kez çağrılması sorunu düzeltildi (b/126563750).

Sürüm 1.1.0-alpha04

7 Şubat 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 ve androidx.fragment:fragment-testing 1.1.0-alpha04 özellikleri kullanıma sunulur.

Yeni özellikler

  • @ContentView sınıfı ek açıklaması için destek eklendi. Bu sayede, onCreateView() öğesini geçersiz kılmak yerine hangi düzen XML dosyasının genişletilmesi gerektiğini belirtebilirsiniz. İlgili çalışmaları onViewCreated()'da görüntülemeniz önerilir. (aosp/837619)
  • fragment-testing artık androidx.test:core-ktx 1.1.0 kararlı sürümüne bağlıdır (b/121209673).
  • Artık Parça tarafından barındırılan seçenek menülerini test etmek için openActionBarOverflowOrOptionsMenu ile FragmentScenario'yi kullanabilirsiniz (b/121126668).

API değişiklikleri

  • requireArguments() veya IllegalStateException (b/121196360) döndüren bir requireArguments() yöntemi eklendi.@NonNull Bundle
  • getLifecycle(), getViewLifecycleOwner() ve getViewLifecycleOwnerLiveData()'nin geçersiz kılınmaması gerektiği ve gelecekteki bir sürümde nihai hale getirileceğiyle ilgili bir not eklendi. Şu anda bu yöntemi geçersiz kılıyorsanız lütfen özellik isteği gönderin. (aosp/880714)
  • getViewModelStore() öğesinin geçersiz kılınmaması gerektiği ve gelecekteki bir sürümde nihai hale getirileceğiyle ilgili bir not eklendi. Şu anda bu yöntemi geçersiz kılıyorsanız lütfen özellik isteği gönderin. (aosp/880713)
  • Fragment'ların önceki sürümleriyle ikili uyumluluk sorunu düzeltildi. (aosp/887877) (aosp/889834)

Hata düzeltmeleri

  • null öğesini setTargetFragment() öğesine ilettiğinizde hedef parçalar doğru şekilde temizlenir. (aosp/849969)
  • Hedef parçaların bazen onDestroy() içinde veya sonrasında kullanılamamasına neden olan sorun düzeltildi. (b/122312935)
  • DialogFragment'in onDismiss() yöntemi artık onDestroy()'dan önce çağrılıyor. (aosp/874133) (aosp/890734)

Sürüm 1.1.0-alpha03

17 Aralık 2018

Yeni özellikler

  • Fragment artık BundleSavedStateRegistryOwner uyguluyor ve yeni yayınlanan SavedState kitaplığına [aosp/824380] bağlı.
  • Kapsayan Etkinlikle ilişkili ViewModel'leri almak için by activityViewModels Kotlin özelliği temsilcisi eklendi [b/119050253]
  • by viewModels Kotlin özelliği temsilcisi, ViewModelStoreOwner almak için isteğe bağlı bir lambda yöntemi alacak şekilde genişletildi. Bu sayede, üst parçayı veya diğer özel ViewModelStoreOwner'yi val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253] gibi kodlarla iletebilirsiniz.

API değişiklikleri

  • FragmentScenario artık Theme.AppCompat [b/119054431] gibi bir tema belirtmenize olanak tanıyor. Bu, zarar veren bir değişikliktir.
  • requireView() yöntemi eklendi. Bu yöntem, @NonNull View döndürür veya IllegalStateException oluşturur [b/120241368].
  • requireParentFragment() yöntemi eklendi. Bu yöntem @NonNull Fragment döndürür veya IllegalStateException oluşturur [b/112103783].

Hata düzeltmeleri

Sürüm 1.1.0-alpha02

3 Aralık 2018

Yeni özellikler

  • FragmentScenario'nun Kotlin uzantıları artık FragmentFactory örneği iletmek yerine Fragment oluşturma için lambda kullanmanıza olanak tanıyor. (aosp/812913)

Hata düzeltmeleri

  • Geri yığında iç içe yerleştirilmiş Fragment'ler kullanılırken oluşan IllegalStateException düzeltildi (b/119256498).
  • FragmentScenario.recreate(), FragmentFactory ile kullanılırken kilitlenme sorunu düzeltildi (aosp/820540)
  • Hedef parçaların, parça kaldırıldıktan sonra erişilememesine neden olan sorun düzeltildi (aosp/807634).

Sürüm 1.1.0-alpha01

5 Kasım 2018

Bu, androidx.test:core API'leri üzerine oluşturulan fragment-testing ve FragmentScenario yapay nesnesinin ilk sürümüdür. Daha fazla bilgi için Parça testi dokümanlarını inceleyin.

Yeni özellikler

  • Fragment'leri yalıtılmış olarak test etmek için yeni FragmentScenario sınıfı.
  • Yeni Fragment örneklerinin nasıl oluşturulacağını kontrol etmek için artık herhangi bir FragmentManager üzerinde FragmentFactory ayarlayabilirsiniz.
  • Bir Fragment'ten ViewModel'leri almak için yeni bir by viewModels() Kotlin özelliği temsilcisi eklendi.
  • Bekleyen giriş etkinlikleri (ör. tıklamalar) artık bir Fragment'ın onStop() içinde iptal ediliyor.

API değişiklikleri

  • Fragment API yüzeyindeki nullability ek açıklamaları önemli ölçüde genişletildi.

Hata düzeltmeleri

  • Fragment işlemlerinin LiveData içinde başarısız olmasına neden olan sorun düzeltildi. (b/77944637)

Bilinen sorunlar

  • Bir Fragment, FragmentManager'dan kaldırıldıktan sonra hedef Fragment'a erişilemez.
  • fragment-testing, doğru androidx.test:core:1.0.0 yerine androidx.test:core:1.0.0-beta01 SDK'sına bağlıdır.