Parça
Son Güncelleme | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
30 Ekim 2024 | 1.8.5 | - | - | - |
Bağımlılıkları beyan etme
Fragment'e bağımlı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Eski
dependencies { def fragment_version = "1.8.3" // 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.3" // 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'i iyileştirmemize yardımcı olacaktır. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.8
Sürüm 1.8.5
30 Ekim 2024
androidx.fragment:fragment-*:1.8.5
yayınlanır. 1.8.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yalnızca Tahmini Geri hareketi iptal edildikten veya kesintiye uğradıktan sonra
saveBackStack
tarafından tetiklenenIllegalStateException
sorunu düzeltildi. (I3387d, b/342419080)
Sürüm 1.8.4
2 Ekim 2024
androidx.fragment:fragment-*:1.8.4
yayınlanır. 1.8.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Androidx Geçişler kullanılırken sistem geri düğmesine hızlıca basmanın veya geri hareketi hızlıca yapmanın Fragment'lerin kilitlenmesine neden olduğu sorun düzeltildi. (Ibc038, b/364804225)
- Tahmini geri hareketi kesintiye uğratmanı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)
AndroidFragment
örneğinizin kullandığı Sınıfı dinamik olarak değiştirirkenAndroidFragment
öğesindekiUninitializedPropertyAccessException
sorunu düzeltildi. (I12dea)
Sürüm 1.8.3
4 Eylül 2024
androidx.fragment:fragment-*:1.8.3
yayınlanır. Sürüm 1.8.3 bu taahhütleri içerir.
Hata Düzeltmeleri
FragmentManager
artık Tahmine Dayalı Geri hareketini kullanırken beklemedeki işlemleri doğru şekilde hesaba katıyor. Bu sayede, sistem geri yükleme işlemi artıkIndexOutOfBoundsException
hatasına neden olmaz. (I9ba32, b/342316801)AndroidFragment
, içeren etkinliğin/fragmanın durumu zaten kaydedilmişken besteye eklendiğinde artık kilitlenmiyor. (I985e9, b/356643968)
1.8.2 sürümü
24 Temmuz 2024
androidx.fragment:fragment-*:1.8.2
yayınlanır. 1.8.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
AndroidFragment
artık üst fragmanın Fragman geri yığınına yerleştirildiği durumları düzgün şekilde ele alarak bu fragmana geri dönerken "No view found for id" (No view found for id) sorunlarının önüne geçiyor. (I94608)ViewGroup
alanFragmentTransaction.add
yöntemi aracılığıyla eklenen parçalar artıkonStart()
'a geçmeden önceonContainerAvailable
'yi bekler. Bu durum,AndroidFragment
gibi API kullanıcılarını etkiler.AndroidFragment
artıkonStart()
üzerinden taşımadan önceAndroidFragment
'nin kompozisyona yeniden girmesini bekler. (I94608)
Sürüm 1.8.1
26 Haziran 2024
androidx.fragment:fragment-*:1.8.1
yayınlanır. 1.8.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Tahmine dayalı geri hareketi başlatılırken kapsayıcı içermeyen parçaların hemen
DESTROYED
olması sorunu düzeltildi. Hareket tamamlanana kadarCREATED
durumunda tutulurlar. (If6b83, b/345244539)
1.8.0 sürümü
12 Haziran 2024
androidx.fragment:fragment-*:1.8.0
yayınlanır. 1.8.0 sürümü bu taahhütleri içerir.
1.7.0 sürümünden bu yana yapılan önemli değişiklikler
fragment-compose
yapıları artık parça sınıfı adı aracılığıyla Oluşturma hiyerarşisine parça eklemenize olanak tanıyan birAndroidFragment
Composable
içeriyor. Fragment'in durumunun kaydedilmesini ve geri yüklenmesini otomatik olarak yönetir. Bu yöntem, daha önce önerilen bir Fragment'i şişirmek içinAndroidViewBinding
kullanma yaklaşımının doğrudan yerine kullanılmalıdır.FragmentManager
OnBackStackChangedListener
arayüzündeonBackStackChangeCancelled
geri çağırması artıkFragmentManager
ürününde yürütülen işlemlerin bir parçası olarak tetiklenerekonBackStackChangeCommitted
geri çağırmasının zamanlamasıyla uyumlu hale geliyor.
Sürüm 1.8.0-rc01
29 Mayıs 2024
androidx.fragment:fragment-*:1.8.0-rc01
yayınlandı. 1.8.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
FragmentManagers OnBackStackChangedListener
arayüzündekionBackStackChangeCancelled
geri çağırma işlevi artıkFragmentManager
'de yürütülen işlemlerin bir parçası olarak tetikleniyor. Bu sayede,onBackStackChangeCancelled
geri çağırma işlevionBackStackChangeCommitted
geri çağırma işlevinin zamanlamasına daha yakın bir zamanlamayla tetikleniyor. (I5ebfb, b/332916112)
Sürüm 1.8.0-beta01
14 Mayıs 2024
androidx.fragment:fragment-*:1.8.0-beta01
yayınlanır. 1.8.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Fragment
1.7.1
'ten: Tahmini geri sarma özelliği artık yalnızca tüm parçaların bir Animasyonlu veya Aralanabilir Androidx Geçişi'ne sahip olduğu işlemler için çalışır. Bu, kısmen aranabilir bir işlemin iptal edilmesinin siyah ekrana neden olduğu sorunu düzeltir. (I43037, b/339169168)
Sürüm 1.8.0-alpha02
17 Nisan 2024
androidx.fragment:fragment-*:1.8.0-alpha02
yayınlanır. 1.8.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
1.7.0-rc02
Fragment'inden: Başka geçiş olmadansharedElement
ayarının neden çalışamayacağını belirtmek için günlükler eklendi. (Iec48e)1.7.0-rc02
Kırıntısından: Diğer tüm geçişlerin aranabilir olduğu bir işleme aranabilir olmayan bir paylaşılan öğe eklendiğinde kilitlenme yaşanmasına neden olan hata düzeltildi. Artık işlem, doğru şekilde aranabilir olmayan olarak kabul edilecektir. (I18ccd)
Sürüm 1.8.0-alpha01
3 Nisan 2024
androidx.fragment:fragment-*:1.8.0-alpha01
yayınlandı. 1.8.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Yeni
AndroidFragment
Composable
, parça sınıf adı aracılığıyla parçaların Compose hiyerarşisine eklenmesine olanak tanır. Parçanın durumunun kaydedilmesini ve geri yüklenmesini otomatik olarak gerçekleştirir. Bu, AndroidViewBindingComposable
öğesinin doğrudan yerine kullanılabilir.(b/312895363, Icf841)
Belge Değişiklikleri
OnBackStackChangedListener
API'leriyle ilgili dokümanlar, ne zaman çağrıldıklarını ve nasıl kullanılmaları gerektiğini gösterecek şekilde güncellendi. (I0bfd9)
Bağımlılık güncellemesi
- Bu parça artık Profil Yükleyici 1.3.1'e bağlıdır.
1.7 sürümü
Sürüm 1.7.1
14 Mayıs 2024
androidx.fragment:fragment-*:1.7.1
yayınlanır. Sürüm 1.7.1 bu taahhütleri içerir.
Hata Düzeltmeleri
- Tahmini geri alma özelliği artık yalnızca tüm parçaların bir Animasyonlu veya Aralanabilir Androidx Geçişi'ne sahip olduğu işlemler için çalıştırılır. Bu, kısmen aranabilir bir işlemin iptal edilmesinin boş ekrana neden olduğu sorunu düzeltir. (I43037, b/339169168)
1.7.0 sürümü
1 Mayıs 2024
androidx.fragment:fragment-*:1.7.0
yayınlandı. 1.7.0 sürümü bu taahhütleri içerir.
Tahmine Dayalı Geri Hareketi Desteği
Animator
veya AndroidX Transition 1.5.0 kullanılırken artık parçalar, tahmini uygulama içi geri desteği sağlıyor. Bu, kullanıcıların hareketi tamamlayarak veya iptal ederek işlemi yapmaya karar vermeden önce Animatörünüzü/Geçişinizi arayarak önceki parçayı görmek için geri hareketini kullanmasına olanak tanır.
Geçiş sistemi | XML Kaynağı | Tahmini geri gitmeyi destekler |
---|---|---|
Animation |
R.anim |
Hayır |
Animator |
R.animator |
Evet |
Framework Transition |
R.transition |
Hayır |
Geçiş 1.4.1 veya daha eski bir sürüme sahip AndroidX Transition |
R.transition |
Hayır |
Geçiş 1.5.0 ile AndroidX Transition |
R.transition |
Evet |
Öngörülü geri hareketi etkinleştirdikten sonra Fragmanlar'da tahmini geri desteğiyle ilgili sorun görürseniz lütfen sorununuzu yeniden oluşturan örnek bir projeyle Fragman için sorun gönderin. Etkinliğinizin onCreate()
bölümünde FragmentManager.enabledPredictiveBack(false)
'ü kullanarak tahmini geri özelliğini devre dışı bırakabilirsiniz.
FragmentManager.OnBackStackChangedListener()
, artık tahmini geri ilerleme durumunu almak için onBackStackChangeProgressed()
ve iptal edilen etkinlikleri almak için onBackStackChangeCancelled()
sağlıyor.
Parça Oluşturma Yapısı
Parça tabanlı bir mimariden tamamen Compose tabanlı bir mimariye geçme sürecindeki uygulamaları desteklemeye odaklanan yeni bir fragment-compose
yapısı oluşturuldu.
Bu yeni yapıda sunulan ilk özellik, Fragment
üzerinde bir content
uzantı yöntemidir. Bu yöntem, sizin için bir ComposeView
oluşturarak ve doğru ViewCompositionStrategy
'ı ayarlayarak tek bir Fragment'in kullanıcı arayüzünde Compose'u 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
yayınlandı. 1.7.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Başka geçiş olmadan bir
sharedElement
ayarlama işleminin neden başarısız olacağını gösteren günlükler eklendi. (Iec48e) - Diğer tüm geçişlerin aranabileceği işlemlere, aranamayan bir paylaşılan öğe eklenmesi durumunda kilitlenme yaşanmasına neden olan hata düzeltildi. Artık işlem, doğru şekilde aranabilir olmayan olarak kabul edilecektir. (I18ccd)
Sürüm 1.7.0-rc01
3 Nisan 2024
androidx.fragment:fragment-*:1.7.0-rc01
yayınlanır. 1.7.0-rc01 sürümü bu taahhütleri içerir.
Bağımlılık güncellemesi
- Bu parça artık Profil Yükleyici 1.3.1'e bağlıdır.
Sürüm 1.7.0-beta01
20 Mart 2024
androidx.fragment:fragment-*:1.7.0-beta01
yayınlanır. Sürüm 1.7.0-beta01 bu kayıtları içerir.
API Değişiklikleri
FragmentHostCallback
artık Kotlin dilinde yazılıyor. Böylece ana makine türünün genel türündeki boş değer,onGetHost()
döndürme türünün null değeriyle eşleşir. (I40af5)
Hata Düzeltmeleri
- Kapsayıcıda olmayan bir parçaya Tahmine Dayalı Geri hareketi uygulanırken söz konusu parçanın hiçbir zaman yok edilmemesine neden olan sorun düzeltildi. Parça hemen son duruma taşınır. (Ida0d9)
- Parçalarda, gelen geçişlerin Tahmini geri 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
yayınlanır. 1.7.0-alpha10 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Önceki Fragment sürümünde, Fragment'in
Animator
veya AndroidX Geçişi için tahmini geri desteği kullanıldığında,addOnBackStackChangedListener
aracılığıyla hiçFragmentManager.OnBackStackChangedListener
eklenmemişse Fragments'inhandleOnBackProgressed
'denNullPointerException
atması sorunu düzeltildi. (I7c835)
Sürüm 1.7.0-alpha09
24 Ocak 2024
androidx.fragment:fragment-*:1.7.0-alpha09
yayınlanır. 1.7.0-alpha09 sürümü bu taahhütleri içerir.
Parça Oluşturma Yapısı
Parça tabanlı bir mimariden tamamen Compose tabanlı bir mimariye geçme sürecindeki uygulamaları desteklemeye odaklanan yeni bir fragment-compose
yapısı oluşturuldu.
Bu yeni yapıda sunulan ilk özellik, Fragment
üzerinde bir content
uzantı yöntemidir. Bu yöntem, sizin için bir ComposeView
oluşturarak ve doğru ViewCompositionStrategy
'ı ayarlayarak tek bir Fragment'in kullanıcı arayüzünde Compose'u 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 oynatma ilerleme durumunu ve iptal edilen etkinlikleri almak içinonBackStackChangeProgressed()
veonBackStackChangeCancelled()
sağlamaktadır. (214b87)
Bilinen Sorun
Animator
veya AndroidX Geçişi için Parçanın Tahmine Dayalı Geri desteği kullanılırkenaddOnBackStackChangedListener
aracılığıyla hiçFragmentManager.OnBackStackChangedListener
eklenmemişse Fragment'larhandleOnBackProgressed
üzerindenNullPointerException
gönderir. Manuel olarak bir işleyici eklemek kilitlenmeyi çözer. Bunun için Fragments'ın bir sonraki sürümünde bir düzeltme yayınlanacaktır.
Sürüm 1.7.0-alpha08
10 Ocak 2024
androidx.fragment:fragment-*:1.7.0-alpha08
yayınlandı. 1.7.0-alpha08 sürümü bu taahhütleri içerir.
Temizlik
- Geçiş
1.5.0-alpha06
sürümünde düzeltilen Geçiş kitaplığı geçici çözümü kaldırıldı. (I04356)
Sürüm 1.7.0-alpha07
29 Kasım 2023
androidx.fragment:fragment-*:1.7.0-alpha07
yayınlanır. 1.7.0-alpha07 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Paylaşılan öğe geçişinin ayarlanmasından ve bir enter/exitTransition ayarlanmamasından kaynaklanan
NullPointerException
düzeltildi. (I8472b) 1.6.2
Parçası: BirFragmentContainerView
parçası şişirildiğindeFragmentManager
, ana makine ve kimlik gibi durumlarına artıkonInflate
geri çağırma işlevinde erişilebilir. (I1e44c, b/307427423)1.6.2
Fragment'inden: Bir dizi fragmenti kaldırmak içinclearBackStack
kullanılırken, üst fragment'inViewModels
temizlendiğinde iç içe yerleştirilmiş tüm fragment'lerinViewModel
de temizlenecektir. (I6d83c, b/296173018)
Sürüm 1.7.0-alpha06
4 Ekim 2023
androidx.fragment:fragment-*:1.7.0-alpha06
yayınlandı. 1.7.0-alpha06 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemesi
- Fragment'ler,
1.5.0-alpha04
Geçişi'nde eklenen yenianimateToStart
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
yayınlanır. 1.7.0-alpha05 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Fragment'ler artık Androidx Geçişler kullanılırken tahmini geri özelliğini destekliyor. Bu, tamamlanan hareketi kullanarak işlemi kaydetmeye veya iptal etmeye karar vermeden önce özel Androidx Transition ile önceki parçaya gitmek için geri hareketini kullanmanıza olanak tanır. Bu özelliği etkinleştirmek için
1.5.0-alpha03
Geçişi sürümünü kullanmanız gerekir. (Ib49b4, b/285175724)
Bilinen Sorunlar
- Geçiş içeren bir geri hareketini bir kez iptal ettikten sonra, geri hareketini tekrar başlattığınızda geçişin çalışmaması ve boş ekran oluşması sorunuyla ilgili olarak çalışmalarımız devam ediyor. Bu durum, Geçiş kitaplığındaki bir sorundan kaynaklanıyor olabilir. (b/300157785). Bu sorunu görürseniz lütfen sorununuzu yeniden üreten örnek bir projeyle Fragman için sorun gönderin. Etkinliğinizin
onCreate()
bölümündeFragmentManager.enabledPredictiveBack(false)
'ü kullanarak tahmini geri özelliğini devre dışı bırakabilirsiniz.
Sürüm 1.7.0-alpha04
6 Eylül 2023
androidx.fragment:fragment-*:1.7.0-alpha04
yayınlanır. 1.7.0-alpha04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Parçaların doğru yaşam döngüsü durumuna getirilemediği, tahmine dayalı geri hareketi iptal edilirken karşılaşılan sorun düzeltildi. (I7cffe, b/297379023)
- Animasyonların Geçişlerle çalışmasına izin verilen regresyonlar düzeltildi. (I59f36)
- Tahmini Geri özelliği, parçalarla birlikte kullanıldığında arka yığıntaki sondan ikinci parçada art arda iki kez geri gitmeye çalışıldığında kilitlenme sorunu düzeltildi. (Ifa1a4)
Sürüm 1.7.0-alpha03
23 Ağustos 2023
androidx.fragment:fragment-*:1.7.0-alpha03
yayınlanır. 1.7.0-alpha03 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Tahmini geri düğmesi kullanıldığında, parça yöneticisinin geri yığınındaki ilk parçanın atlanmasına ve 3 düğmeli gezinme veya tahmini geri hareketi aracılığıyla sistem geri düğmesi kullanıldığında etkinliğin sona ermesine neden olan parçalarla ilgili bir sorun düzeltildi. (I0664b, b/295231788)
Sürüm 1.7.0-alpha02
9 Ağustos 2023
androidx.fragment:fragment-*:1.7.0-alpha02
yayınlandı. 1.7.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- API 34'teki Tahmine Dayalı Geri Hareketlerle Parçalar kullanılırken, sarmayı (
Animations
,Transitions
) desteklemeyen veya hiç geçiş içermeyen bir geçiş sistemi kullanıyorsanız Parçalar artık geri işlemi yürütmeden önce hareketin tamamlanmasını bekleyecek. (I8100c)
Sürüm 1.7.0-alpha01
7 Haziran 2023
androidx.fragment:fragment-*:1.7.0-alpha01
yayınlanır. Bu sürüm, dahili bir dalda geliştirilmiştir.
Yeni Özellikler
Animator
kullanıldığında artık parçalar, tahmine dayalı uygulama içi geri desteği sağlıyor. Bu sayede, tamamlanmış hareketle işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce özel animatörünüzle önceki parçayı görmek için geri hareketini kullanabilirsiniz. DeneyselenablePredictiveBack()
özelliğini kullanarak vefalse
parametresini 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
yayınlandı. 1.6.2 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Bir
FragmentContainerView
öğesinin Fragment'i şişirildiğindeFragmentManager
, Ana makine ve kimlik gibi durumlarına artıkonInflate
geri çağırma işlevinde erişilebilir. (I1e44c, b/307427423) - Bir dizi parçayı kaldırmak için
clearBackStack
kullanıldığında, üst parçanınViewModels
temizlendiğinde iç içe yerleştirilmiş parçanınViewModel
da temizlenir. (I6d83c, b/296173018)
1.6.1 sürümü
26 Temmuz 2023
androidx.fragment:fragment-*:1.6.1
yayınlanır. Sürüm 1.6.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Etkinlik durdurulduğunda ancak silinmediğinde kaydedilen durumun, parça örneği
RESUMED
durumuna geri taşındıktan sonra bile yanlış bir şekilde önbelleğe alınmasına neden olan sorun düzeltildi. Bu, söz konusu fragmanı kaydetmek ve geri yüklemek için birden fazla geri yığın API'si kullanılırken söz konusu fragman örneği arka yığıntaysa ö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 değişiklik, Kotlin kullanıcılarının Activity'ye açık bir bağımlılık olmadan
ComponentDialog
'ü genişletememesine neden olan sorunu giderir. (b/287509323)
Sürüm 1.6.0
7 Haziran 2023
androidx.fragment:fragment-*:1.6.0
yayınlanır. 1.6.0 sürümü bu taahhütleri içerir.
1.5.0 sürümünden beri yapılan önemli değişiklikler
Fragment
'ların kayıtlı durumu, tamamen özel kitaplık durumu (özelParcelable
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 birBundle
içinde depolanır. Bu sayede, bir parçanın durumunun tam olarak nereden geldiğini belirleyebilirsiniz.FragmentManager.OnBackStackChangedListener
arayüzü, herFragment
ile sırasıyla parça arka yığınına eklenmeden/yığından kaldırılmadan hemen önce ve işlem taahhüt edildikten hemen sonra çağrılan iki ekonBackStackChangeStarted
veonBackStackChangeCommitted
geri çağırma işlevi ile genişletildi.FragmentStrictMode
, bir alt fragmanın ebeveyninin Görünüm hiyerarşisinde iç içe yerleştirildiğini ancak ebeveynininchildFragmentManager
öğesine eklenmediğini algılayan yeni birWrongNestedHierarchyViolation
ekledi.Intent
veyaIntentSender
alanFragment
veFragmentManager
API'leri artık null değerin iletilmesini önlemek için@NonNull
ile uygun şekilde ek açıklamaya sahiptir. Null değer, bu yöntemlerin çağırdığı ilgili Android çerçeve API'lerini her zaman hemen kilitlediğinden, null değer iletilmesi engellenir.DialogFragment
artıkrequireComponentDialog()
API aracılığıyla temelComponentDialog
'ye erişim sağlıyor.- Fragment artık Lifecycle
2.6.1
'e bağlıdır. - Parça artık SavedState
1.2.1
öğesine bağlı. - Parça artık ProfilePlayer
1.3.0
öğesine bağlı. fragment-testing-manifest
yapısı, manifest girişlerini parça testi bileşenlerinin geri kalanından ayırır. Bu, aşağıdakileri yapabileceğiniz anlamına gelir:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Bu işlem,
fragment-testing
ileandroidx.test
arasında sürüm sapması nedeniyle çakışmaları önler
Sürüm 1.6.0-rc01
10 Mayıs 2023
androidx.fragment:fragment-*:1.6.0-rc01
yayınlanır. 1.6.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Art arda birden fazla
startActivityForResult
isteği yapıldığındaActivityResult
'lerin 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ştirmeyen işlemler için gönderildiği (bu işlemler, arka yığını değiştiren işlemlerle karıştırılmışsa) sorun düzeltildi. (I0eb5c, b/279306628)
Sürüm 1.6.0-beta01
19 Nisan 2023
androidx.fragment:fragment-*:1.6.0-beta01
yayınlanır. 1.6.0-beta01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
postponeEnterTransition
öğesinin zaman aşımıyla kullanılması ve ardından ertelenen parçanın değiştirilmesi, ertelenen parçanın sızdırılmasına neden olmaz. (I2ec7d, b/276375110)- Yeni
onBackStackChangeStarted
veonBackStackChangeCommitted
geri çağırma işlevleri artık aynı parçayı birden fazla işlem içerse bile yalnızca bir kez gönderir. (Ic6b69)
Sürüm 1.6.0-alpha09
5 Nisan 2023
androidx.fragment:fragment-*:1.6.0-alpha09
yayınlandı. 1.6.0-alpha09 sürümü bu taahhütleri içerir.
API Değişiklikleri
DialogFragment
artıkrequireComponentDialog()
API aracılığıyla temelComponentDialog
'ye erişim sağlıyor. (I022e3, b/234274777)commitNow()
,executePendingTransactions()
vepopBackStackImmediate()
API'leri@MainThread
ile ek açıklamaya tabi tutuldu. Bu, artık bunların ana iş parçacığında çağrılmadığında derleme hatası vereceği anlamına geliyor. (Ic9665, b/236538905)
Hata Düzeltmeleri
FragmentManager
'te aynı karede kaydetme ve geri yükleme işleminin kilitlenmeye neden olabileceği bir hata düzeltildi. (Ib36af, b/246519668)OnBackStackChangedListener
onBackStackChangeStarted
veonBackStackChangeCommitted
geri çağırma işlevleri artık yalnızcaFragmentManager
geri yığın değiştirildiğinde yürütülür. (I66055, b/274788957)
Sürüm 1.6.0-alpha08
22 Mart 2023
androidx.fragment:fragment-*:1.6.0-alpha08
yayınlandı. 1.6.0-alpha08 sürümü bu kaydetmeleri içerir.
Davranış Değişikliği
OnBackStackChangedListener.onBackStackChangeCommited
geri çağırma işlevinin zamanlaması, parça işlemleri yürütülmeden önce yürütülecek şekilde ayarlandı. Bu, geri çağırmanın hiçbir zaman ayrılan bir parçanın iletilmemesini sağlar. (I66a76, b/273568280)
Hata Düzeltmeleri
1.5.6
Fragment'inden:Lifecycle
zatenSTARTED
ise ve bir sonuç zaten mevcutsasetFragmentResultListener
içindeclearFragmentResultListener
çağrısının çalışmamasına neden olan sorun düzeltildi. (If7458)
Bağımlılık Güncellemeleri
- Fragment artık Lifecycle
2.6.1
'e bağlıdır. (586fe7) - Parça artık SavedState
1.2.1
öğesine bağlıdır. (078e4e) - Parça artık ProfileInstaller
1.3.0
'a bağlıdır. (3fc05b)
Sürüm 1.6.0-alpha07
8 Mart 2023
androidx.fragment:fragment-*:1.6.0-alpha07
yayınlanır. 1.6.0-alpha07 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
1.5.6
Parça'dan: Bir Parçanın kaldırılmasının, Menü öğeleri eklenmiş olup olmamasına bakılmaksızı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
yayınlanır. 1.6.0-alpha06 sürümü bu kaydetmeleri içerir.
Davranış değişikliği
- Artık, parçalar hedef durumlarına taşınmaya başlamadan önce
FragmentManager
ürünününonBackStackChangedListener
üzerindeki yenionBackStackChangedStarted
geri çağırması yürütülecek. (I34726)
Sürüm 1.6.0-alpha05
8 Şubat 2023
androidx.fragment:fragment-*:1.6.0-alpha05
yayınlanır. 1.6.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentManager.OnBackStackChagnedListener
arayüzünde artık iki ek geri çağırma (onBackStackChangeStarted
veonBackStackChangeCommitted
) bulunmaktadır. Bunlar,FragmentManager
içinde geri yığın değişikliklerinin ne zaman gerçekleşeceğini kontrol etmenize ve ek bilgiler sağlamanıza olanak tanır. (Ib7ce5, b/238686802)
API Değişiklikleri
Intent
veyaIntentSender
alanFragment
veFragmentManager
API'leri artık null değerinin iletilmesini önlemek için@NonNull
ile uygun şekilde ek açıklamaya sahiptir. Null değer, bu yöntemlerin çağırdığı ilgili Android çerçeve API'lerini her zaman hemen kilitlediğinden, null değer iletilmesi istenmez. (I06fd4)
Sürüm 1.6.0-alpha04
7 Aralık 2022
androidx.fragment:fragment-*:1.6.0-alpha04
yayınlanır. 1.6.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentStrictMode
, bir alt parçanın üst öğenin Görünüm hiyerarşisinde iç içe yerleştirildiğini ancak üst öğeninchildFragmentManager
öğesine eklenmediğini algılayan yeni birWrongNestedHierarchyViolation
ekledi. (I72521, b/249299268)
Davranış Değişiklikleri
- Parçalar artık
onAttach()
öncesiSavedStateRegistry
durumlarını geri yükler ve bu sayede tüm üst yaşam döngüsü yöntemlerinden kullanılabilir. (I1e2b1)
API Değişiklikleri
fragment-testing-manifest
yapı, manifest girişlerini, parça testi bileşenlerinin geri kalanından ayırır. Bu durumda aşağıdakileri yapabilirsiniz:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Bu, fragment-testing
ile androidx.test
arasındaki sürüm uyuşmazlığı nedeniyle çakışmaları önler.(I8e534, b/128612536)
Hata Düzeltmeleri
1.5.5
Parçası'ndan: Parçalar,ViewModel
durumunu artık görünüm kayıt defteri kaydedilmiş durumunun bir parçası olarak hatalı bir şekilde kaydetmez. (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
yayınlandı. 1.6.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
DialogFragment
'ü genişleten sınıfların artıkonDismiss()
geçersiz kılmalarında super çağrısı yapması gerekecek. (I14798, b/238928865)
Hata Düzeltmeleri
- Parçaların her zaman doğru geri çağırmaları almasını sağlamak için, yeni sağlayıcı geri çağırma arayüzlerinin (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) entegrasyonunun neden olduğu regresyonlar 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
yayınlandı. 1.6.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
1.5.2
Fragment'inden:popBackStack()
vereplace()
işlemlerinin aynı anda yürütülmesinin, ayrılan fragment'lerin yanlışAnimation
/Animator
çalıştırmasına neden olduğu bir 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
serbest bırakıldı. 1.6.0-alpha01 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
Fragment
öğelerinin kayıtlı durumu, özel kitaplık durumu (özelParcelable
sınıfları) ile geliştirici tarafından sağlanan durum arasında tamamen bölündü. Bu durum, artık her zaman bir parçanın durumunun tam olarak nereden kaynaklandığını belirlemeye olanak tanıyan birBundle
içinde depolanıyor. (b/207158202)
Hata Düzeltmeleri
1.5.1
Fragmanı:DialogFragmentCallbacksDetector
'ta, AGP 7.4 ile birlikte paketlenen lint sürümünün kullanılmasının lint'in kilitlenmesine neden olduğu bir gerileme düzeltildi. (b/237567009)
Bağımlılık güncellemesi
- Fragment
1.5.1
: Fragment kitaplığı artık Lifecycle2.5.1
'e bağlıdır. (Id204c) - Parça
1.5.1
: Parça kitaplığı artık Etkinlik1.5.1
'e bağlıdır. (I10f07)
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
yayınlandı. 1.5.7 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
postponeEnterTransition
öğesinin zaman aşımıyla kullanılması ve ardından ertelenen parçanın değiştirilmesi, ertelenen parçanın sızdırılmasına neden olmaz. (I2ec7d, b/276375110)
1.5.6 sürümü
22 Mart 2023
androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
ve androidx.fragment:fragment-testing:1.5.6
yayınlandı. 1.5.6 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Herhangi bir Parça'nın kaldırılmasının, Menü öğeleri eklenmiş olup olmamasına bakılmaksızın etkinliğin menüsünü geçersiz kılmasına neden olan sorun düzeltildi. (50f098, b/244336571)
Lifecycle
zatenSTARTED
ise ve bir sonuç zaten mevcutsasetFragmentResultListener
içindeclearFragmentResultListener
çağrısının çalışmaması sorunu düzeltildi. (If7458)
1.5.5 sürümü
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
yayınlandı. 1.5.5 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Parçalar,
ViewModel
durumunu artık görünüm kayıt defteri kaydedilmiş durumunun bir parçası olarak hatalı bir ş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
yayınlandı. 1.5.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Sağlayıcı geri çağırma arayüzü (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) uygulamayan bir ana makineyle özelFragmentController
kullanılması ve desteği sonlandırılan dağıtım işlevinin çağrılması durumunda alt parçalara dağıtım yapılamamasına neden olan bir 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ü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Arka yığıntaki parçaların
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
veonConfigurationChanged()
geri çağırma çağrıları almasına neden olan bir hata düzeltildi. (I34581, I8dfe6, b/242570955) - İç içe yerleştirilmiş alt parçalar artık birden fazla
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
veyaonConfigurationChanged()
geri çağırması 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ü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Aynı anda bir
popBackStack()
ve birreplace()
işleminin yürütülmesinin, ayrılan parçaların yanlışAnimation
/Animator
çalıştırmasına neden olabileceğ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
serbest bırakıldı. 1.5.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- AGP 7.4 ile paket halinde sunulan lint sürümünü kullanmanın lint'in çökmesine neden olacağı
DialogFragmentCallbacksDetector
regresyonunu düzeltin. (b/237567009)
Bağımlılık güncellemesi
- Fragment kitaplığı artık yaşam döngüsüne
2.5.1
bağlıdır. (Id204c) - Fragment kitaplığı artık Etkinlik
1.5.1
'e bağlıdır. (I10f07)
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
serbest bırakıldı. 1.5.0 sürümü bu kaydetmeleri içerir.
1.4.0'dan bu yana önemli değişiklikler
- CreationExtras Entegrasyonu -
Fragment
, artık Yaşam döngüsü2.5.0
'ninCreationExtras
aracılığıyla durum bilgisiz birViewModelProvider.Factory
sağlayabilir. - Bileşen iletişim kutusu entegrasyonu:
DialogFragment
artıkonCreateDialog()
tarafından döndürülen varsayılan iletişim kutusu olarak1.5.0
etkinliği aracılığıylaComponentDialog
'ı kullanır. - Kayıtlı Örnek Durumu Yeniden Düzenleme: Fragment'ler, örnek durumlarını kaydetme şeklini değiştirmeye başladı. Bu, parçaya hangi durumun kaydedildiğini ve durumun kaynağını net bir şekilde tanımlamaya yönelik bir çabadır. Mevcut değişiklikler şunlardır:
FragmentManager
artık kayıtlı örnek durumunu doğrudan özel birParcelable
yerineBundle
içine kaydediyor.Fragment Result APIs
aracılığıyla ayarlanan ve henüz yayınlanmamış sonuçlar artıkFragmentManager
'ın dahili durumundan ayrı olarak kaydedilir.- Her bir parçayla ilişkili durum artık
FragmentManager
'ün dahili durumundan ayrı olarak kaydedilir. Böylece, her bir parçayla ilişkili kayıtlı durum miktarınıFragment
hata ayıklama günlüğündeki benzersiz kimliklerle ilişkilendirebilirsiniz.
Diğer Değişiklikler
FragmentStrictMode
, artık sınıf adıyla birlikteallowViolation()
kullanarak gizli üçüncü taraf parçalarının belirli ihlal cezalarını atlamasını sağlıyor.- Etkinliğinizin
ActionBar
bölümüne menü sağlamak için kullanılan Fragment API'lerin desteği sonlandırıldı.1.4.0
Etkinliği'ne eklenenMenuHost
veMenuProvider
API'leri, parçaların kullanması gereken test edilebilir, 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
yayınlandı. 1.5.0-rc01 sürümü bu taahhütleri içerir.
Kayıtlı Örnek Durumunu Yeniden Düzenleme
- Her bir parçayla ilişkili durum artık
FragmentManager
'ün dahili durumundan ayrı olarak kaydedilir. Böylece, her bir parçayla ilişkili kayıtlı durum miktarını parça hata ayıklama günlüklerinde 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
yayınlandı. 1.5.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
DialogFragment
,showNow
işleviyle eşleşme içincommitNow
kullanan yeni birdismissNow
yöntemi ekledi. Bu işleminDialog
'ün hemen kapatılmasına neden olmayacağını, yalnızcaFragmentManager
'un durumunu eşzamanlı olarak güncelleyeceğini unutmayın. (I15c36, b/72644830)
Kayıtlı Örnek Durumunu Yeniden Düzenleme
FragmentManager
, kaydedilen örnek durumunu artık doğrudan özel birParcelable
yerineBundle
öğesine kaydediyor. Bu, Fragment'ler tarafından aslında nelerin kaydedildiği konusunda daha fazla şeffaflık sağlamanın ilk adımıdır. (I93807, b/207158202)- Fragment Result API'leri aracılığıyla ayarlanan ve henüz yayınlanmayan sonuçlar artık
FragmentManager
'nin dahili durumundan ayrı olarak kaydedilir. Bu sayede, kayıtlı örnek durumunuzun bir parçası olarak hangi sonuçların kaydedildiği konusunda daha fazla şeffaflık elde edebilirsiniz. (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
serbest bırakıldı. 1.5.0-alpha05 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
Fragment
adlı kullanıcınınsetHasOptionsMenu()
özelliği kullanımdan kaldırıldı. Menüleri ve menü öğelerini yönetmek için Fragment1.5.0-alpha04
sürüm notlarına göre yeni menü API'leri kullanılmalıdır. (I7b4b4, b/226438239)
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
yayınlandı. 1.5.0-alpha04 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Etkinliğinizin
ActionBar
bölümüne menü sağlamak için kullanılan Fragment API'leri, fragmanınızı etkinliğinizle sıkı bir şekilde bağladıkları ve tek başına test edilemedikleri için kullanımdan kaldırıldı.1.4.0-alpha01
Etkinliği'ne eklenenMenuHost
veMenuProvider
API'leri, parçaların kullanması gereken test edilebilir, yaşam döngüsü bilincine sahip eşdeğer bir API yüzeyi sağlar. (I50a59, I20758)
Hata Düzeltmeleri
SavedStateViewFactory
artıkSavedStateRegistryOwner
ile başlatılmış olsa bileCreationExtras
kullanımını destekliyor. Ek bilgiler sağlanırsa başlatılan bağımsız değişkenler yoksayılır. (I6c43b, b/224844583)
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
yayınlandı. 1.5.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Artık
CreationExtras
değeriniby viewModels()
veby activityViewModels()
işlevlerine iletebilirsiniz. (Ibefe7, b/217601110)
Davranış Değişiklikleri
DialogFragment
,onCreateDialog()
tarafından döndürülen varsayılan iletişim kutusu olarak artıkComponentDialog
kullanıyor. (If3784, b/217618170)
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
serbest bırakıldı. 1.5.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
FragmentStrictMode
artık özel üçüncü taraf parçalarının sınıf adıylaallowViolation()
kullanarak belirli ihlal cezalarını atlama olanağı sunuyor. (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
serbest bırakıldı. 1.5.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
Fragment
artık Yaşam Döngüsü2.5.0-alpha01
kapsamında kullanıma sunulan ViewModel CreationExtras ile entegre edilebilir. (I3060b, b/207012585)
Hata Düzeltmeleri
1.4.1
Fragment'inden:FragmentContainerView
, xml'den oluşturulan görüntüleme kimlikleri negatif değerlere sahip olduğunda artık yasa dışı durum istisnası atmaz. (Ic185b, b/213086140)1.4.1
Fragmanı:by viewModels()
üşengeç işleviyle özel birownerProducer
lambda kullanılırken artık özel birViewModelProvider.Factory
sağlanmazsa her zaman parçanın fabrikasını kullanmak yerine söz konusu sahibindefaultViewModelProviderFactory
işlevi kullanılır. (I56170, b/214106513)Fragment
'ninregisterForActivityResult()
geri çağırma işlevindenViewModel
'e ilk kez erişildiğinde 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
yayınlandı. 1.4.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
FragmentContainerView
, artık XML dosyasından oluşturulan görüntüleme kimlikleri negatif değerler içerdiğinde geçersiz durum istisnası bildirmez. (Ic185b, b/213086140)by viewModels()
geç işleviyle birlikte özel birownerProducer
lambdası kullanılırken, her zaman parçanın fabrikasını kullanmak yerine özelViewModelProvider.Factory
sağlanmazsa artık bu sahibindefaultViewModelProviderFactory
öğesini kullanır. (I56170, b/214106513)
1.4.0 sürümü
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
yayınlandı. 1.4.0 sürümü bu taahhütleri içerir.
1.3.0 sürümünden bu yana yapılan önemli değişiklikler
FragmentStrictMode
API'leri, uygulamanızın veya kullandığınız kitaplıkların kullanımdan kaldırılmış parça API'lerini çağırmadığını doğrulamanıza olanak tanıyan çalışma zamanı denetimleri sunar. Bir ihlal algılandığında günlük mesajı yazdırmayı, kendi özel dinleyicinizi tetiklemeyi veya uygulamanızı kilitlemeyi seçebilirsiniz. Hangi kontrollerin etkinleştirileceğini ve hangi "cezaların" tetikleneceğini kontrol edenFragmentStrictMode.Policy
, yenisetStrictModePolicy()
yöntemi aracılığıyla birFragmentManager
üzerinde ayarlanabilir. Bu politika, söz konusuFragmentManager
için ve kendi benzersiz politikalarını ayarlamayan tüm alt parça yöneticileri için geçerlidir. Parçalar için StrictMode sayfasına bakın.FragmentContainerView
artık kapsayıcıya en son eklenen parçayı döndüren birgetFragment()
yöntemi sağlıyor. Bu,FragmentContainerView
kimliğiylefindFragmentById()
ile aynı mantığı kullanır ancak çağrının zincirlenmesine olanak tanır.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
artıkCloseable
'ü uygulayarak Kotlin'inuse
yöntemi veya try-with-resources ile kullanmanıza olanak tanır.Parçalar geçişinde temanızdan alınan standart Etkinlik geçişi animasyonunun etkinleştirilip etkinleştirilmeyeceğini belirtmek için
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
eklendi.FragmentManager.enableNewStateManager(boolean)
deneysel API'si kaldırıldı ve artık tek seçenek yeni durum yöneticisi.
Birden fazla geri yığın
FragmentManager
, addToBackStack()
kullanan parça işlemlerinden oluşan bir arka yığın sağlar. Bu sayede, bu işlemleri pop up olarak gösterebilir ve Durumları parçalarla kaydetme mekanizmalarını kullanarak parçalarınızın durumlarını uygun şekilde geri yüklemesine izin vererek önceki duruma dönebilirsiniz.
Bu sürüm, saveBackStack(String name)
, restoreBackStack(String name)
ve clearBackStack(String name)
olmak üzere üç yeni FragmentManager
API sağlayarak bu mekanizmaları genişletiyor. Bu API'ler, FragmentTransaction
öğesinin ve bu işlemlere eklenen her bir parçanın durumunu kaydetmek için addToBackStack()
ile aynı name
öğesini kullanır ve daha sonra bu işlemleri ve parçalarını durumlarını koruyarak geri yüklemenize olanak tanır. Bu, mevcut arka yığını kaydederek ve kaydedilen bir yığını geri yükleyerek birden fazla arka yığını etkili bir şekilde "değiştirmenize" olanak tanır.
saveBackStack()
, popBackStack()
ile benzer şekilde çalışır. Asenkrondur ve belirli bir ada geri dönen tüm parça işlemlerinin geri alınmasına ("pop") ve eklenen parçaların yok edilip kaldırılmasına neden olur. Ancak birkaç önemli açıdan farklılık gösterir:
saveBackStack()
her zaman dahildir.- Belirtilen ad arka yığınta bulunamazsa veya boş bir ad sağlanırsa arka yığıntaki tüm işlemleri pop-up olarak gösteren
popBackStack()
'in aksine, daha önce tam olarak bu boş olmayan adlaaddToBackStack()
kullanarak bir parça işlemi taahhüt etmediysenizsaveBackStack()
hiçbir şey yapmaz. - Bu işlemlerden eklenen tüm parçaların durumu kaydedilir. Bu, her parçanın görüntüleme durumunun depolandığı, her parçanın
onSaveInstanceState()
tanesinin çağrıldığı ve bu durumun geri yüklendiği, bu parçalarla ilişkilendirilmiş tümViewModel
örneklerinin saklandığı (veonCleared()
bunlar üzerinde çağrılanmaz) anlamına gelir.
saveBackStack()
ile kullanılabilen parça işlemleri belirli ölçütleri karşılamalıdır:
- İşlemlerin tek bir atomik işlem olarak geri yüklenebilmesi için her bir parça işleminde
setReorderingAllowed(true)
kullanılmalıdır. - Kayıtlı işlem grubu, aradaki süre içinde arka yığınta ne tür değişiklikler yapılmış olursa olsun daha sonra geri yüklenebilmesi için kendi kendine yeterli olmalıdır (yani, bu işlem grubunun dışındaki herhangi bir parçayı açıkça referans almamalıdır).
- Kayıtlı hiçbir parça, geri yığın kaydedildikten sonra
FragmentManager
'ün kayıtlı parçalara ait referans döndürmediğinden emin olmak için ayrılmış parça olamaz veya geçişli alt parça grubunda ayrılmış parça içeremez.
saveBackStack()
, restoreBackStack()
ve clearBackStack()
'ye benzer şekilde, önceden kaydedilmiş bir geri yığınını geri yükleyen veya temizleyen bu işlevler, daha önce saveBackStack()
'yi aynı adla çağırmadıysanız hiçbir şey yapmaz.
Daha fazla bilgi için Birden fazla arka 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 olmadan yayınlandı. 1.4.0-rc01 sürümü bu taahhütleri 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ü bu taahhütleri içerir.
Hata Düzeltmeleri
- Üst öğe parçaları artık kendi geri çağırma işlevini başlatmadan önce
onHiddenChanged()
öğesini tüm hiyerarşileri boyunca dağıtacaktır. (Iedc20, b/77504618) - Artık açık klavyesi olan bir parçadan, geri dönüştürücü görünümü olan bir parçaya geçiş yapıldığında klavye otomatik olarak kapanacak. (I8b842, b/196852211)
DialogFragment
artıkshow()
,showNow()
veyadismiss()
çağrılarını yaptığınızda oluşturduğu tüm işlemler içinsetReorderingAllowed(true)
kullanıyor. (Ie2c14)DetachAndAttachFragmentInSameFragmentTransaction
olan son derece 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
yayınlandı. 1.4.0-alpha10 sürümü bu taahhütleri içerir.
Lint
- Aynı
FragmentTransaction
içinde hemdetach()
hem deattach()
işlevinin aynıFragment
üzerinde çağrıldığını algılayanDetachAndAttachFragmentInSameFragmentTransaction
lint uyarısı eklendi. Bu tamamlayıcı işlemler aynı işlemde yapıldığında birbirini iptal ettiğinden, herhangi bir şey yapmak için ayrı işlemlere bölünmelidir. (aosp/1832956, b/200867930) MenuHost
'ninaddMenuProvider
API'si kullanılırken Fragment yaşam döngüsünün Fragment görünümü yaşam döngüsüne doğru şekilde uygulanması içinFragmentAddMenuProvider
lint hatası eklendi. (aosp/1830457, b/200326272)
Belge Güncellemeleri
- Artık Activity Result API'leri (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
veonRequestPermissionsResult
) tarafından yönetilen API'ler için desteğin sonlandırılmasıyla ilgili mesajlar daha fazla ayrıntı içerecek şekilde genişletildi. (cce80f) - Hem
Fragment
hem deDialogFragment
içinonActivityCreated()
'ün kullanımdan kaldı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
yayınlandı. 1.4.0-alpha09 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Artık
saveBackStack(name)
ile daha önce kaydedilen tüm durumları temizlemek içinclearBackStack(name)
'ü arayabilirsiniz. (I70cd7)
API Değişiklikleri
FragmentContainerView
sınıfı,getFragment
işlevinin boş değere uygun şekilde saygı göstermesini sağlamak için Kotlin'de yeniden yazıldı. (If694a, b/189629145)- FragmentStrictMode artık Kotlin ile yazılmıştır (I11767, b/199183506)
Hata Düzeltmeleri
setReorderingAllowed(true)
ile eklenen ve ardından bekleyen işlemler yürütülmeden hemen kaldırılan bir Fragment'in durumunun düzgün şekilde temizlenmemesi sorunu 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
yayınlandı. 1.4.0-alpha08 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Gereksiz parantezleri daha iyi ele almak için
UseRequireInsteadOfGet
lint denetimi iyileştirildi. (I2d865) UseGetLayoutInflater
lint kontrolü, ek uç durumları ele alacak şekilde 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
herhangi bir önemli değişiklik yapılmadan yayınlandı. 1.4.0-alpha07 sürümü bu taahhütleri 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
yayınlandı. 1.4.0-alpha06 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Arka yığınlar arasında hızlıca geçiş yaparken birden fazla arka yığınla ilgili bir sorun düzeltildi. Bu sorun,
FragmentTransaction
geri yüklenirkenIllegalStateException
olarak veya bir parçanın ikinci kopyası olarak görünürdü. (I9039f) FragmentManager
öğesinin, daha öncesaveBackStack()
aracılığıyla kaydedilen durumun bir kopyasını, ilgili durum geri yüklendikten sonra bile saklamasına neden olan sorun düzeltildi. (Ied212)DialogFragment
sınıfınındismissAllowingStateLoss()
yöntemi, DialogFragment sınıfınıshow(FragmentTransaction, String)
yöntemi aracılığıyla eklediğinizde durum kaydedildikten sonra çağrıldığında 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
yayınlandı. 1.4.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
1.3.6
Fragment'i: Kök görünümdetransitionGroup=”true”
ayarlandığındahide()
kullanılırken Fragment'in görünümü artık düzgün şekildeGONE
olarak ayarlandı. (aosp/1766655, b/193603427)1.3.6
Fragmanı:FragmentActivity
artık geçersiz kıldığı yaşam döngüsü geri çağırmalarında ilk işlemi olarak her zaman kayıtlı durumun kilidini açar. (I6db7a)
Bağımlılık güncellemesi
1.3.6
Parçası: Parçalar artık1.2.4
Etkinliği'ne (I3a66c) bağlıdır.
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
serbest bırakıldı. 1.4.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
FragmentManager
, durumunu kaydetmek için artıkSavedStateRegistry
kullanıyor.saveAllState()
verestoreSavedState()
yöntemleri deFragmentController
sürümünde kullanımdan kaldırıldı. ParçalarıFragmentActivity
dışında barındırmak içinFragmentController
kullanıyorsanızFragmentHostCallbacks
uygulamanızınSavedStateRegistryOwner
uygulamasını yapmanız gerekir. (Iba68e, b/188734238)
Hata Düzeltmeleri
- Birden fazla arka yığının desteklenmesi kapsamında
saveBackStack()
çağrısının,replace()
kullanan birFragmentTransaction
çalıştırılırken aynı anda yapılması durumunda 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 kayıtlı bir geri yığın manuel olarak geri yüklendikten sonra ortaya çıkanNullPointerException
hatası düzeltildi. Bu sayede,setReorderingAllowed(true)
değerinin tüm işlemler için kontrol edilmediği bir sorun da düzeltildi. (I8c593) FragmentManager
'ün,FragmentManager
'ten kaldırılmış olsa bile parçaların daha önce kaydedilmiş durumunu yanlış bir şekilde geri yüklemeye devam etmesiyle ilgili sorun düzeltildi. Bu durum, kayıtlı durumun zaman içinde sürekli olarak büyümesine neden oluyordu. (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
serbest bırakıldı. 1.4.0-alpha03 sürümü bu taahhütleri 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 eklenmekte olduğu kapsayıcıyı içeren daha ayrıntılı bir hata mesajına sahiptir. (Ib55f8)TargetFragmentUsageViolation
için kullanım alanı sınıflarında artık ihlalin neden olduğu parçayı ve içerdiği diğer bilgileri içeren daha ayrıntılı hata mesajları var. (Icc6ac)RetainInstanceUsageViolation
sınıfını genişleten sınıflar artık ihlal eden parçayı içeren daha ayrıntılı hata mesajlarına sahip. (I6bd55)FragmentReuseViolation
artık parçanın önceki kimliğini içeren daha ayrıntılı bir hata mesajına sahip. (I28ce2)SetUserVisibleHintViolation
artık kullanıcı görünen ipucunun neye ayarlandığını içeren daha ayrıntılı bir hata mesajı içeriyor. (Ib2d5f)
Davranış Değişiklikleri
FragmentContainerView
üzerindefitsSystemWindows
çağrısı yapmayla ilgili kısıtlama geri alındı. Bu işlem artık uygulamanızı kilitlemiyordur. (6b8ddd, b/190622202)
Hata Düzeltmeleri
- Parça
1.3.5
'ten: aosp/1679887 tarafından Parça1.3.4
'te paylaşılan öğe geçişlerinde tanıtılan bir gerileme düzeltildi. Parçalar artık geçiş gruplarını (doğrudantransitionGroup="true"
aracılığıyla veya dolaylı olarak birtransitionName
ya dabackground
aracılığıyla ayarlanır) doğru şekilde yönetiyor ve paylaşılan öğeler artıkIndexOutOfBoundsException
hatası vermiyor. (I16484, b/188679569, b/188969304) - Kaldırılan bir parçayı gizlemeye çalıştığınızda
FragmentManager
artık kilitlenmeyecek. (I573dd, b/183634730) OnCreateDialogIncorrectCallback
dil bilgisi denetimi, üst düzey bir değişkeni değerlendirirken 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
yayınlandı. 1.4.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentStrictMode
artık günlük kaydıFragmentManager
aracılığıyla etkinleştirildiğinde, kullanılan mevcut katı mod politikasından bağımsız olarak ihlalleri her zaman günlüğe kaydedecektir. (I02df6, b/187872638)FragmentStrictMode
artık belirliFragment
sınıflarının katı moddanViolation
muaf tutulmasını destekliyor. Bu sayede, ilgili sınıf herhangi bir cezadan kaçabilir. (Ib4e5d, b/184786736)FragmentStrictMode
Violation
sınıfı, her ihlal için yapı bilgileri eklemek üzere genişletildi. Bu sayede, ihlal eden parçayla birlikte ihlal eden öğenin (If5118, b/187871150) tam olarak ne olduğunu doğrulayabilirsiniz. HerViolation
aşağıdakileri içerir:WrongFragmentContainerViolation
, artıkFragment
öğesinin eklenmeye çalıştığıViewGroup
öğesini içeriyor. (I83c75, b/187871150)TargetFragmentUsageViolation
,SetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
veGetTargetFragmentRequestCodeUsageViolation
olarak genişletildi.SetTargetFragmentUsageViolation
, hedef parçayı ve istek kodunu içerir. (I741b4, b/187871150)SetUserVisibleHintViolation
artıksetUserVisibleHint()
işlevine iletilen Boole değerini içerir. (I00585, b/187871150)FragmentTagUsageViolation
artık<fragment>
etiketinin bir parçayı şişirmeye çalıştığı ViewGroup'ı içeriyor.(I5dbbc, b/187871150)FragmentReuseViolation
artık ihlal eden öncekiFragment
örneğinin benzersiz kimliğini içerir. (I0544d, b/187871150)RetainInstanceUsageViolation
artık soyuttur ve ihlal türüne ait iki durumu temsil edenSetRetainInstanceUsageViolation
veGetRetainInstanceUsageViolation
adlı iki alt sınıfa sahiptir. (Ic81e5, b/187871150)
Davranış Değişiklikleri
FragmentContainerView
artıkfitsSystemWindow
özelliğini programatik olarak veya XML aracılığıyla değiştirmeye çalışırken istisna oluşturuyor. İçerikler, her bir parçanın görünümü tarafından ele alınmalıdır. (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
serbest bırakıldı. 1.4.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentContainerView
artık kapsayıcıya en son eklenen parçayı döndüren birgetFragment()
yöntemi sağlıyor. Bu işlem,FragmentContainerView
kimliğiylefindFragmentById()
ile aynı mantığı kullanır ancak çağrının zincirlenmesine olanak tanır. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Parça geçişinde temanızdan alınan standart etkinlik geçiş animasyonunun etkinleştirilip etkinleştirilmeyeceğini belirtmek için
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
eklendi. (I46652)
Birden fazla geri yığın
FragmentManager
, addToBackStack()
kullanan parça işlemlerinden oluşan bir arka yığın tutar. Bu sayede, bu işlemleri pop up olarak görüntüleyebilir ve Durumları parçalarla kaydetme mekanizmalarını kullanarak parçalarınızın durumlarını uygun şekilde geri yüklemesine izin vererek önceki duruma dönebilirsiniz.
Bu sürüm, saveBackStack(String name)
ve restoreBackStack(String name)
olmak üzere iki yeni FragmentManager
API'si sunarak bu mekanizmaları genişletiyor. Bu API'ler, FragmentTransaction
öğesinin ve bu işlemlere eklenen her bir parçanın durumunu kaydetmek için addToBackStack()
ile aynı name
öğesini kullanır ve daha sonra bu işlemleri ve parçalarını durumlarını koruyarak geri yüklemenize olanak tanır. Bu sayede, geçerli geri yığınını kaydedip kayıtlı bir geri yığınını geri yükleyerek birden fazla geri yığını arasında etkili bir şekilde "takas" yapabilirsiniz.
saveBackStack()
, eşzamansız olması ve tüm parça işlemlerinin tersine çevrilmesi ("aktarılması") ve eklenen parçaların kaldırılıp kaldırılmaması açısından popBackStack()
ile benzer şekilde çalışır. Ancak aralarında birkaç önemli fark vardır:
saveBackStack()
her zaman dahildir.- Belirtilen ad arka yığınta bulunamazsa veya boş bir ad sağlanırsa arka yığıntaki tüm işlemleri pop-up olarak gösteren
popBackStack()
'in aksine, daha önce tam olarak bu boş olmayan adlaaddToBackStack()
kullanarak bir parça işlemi taahhüt etmediysenizsaveBackStack()
hiçbir şey yapmaz. - Bu işlemlerden eklenen tüm parçaların durumu kaydedilir. Bu, her parçanın görüntüleme durumunun depolandığı, her parçanın
onSaveInstanceState()
tanesinin çağrıldığı ve bu durumun geri yüklendiği, bu parçalarla ilişkilendirilmiş tümViewModel
örneklerinin saklandığı (veonCleared()
bunlar üzerinde çağrılanmaz) anlamına gelir.
saveBackStack()
ile kullanılabilen parça işlemleri belirli ölçütleri karşılamalıdır:
- İşlemlerin tek bir atomik işlem olarak geri yüklenebilmesi için her bir parça işleminde
setReorderingAllowed(true)
kullanılmalıdır. - Kayıtlı işlem grubu, aradaki süre içinde arka yığınta ne tür değişiklikler yapılmış olursa olsun daha sonra geri yüklenebilmesi için kendi kendine yeterli olmalıdır (yani, bu işlem grubunun dışındaki herhangi bir parçayı açıkça referans almamalıdır).
FragmentManager
öğesinin, arka yığın kaydedildikten sonra kaydedilen 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çalar kümesinde tutulan bir parçaya sahip olamaz.
saveBackStack()
'e benzer şekilde, daha önce aynı ada sahip bir saveBackStack()
çağırmadıysanız restoreBackStack()
hiçbir işlem yapmaz. (b/80029773)
Fragment StrictMode
FragmentStrictMode
API'leri, uygulamanızın veya bağlı olduğunuz kitaplıkların desteği sonlandırılmış parça API'lerini çağırmadığını doğrulamanıza olanak tanıyan çalışma zamanı kontrolleri sağlar. Bir ihlal tespit edildiğinde günlük mesajı yazdırmayı, kendi özel işleyicinizi tetiklemeyi veya uygulamanızı kilitlenmeyi 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ı ayarlamamış tüm alt parça yöneticileri için geçişli olarak geçerlidir. (#123, #131, #150, b/143774122)
detectFragmentReuse()
, daha önce kaldırılmış birFragment
örneğininFragmentManager
öğesine yeniden eklenip eklenmediğini algılar. BirFragment
örneği, yok edildikten veFragmentManager
'dan kaldırıldıktan sonra hiçbir zaman bu örnekle etkileşime girmemeli veya bu örneğe referans vermemelisiniz. (#142, b/153738653)detectFragmentTagUsage()
, düzen XML'inizde<fragment>
etiketini kullandığınızda bunu algılar. Tasarımınızın bir parçası olarak parçaları şişirirken her zamanFragmentContainerView
kullanmalısınız. (#141, b/153738235)detectWrongFragmentContainer()
, bir kapsayıcıyaFragmentContainerView
olmayan bir parça eklediğinizde bunu algılar. Sayfa düzeninizdeki parçalar için her zamanFragmentContainerView
öğesini kullanmanız gerekir. (#146, b/181137036)detectRetainInstanceUsage()
, kullanımdan kaldırılansetRetainInstance()
veyagetRetainInstance()
API'lerini kullandığınızı algılar. (#140, b/153737954)detectSetUserVisibleHint()
, kullanımdan kaldırılansetUserVisibleHint()
API'sini kullandığınızda bunu algılar. (#136, b/153738974)detectTargetFragmentUsage()
, desteği sonlandırılmışsetTargetFragment()
,getTargetFragment()
veyagetTargetRequestCode()
API'lerini kullandığınızda bunu algılar. (#139, b/153737745)
API Değişiklikleri
FragmentManager.enableNewStateManager(boolean)
deneysel API'si kaldırıldı ve artık tek seçenek yeni durum yöneticisi. (I90036, b/162776418)FragmentScenario
artıkCloseable
'ü uygulayarak Kotlin'inuse
yöntemi veya try-with-resources ile kullanmanıza olanak tanır. (#121, b/143774122)
Yeni hata analizi kontrolleri
UseGetLayoutInflater
Dil bilgisi denetimi artıkDialogFragment
içindeLayoutInflater.from(Context)
kullanıldığında uyarı veriyor.LayoutInflater
için uygun olanı almak üzere her zaman iletişim parçasınıngetLayoutInflater()
yöntemini kullanmanız gerekir. (#156, b/170781346)DialogFragmentCallbacksDetector
Lint kontrolü artıkDialogFragment
içinonCreateDialog()
yöntemindesetOnCancelListener
veyasetOnDismissListener
çağrısı yapıldığında uyarı veriyor. Bu işleyicilerDialogFragment
öğesine aittir ve geri çağırmaları almak içinonCancel()
veonDismiss()
değerlerini geçersiz kılmanız gerekir. (#171, b/181780047, b/187524311)
Hata Düzeltmeleri
- 1.3.4 sürümü itibarıyla:
ViewTreeViewModelStoreOwner.get()
API'siViewModelProvider
ile birlikte kullanıldığında veya bir parça içindeviewModel()
'in Jetpack Compose yöntemi kullanıldığında1.3.3
parçasında ortaya çıkan bir gerileme düzeltildi. Bu kullanım alanları artıkgetDefaultViewModelProviderFactory()
'ü geçersiz kılıyorsa (Hilt kullanılırken@AndroidEntryPoint
ek açıklamalı parçaların yaptığı gibi) parçanız tarafından sağlananViewModelProvider.Factory
'ü doğru şekilde kullanıyor. Bu yöntemi geçersiz kılmazsanız varsayılan fabrika olarak, Fragment'in görünümüyle birlikte durumunu kaydedip geri yükleyen birSavedStateViewModelFactory
oluşturulur. (I5cbfa, b/186097368) - Parça 1.3.4'ten itibaren: API 29'da
FragmentContainerView
kullanılırken artık ek bölümler süresiz olarak dağıtılmaz. Bu sayedeBottomNavigationBar
veFloatingActionButton
örneklerindeki sorunlar düzeltilir. (I1bb78, b/186012452) - 1.3.4 sürümü ve sonraki sürümlerde: Artık işlem sona erdikten sonra Parcelable'ınızı parça sonucu paketinden alabilirsiniz. (I65932, b/187443158)
- Fragment 1.3.4'ten itibaren: Bir ViewGroup'da paylaşılan öğe geçişi yapılırken ViewGroup'da
transitionGroup
false olarak ayarlanmışsa artık geçiş düzgün şekilde yapılır. (I99675)
Harici Katkı
FragmentScenario
tarafındanCloseable
uygulanmasına izin verdiğiniz için simonschiller'a teşekkür ederiz. (#121, b/143774122)- Bu sürüm için
FragmentStrictMode
API'nin tamamını ekleyen simonschiller'e teşekkür ederiz. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) UseGetLayoutInflater
Tüy kontrolü özelliğini eklediğiniz için teşekkürler tatocaster. (#156, b/170781346)DialogFragmentCallbacksDetector
Tüy kontrolü özelliğini eklediğiniz için teşekkürler tatocaster. (#171, b/181780047)
Sürüm 1.3
1.3.6 sürümü
21 Temmuz 2021
androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
ve androidx.fragment:fragment-testing:1.3.6
serbest bırakıldı. 1.3.6 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
1.4.0-alpha03
Fragment'inden: Kaldırılan bir fragment'i gizlemeye çalıştığınızdaFragmentManager
artık kilitlenmeyecek. (I573dd, b/183634730)- Kök görünümünde
transitionGroup=”true”
ayarlandığında,hide()
kullanılırken Parçanın görünümü artık düzgün bir şekildeGONE
olarak ayarlanıyor. (aosp/1766655, b/193603427) FragmentActivity
artık geçersiz kıldığı yaşam döngüsü geri çağırmalarında ilk işlemi olarak her zaman kayıtlı durumun kilidini açar. (I6db7a)
Bağımlılık güncellemesi
1.3.6
Parçasından: Parçalar artık1.2.4
etkinliğine (I3a66c) bağlıdır
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
serbest bırakıldı. 1.3.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- aosp/1679887 tarafından
1.3.4
Parça'da belirtilen paylaşılan öğe geçişlerindeki regresyon düzeltildi. Parçalar artık geçiş gruplarını (doğrudantransitionGroup="true"
aracılığıyla veya dolaylı olarak birtransitionName
ya dabackground
aracılığıyla ayarlanır) doğru şekilde yönetiyor ve paylaşılan öğeler artıkIndexOutOfBoundsException
hatası 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
yayınlandı. 1.3.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Hilt kullanılırken
ViewTreeViewModelStoreOwner.get()
API'siViewModelProvider
ile birlikte kullanıldığında veya bir Fragment içindeviewModel()
'in Jetpack Compose yöntemi kullanıldığında1.3.3
Fragment'inde ortaya çıkan bir gerileme düzeltildi. Bu kullanım alanları artıkgetDefaultViewModelProviderFactory()
'ü geçersiz kılıyorsa (@AndroidEntryPoint
ek açıklamalı parçaların yaptığı gibi) parçanız tarafından sağlananViewModelProvider.Factory
değerini doğru şekilde kullanıyor. Bu yöntemi geçersiz kılmazsanız varsayılan fabrika olarak, Fragment'in görünümüyle birlikte durumunu kaydedip geri yükleyen birSavedStateViewModelFactory
oluşturulur. (I5cbfa, b/186097368) - API 29'da
FragmentContainerView
kullanıldığında, Inset'ler artık süresiz olarak gönderilmez veBottomNavigationBar
veFloatingActionButton
örnekleriyle ilgili sorunlar düzeltilir. (I1bb78, b/186012452) - Artık işlem ölümünün ardından Parcelable'ınızı parça sonuç paketinden alabilirsiniz. (I65932, b/187443158)
- Bir ViewGroup'da paylaşılan öğe geçişi yapılırken ViewGroup'da
transitionGroup
false olarak ayarlanmışsa artık geçiş düzgün şekilde 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
yayınlandı. 1.3.3 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
SavedStateViewModelFactory
artık Fragment'in Görünümü ileViewTreeSavedStateRegistryOwner.get()
kullanılarak döndürülenSavedStateRegistryOwner
ile birlikte kullanıldığında çalışır. (I21acf, b/181577191)
Hata Düzeltmeleri
1.3.2
Fragment'inde,NavHostFragment
tarafından kullanılanlar gibi birsetPrimaryNavFragment
işlemi içeren birFragmentTransaction
gösterildiğindepopEnter
animasyonların çalışmamasına neden olan bir gerileme düzeltildi. (I38c87, b/183877426)FragmentContainerView
artık herFragment
ürününün yeni birWindowInsets
grubu dağıtılmasını sağlayarak her parçanın ekleri bağımsız olarak tüketebilmesini sağlıyor. (I63f68, b/172153900)DialogFragment
, özelDialog
sınıfınızdaki bir kapsayıcıyla aynı kimliğe sahip olan bir kapsayıcıya alt parçanın eklendiği durumları artık düzgün bir şekilde işliyor veBottomSheetDialog
gibi iletişim kutuları tarafından dahili olarak kullanılan kimlikleri yeniden kullanırken görünüm hiyerarşisi sorunlarını düzeltiyor. (Ie6279, b/180021387)FragmentManager.dump()
artık etkin parçalar listesindeki ilk parçayı düzgün şekilde girintilendiriyor. (If5c33, b/183705451)
Yeni Durum Yöneticisi Hata Düzeltmeleri
- Yeni parça durum yöneticisi artık çıkış geçişlerini gizleme işlemleriyle düzgün şekilde yönetir. (I9e4de, b/184830265)
1.3.2 sürümü
24 Mart 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
ve androidx.fragment:fragment-testing:1.3.2
serbest bırakıldı. 1.3.2 sürümü bu kaydetmeleri içerir.
Yeni Durum Yöneticisi Hata Düzeltmeleri
- Hem
popBackStack()
hem decommit()
işlemleri birlikte çalıştırıldığında, son işlem artık bazı pop animasyonları ve bazı giriş animasyonları çalıştırmak yerine tüm animasyonların yönünü ayarlar. (I7072e, b/181142246) - Paylaşılan öğe hiyerarşisindeki görünümlerin geçiş adı, paylaşılan öğe geçişi yapılırken artık temizlenmeyecek. (I4d4a6, b/179934757)
Bağımlılık Güncellemeleri
- Parça artık Etkinlik 1.2.2'ye bağlı olarak, Parça 1.3.1 veya sonraki bir sürümü kullanırken Etkinlik'in
InvalidFragmentVersionForActivityResult
hata analizi kontrolüyle ilgili bir sorunu düzeltiyor. - 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
yayınlandı. Sürüm 1.3.1 bu kaydetmeleri içerir.
Yeni Özellikler
DialogFragment
içindeki iletişim kutuları artık DecorView aracılığıyla ViewTree sahiplerine erişebilir. Bu sayedeDialogFragment
,ComposeView
ile kullanılabilir. (Ib9290, b/180691023)
Hata Düzeltmeleri
- FragmentContainerView kullanılarak şişirilmiş bir
RESUMED
etkinliği olan parçalar, artık bir yapılandırma değişikliğinden sonra düzgün bir şekilde gösterilmektedir. (Ie14c8, b/180538371) - Artık
toString()
parçasının sonunda fazladan bir}
yok (I54705, b/177761088) - FragmentActivity'de geçersiz kılınan yöntemler artık temel yöntem javaDoc'unu (I736ce, b/139548782) düzgün bir şekilde devralıyor
setFragmentResult
vesetFragmentResultListener
ile ilgili dokümanlar, artık boş değerleri kabul etmediklerini belirtmek için parametre dokümanlarını güncelledi (I990ba, b/178348386)
Yeni Durum Yöneticisi Hata Düzeltmeleri
mFocusedView
(Ib4e9e, b/179925887) tarafından oluşturulan parçalarda bellek sızıntısı düzeltildi- Parçalar artık işlem gösterme/gizleme özelliğini kullanırken
onCreateOptionsMenu
'ü düzgün şekilde çağırıyor (I8bce8, b/180255554) - Parçanın düzenlenmesinden önce başlayan geçişlere sahip alt parçalar artık
RESUMED
'e düzgün şekilde ulaşacak (Ic11e6, b/180825150) <fragment>
etiketi kullanılarak şişirilen parçalar artık her zamanRESUMED
(I452ac, I9fa49) değerine ayarlanır
Bağımlılık Güncellemeleri
- 1.3.1 parçası,
1.2.1
etkinliğine bağlıdır. (I557b9)
1.3.0 sürümü
10 Şubat 2021
androidx.fragment:fragment:1.3.0
, androidx.fragment:fragment-ktx:1.3.0
ve androidx.fragment:fragment-testing:1.3.0
yayınlandı. 1.3.0 sürümü bu taahhütleri içerir.
1.2.0 sürümünden beri yapılan önemli değişiklikler
- Yeni Durum Yöneticisi:
FragmentManager
'in iç kısımlarının önemli ölçüde yeniden yazılması, yaşam döngüsü etkinliklerinin, animasyonların ve geçişlerin dağıtımı ve ertelenen parçaların nasıl ele alındığıyla ilgili birçok sorunu düzeltti. Etkinlik Sonucu API Entegrasyonu:
1.2.0
Etkinliği'nde kullanıma sunulanActivityResultRegistry
API desteği, bu akışları test etmek için kancalar sağlamanın yanı sıra parçanızdaki yöntemleri geçersiz kılmadanrequestPermissions()
+onRequestPermissionsResult()
akışlarının yanı sırastartActivityForResult()
+onActivityResult()
akışlarını işlemek üzere eklendi. Güncellenmiş Etkinlikten Sonuç Alma bölümüne göz atın.- Bu sürümde, geçersiz istek kodları ve izin isteklerinin gönderilmesiyle ilgili, Activity Result API'nin
FragmentActivity
'ün önceki sürümlerinde çalışmasını engelleyen çeşitli sorunlar düzeltilmiştir. Activity Result API'leriFragmentActivity
veyaAppCompatActivity
içinde kullanmak için Fragment 1.3.0'a yükseltmeniz gerekir.
- Bu sürümde, geçersiz istek kodları ve izin isteklerinin gönderilmesiyle ilgili, Activity Result API'nin
Pragment Result API:
FragmentManager
'de yeni API'ler aracılığıyla iki Parça arasında sonuçların iletilmesi için destek eklendi. Bu yöntem, hiyerarşi parçaları (ebeveyn/çocuk), DialogFragment'ler ve gezinmedeki parçalar için kullanılabilir ve sonuçların yalnızca Fragment'iniz en azSTARTED
olduğunda gönderilmesini sağlar. Hedef parça API'lerinin desteği sonlandırıldı ve bu yeni API'ler kullanıma sunuldu. Fragment Result API'yi kullanarak sonuç alma başlıklı makaleyi inceleyin.FragmentOnAttachListener
:FragmentActivity
veFragment
'tekionAttachFragment()
geri çağırma işlevinin desteği sonlandırıldı. Daha esnek bir alternatif sunmak için yeni birFragmentOnAttachListener
eklendi. Bu alternatif,onAttachFragment()
'un ayrı, test edilebilir dinleyicilere devredilmesine ve doğrudan alt FragmentManager'ınız dışındaki FragmentManager'lara dinleyici ekleme desteğine olanak tanır.FragmentScenario
İyileştirmeler:fragment-testing
yapısındakiFragmentScenario
sınıfı Kotlin'de yeniden yazıldı ve çeşitli iyileştirmeler yapıldı:FragmentScenario
artıkmoveToState()
'i uygulamak içinsetMaxLifecycle()
kullanıyor. Bu sayede tüm API düzeylerinde tutarlı bir davranış sağlanıyor ve Fragment'in durumu, temel etkinlikten ayrılıyor.FragmentScenario
artık her birLifecycle.State
için ilk kez taşımadan önce parçanın durumunun doğrulanmasını desteklemek için bir başlangıçLifecycle.State
ayarlanmasını destekliyor.- Artık
onFragment
içinFragmentScenario
API'sine alternatif olarak, değer döndürmenize olanak tanıyan Kotlin gerçekleştirilmiş uzantı yöntemiwithFragment
mevcuttur. Özellikle, belirli bir blokta oluşturulan istisnaları yeniden atar.
ViewTree
Desteği:Fragment
artık Yaşam Döngüsü2.3.0
ve Kayıtlı Durum1.1.0
'a eklenenViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
veViewTreeSavedStateRegistryOwner
API'lerini destekliyor. Böylece,Fragment
içinde birView
kullanıldığında,Fragment
, Fragment'iViewModelStoreOwner
olarak döndürür ve Fragment'in görüntüleme yaşam döngüsüne bağlı birSavedStateRegistryOwner
veLifecycleOwner
döndürür.TRANSIT_
animasyon değişiklikleri: Parça varsayılan efektleri (TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
veTRANSIT_FRAGMENT_FADE
) artıkAnimation
yerineAnimator
kullanıyor. Bu animatörleri oluşturmak için kullanılan kaynaklar artık gizli.setRetainInstance()
desteği sonlandırılıyor: ParçalardakisetRetainInstance()
yönteminin desteği sonlandırıldı. ViewModels'ın kullanıma sunulmasıyla birlikte geliştiriciler, etkinlikler, parçalar ve gezinme grafikleriyle ilişkilendirilebilecek durumu korumak için belirli bir API'ye sahip oldu. Bu sayede geliştiriciler, normal ve saklanmayan bir Fragment kullanabilir ve saklanmasını istedikleri belirli durumu ayrı tutabilir. Böylece, saklanmayan durumun tek bir kez oluşturulması ve yok edilmesinin yararlı özelliklerini (yaniViewModel
sınıfının kurucusunu ve aldığıonCleared()
geri çağırma işlevini) korurken yaygın bir sızıntı kaynağından kaçınabilirler.ViewPager 1 bağdaştırıcısı desteği sonlandırıldı: ViewPager2
1.0.0
'nin kullanıma sunulmasıyla birlikte,ViewPager
ile etkileşime geçmek için kullanılanFragmentPagerAdapter
veFragmentStatePagerAdapter
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
serbest bırakıldı. 1.3.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yapılandırma değişikliğinden sonra üst
DialogFragment
öğesinin, altDialogFragment
öğesinin üzerinde görünmesine neden olan sorun düzeltildi. Alt iletişim kutusu parçaları artık her zaman üst iletişim kutusu parçasının üzerinde görünüyor. (I30806, b/177439520) Animation
ilehide
işlemi yapmanın, gizleme parçasının animasyonun sonunda yanıp sönmesine neden olmasıyla ilgili sorun düzeltildi. (I57e22, b/175417675)- Görünüm hiyerarşisi eklenmeden önce geçişlerin eklendiği parçalar artık
RESUMED
'e düzgün şekilde ulaşıyor. (I1fc1d, b/177154873)
Yeni Durum Yöneticisi Hata Düzeltmeleri
- Fragment'in görünümü
Lifecycle
artık Fragment'in görünümüLifecycle
'e ulaşmadan önce yok edildiği durumları düzgün şekilde ele alıyor ve "INITIALIZED'dan sonra etkinlik yok" ifadesini içeren istisnaları önlüyor. (eda2bd, b/176138645)CREATED
Animator
kullanan parçalar artıkFragmentContainerView
kullanıldığında 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
yayınlandı. 1.3.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
onPrepareOptionsMenu()
artıkonCreateOptionsMenu()
ile aynı mantığı izler ve bir üst öğe parçasısetMenuVisibility(false)
'yi çağrdığında artık çağrılmaz. (Id7de8, b/173203654)
Yeni Eyalet Yöneticisi Hata Düzeltmeleri
FragmentContainerView
öğesineAnimation
içeren bir parçanın eklenmesi ve ardından bu ekleme işleminin pop işlemi ile kesintiye uğraması durumunda sızıntı ve görsel yapı düzeltildi. (I952d8)onCreate()
veyaonViewCreated()
yöntemleri sırasında değiştirilirse parçanın görünümünün görünüm hiyerarşisinde kalması sorunu düzeltildi. (I8a7d5)- Odak, devam ettirildiğinde artık Parçalı kök görünümlerine düzgün şekilde geri yükleniyor. (Ifc84b)
- Aynı parça işleminde pop ve replace işlemleri birleştirildiğinde artık uygun animasyonlar gösterilecek (Ifd4e4, b/170328691)
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
serbest bırakıldı. 1.3.0-beta02 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentScenario
,FragmentAction
için Kotlin 1.4'ün işlevsel arayüzleri kullanılarak kaynak ve ikili program uyumluluğu korunarak tamamen Kotlin'e dönüştürüldü. (I19d31)
Davranış Değişiklikleri
class
veyaandroid:name
özelliğini kullanarak bir parçayı genişletmeyen FragmentContainerView'lar artıkFragmentActivity
dışında kullanılabilir. (Id4397, b/172266337)- Bir parçanın maksimum yaşam döngüsü
DESTROYED
olarak ayarlanmaya çalışıldığındaIllegalArgumentException
(Ie7651, b/170765622) atılır - FragmentScenario nesnesi
DESTROYED
durumuyla başlatılırken artıkIllegalArgumentException
hatası veriliyor (I73590, b/170765622)
Yeni Eyalet Yöneticisi Hata Düzeltmeleri
Animator
veyaTRANSIT_FRAGMENT_
seçeneklerinden birini kullanan bir parça geçişini kesintiye uğratırsanız görünümün nihai durumuna ulaşamamasına neden olan sorun düzeltildi. (I92426, b/169874632)- Çıkış yapan
Animation
içeren parçaların düzgün şekilde yok edilmesini engelleyen sorun düzeltildi. (I83d65) - Etkileri tersine çevrilen parçalardan çıkmak, şimdi doğru şekilde iptal edilir ve uygun giriş efektiyle yeniden başlatılır. (I62226, b/167092035)
hide()
öğesindenAnimator
çıkışının çalışmamasına neden olan sorun düzeltildi. (Id7ffe)- Parçalar artık ertelendiyse ve hemen başlatıldıysa düzgün şekilde gösteriliyor. (Ie713b, b/170022857)
- Bir animasyon sırasında odaklanan görünümünü kaldıran parçalar,
RESUMED
değerine ulaştıklarında artık ayrılmış görünüme odaklanmayı denemeyecek (I38c65, b/172925703)
Harici Katkı
FragmentFactory
artık farklıClassLoader
örnekleri için ayrı ayrı parça sınıfları ö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
yayınlandı. Sürüm 1.3.0-beta01 bu kaydetmeleri içerir.
Yeni Özellikler
setMaxLifecycle()
artık, parçaCREATED
'a taşınmadığı süreceLifecycle
durumunuINITIALIZING
olarak ayarlama özelliğini destekliyor. (b/159662173)
API Değişiklikleri
- Kotlin 1.4'ü (Id6471, b/165307851, b/165300826) kullanmak için Androidx'i yükseltin
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 (I02f4c) durumuna geçmeden önce görüntülemelerinin bir kapsayıcıya eklenmesini uygun şekilde bekler.- Görünen ve ardından
setMaxLifecycle()
ileCREATED
arasında olan parçalar artık çıkış efektlerini düzgün şekilde çalıştırıyor. (b/165822335) - Arka yığına eklenmemiş, ayrılmış bir parçanın kaldırılması artık bellek sızıntısına neden olmaz. Fotoğraflar Nicklas Ansman Giertz'e aittir. (b/166489383)
- Etkin parçalar artık her zaman boş olmayan bir
FragmentManager
öğesine sahip olacak ve boş olmayanFragmentManager
öğesine sahip parçalar her zaman etkin kabul edilecek. (aosp/1422346) - Parçanın varsayılan efektleri
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
veTRANSIT_FRAGMENT_FADE
için artıkAnimation
yerineAnimator
kullanılıyor. (b/166155034)
Yeni Durum Yöneticisi Hata Düzeltmeleri
- Parçalar artık animasyonlarını başlatmadan hemen önce görünüm odağı durumunu düzgün bir şekilde geri yüklüyor. (Icc256)
- Yalnızca paylaşılan bir öğe geçişi olan parçalar artık özel efektlerini doğru şekilde tamamlıyor ve son durumlarına taşınıyor (Iaebc7, b/166658128)
- Parça görünümleri artık her zaman yok edilmeden önce kapsayıcıdan kaldırılır. (Id5876)
- Yeni durum yöneticisi artık giren parça görünümünü eklemeden önce çıkış yapan parça görünümünü tutarlı bir şekilde kaldırıyor. (I41a6e)
- 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. Yani, animasyon başlamadan önce giren bir parçanın görünümünü
INVISIBLE
olarak ayarlarsanız parça görünmez kalır. (b/164481490) - Parçalar artık
Animations
yerineAnimators
değerine öncelik verir. Yani, her ikisine sahip bir parça yalnızcaAnimator
öğesini çalıştırır veAnimation
öğesini yoksayar. (b/167579557) - Yeni durum yöneticisi, artık giriş animasyonları kullanıldığında parçaların yanıp sönmesine neden olmaz. (b/163084315)
Bilinen Sorun
Yeni durum yöneticisini kullanırken, özel bir efekt girerken önceki parçaya dönmek yerine geri tuşuna basarsanız, eski parça hiçbir zaman yeniden eklenmez ve sonuç olarak boş ekran görüntülenir. (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
yayınlandı. 1.3.0-alpha08 sürümü bu taahhütleri içerir.
New State Manager
Bu sürüm, yaşam döngüsü yöntemlerinin, animasyonların ve geçişlerin dağıtımını ve ertelenen işlemlerin nasıl ele alındığını etkileyen FragmentManager
'ün dahili durum yönetiminde büyük bir yeniden yapılandırmayı içerir. 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'ın yeni durum yöneticisini kullanıp kullanmadığını kontrol etmek için
FragmentManager.enableNewStateManager(boolean)
'deki deneysel bir API kullanılabilir. (I7b6ee)
Aşağıdaki sorunlar yalnızca yeni durum yöneticisi kullanıldığında düzeltilir:
replace
işleminin önceki parçası artık yeni parça başlatılmadan önce doğru şekilde durduruluyor. (b/161654580)- Parçalar artık aynı parçalarda birden fazla animasyon yarışmasının olmasını önleyerek bir
Animation
'nin tümTransition
efektlerini geçersiz kılacağı veya tek bir parçadakiAnimator
veTransition
'un aynı anda çalışacağı durumları önler. (b/149569323) - Artık yalnızca son giren ve ilk çıkan parça yerine, giren ve çıkan tüm parçaların
enterTransition
veexitTranstion
işlenir. (b/149344150) - Ertelenen parçalar artık
CREATED
durumunda takılıp kalmaz ve diğer parçalarla birlikteSTARTED
durumuna geçer. (b/129035555) FragmentManager
'ün, ertelenen yeniden sıralanan bir işlemi ve yeniden sıralanmayan bir işlemi karıştırırken işlemleri sıra dışı şekilde yürütmesine neden olan sorun düzeltildi. (b/147297731)- Birden fazla parçanın aynı anda gösterilmesi, parçalar ertelenirken ara parçaların geçici olarak görünmesine neden olmayacak. (b/37140383)
FragmentManager
,onAttachFragment()
geri çağırmasındanfindFragmentById()
veyafindFragmentByTag()
çağrısında artık doğru parçaları döndürüyor. (b/153082833)- Parçalar, yerlerini alan parça ertelendiğinde yok edilen parçalarda artık
onCreateView()
çağırmaz. (b/143915710) Transition
çerçevesi ve AndroidXTransition
örnekleri birleştirilmeye çalışılırken gösterilen hata mesajında artık geçersiz geçişe sahip parçadan bahsediliyor. (b/155574969)
Davranış Değişiklikleri
- Artık bir parçanın
onCreate()
yaşam döngüsü yöntemindeki birActivityResultLauncher
üzerindelaunch()
çağırabilirsiniz. (b/161464278) onCreate()
çağrıldıktan sonraregisterForActivityResult()
çağrıldığında artık yapılandırma değişikliğinden sonra sessizce sonuç verme yerine, buna izin verilmediğini belirten bir istisna atılır. (b/162255449)FragmentActivity
artıkFragmentManager
durumunu geri yüklemek için1.2.0-alpha08
Etkinliği'nde kullanıma sunulanOnContextAvailableListener
API'yi kullanıyor.FragmentActivity
alt sınıflarına eklenen tüm dinleyiciler bu dinleyiciden sonra çalışır. (I513da)
Hata Düzeltmeleri
startIntentSenderForResult()
kullanılırken iletilenActivityOptions
parametrelerine artık uyuluyor. (b/162247961)
Bilinen Sorun
- Yeni durum yöneticisi kullanılırken,
onViewCreated()
'ten sonra veonResume()
'ten önce doğrudan parçanın kök görünümünün görünürlüğünü ayarlamak, belirlediğiniz görünürlüğün kök görünümün görünürlüğünü kontrol edenFragmentManager
tarafından 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 zamanhide()
veshow()
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
yayınlandı. 1.3.0-alpha07 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentScenario
, Parça'yı her zamanRESUMED
durumuna taşımak yerine artık başlangıç yaşam döngüsü durumunuCREATED
,STARTED
veyaRESUMED
olarak ayarlamayı destekliyor. (b/159662750)onFragment
içinFragmentScenario
API'ye, değer döndürmenizi sağlayan Kotlin yeniden birleştirilmiş uzantı yöntemiwithFragment
biçimindeki bir alternatif eklendi. Özellikle, belirli bir blokta oluşturulan istisnaları yeniden atar. (b/158697631)
Davranış Değişiklikleri
FragmentScenario
artıkmoveToState()
'i uygulamak içinsetMaxLifecycle()
kullanıyor. Bu sayede tüm API düzeylerinde tutarlı bir davranış sağlanıyor ve Fragment'in durumu, temel etkinlikten ayrılıyor. (b/156527405)ViewTreeSavedStateRegistryOwner
tarafından döndürülenSavedStateRegistryOwner
artık parça görünümünün yaşam döngüsüne bağlıdır. Bu sayede, durumunun kaydedilmesi ve fragmanın görünümüyle aynı anda geri yüklenmesi sağlanır. (b/158503763)
Hata Düzeltmeleri
- Parçalar artık
ViewCompat.requestApplyInsets()
çağrılmadan önce parçanın görünümünün eklenmesini bekler. Böylece, içe yerleştirilme isteğinin bırakıldığı durumlar önlenir. (b/158095749) clearFragmentResultListener
çağrısı artık yaşam döngüsü gözlemcisini düzgün şekilde temizliyor. (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
serbest bırakıldı. 1.3.0-alpha06 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentActivity
veFragment
içinonAttachFragment()
geri çağırması kullanımdan kaldırıldı. Daha esnek bir alternatif sağlamak amacıyla daha esnek bir alternatif sağlayan yeni birFragmentOnAttachListener
eklendi. Bu sayede,onAttachFragment()
öğesine ayrı, test edilebilir işleyiciler için yetki verilmesinin yanı sıra doğrudan alt FragmentManager'ınız dışında FragmentManager'lara işleyici ekleme desteği de sunulmaktadır. (I06d3d)
Hata Düzeltmeleri
- Üst parçaların görünüm durumu artık alt parçalardan önce geri yükleniyor. Bir yapılandırma değişikliğinden sonra,
DialogFragment
öğesi alt parça olarak başka birDialogFragment
gösterdiğinde ortaya çıkan görsel sıralama sorunu düzeltiliyor. (b/157195715) UseRequireInsteadOfGet
lint kontrolünün,?.
ve!!
operatörlerinin zincirlenmiş kullanımlarını doğru şekilde işlememesi sorunu 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ü bu taahhütleri içerir.
Yeni Özellikler
Fragment
içindeView
kullanırken Yaşam Döngüsü2.3.0-alpha03
'ndenViewTreeViewModelStoreOwner
ve KayıtlıDurum1.1.0-alpha01
'danViewTreeSavedStateRegistryOwner
desteği eklendi. (aosp/1297993, aosp/1300264)
API Değişiklikleri
setFragmentResult()
vesetFragmentResultListener()
API'leri artık sırasıyla boş olmayan birBundle
veFragmentResultListener
alıyor. Önceden ayarlanmış bir sonucu veya işleyiciyi açıkça temizlemek için yeniclearFragmentResult()
veclearFragmentResultListener()
yöntemlerini kullanın. (b/155416778)- Lambda alan
setFragmentResultListener()
Kotlin uzantıları artıkinline
olarak işaretlenir. (b/155323404)
Davranış Değişiklikleri
Fragment
ürününde kullanımdan kaldırılanstartActivityForResult()
,startIntentSenderForResult()
verequestPermissions
, artık dahili olarakActivityResultRegistry
kullanıyor. Böylece, bu API'leri kullanırken istek kodlarınız için yalnızca düşük bitlerin (0xFFFF
altında) kullanılmasına yönelik kısıtlama kaldırıldı. (b/155518741)
Doküman Güncellemeleri
- Varsayılan
FragmentFactory
kullanılırken alt sınıflarınızın "no bağımsız değişkeni"nden çağrılması gerektiğini netleştirmek içinFragment(@LayoutRes int)
veDialogFragment(@LayoutRes int)
oluşturucularıyla ilgili dokümanlar genişletildi. (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
yayınlandı. 1.3.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentManager
tarihinde yeni API'ler aracılığıyla iki Parça arasında sonuçların aktarılması için destek eklendi. Bu, hiyerarşi parçaları (üst/alt), DialogFragments'lar ve Gezinme'deki parçalar için çalışır ve sonuçların yalnızca en azSTARTED
iken Parçanıza gönderilmesini sağlar. (b/149787344)
API Değişiklikleri
- Hedef parça API'lerinin desteği sonlandırıldı. Parçalar arasında veri aktarmak için bunun yerine yeni Fragment Result API'leri kullanılmalıdır. (b/149787344)
- Fragment'teki
startActivityForResult()
/onActivityResult()
verequestPermissions()
/onRequestPermissionsResult()
API'lerinin desteği sonlandırıldı. Lütfen Activity Result API'lerini kullanın. (aosp/1290887) - Etkinlik
1.2.0-alpha04
'deki önemli değişiklik:prepareCall()
yöntemiregisterForActivityResult()
olarak yeniden adlandırıldı. (aosp/1278717)
Hata Düzeltmeleri
- Fragment'in
getViewLifecycleOwner()
, artıkonSaveInstanceState()
çağrılmadan önce durdurulur. Bu durum, fragment'in yaşam döngüsünün davranışını yansıtır. (b/154645875) - Bir fragmanda
setMenuVisibility(false)
çağrıldığında artık alt fragmanları tarafından sağlanan menülerin görünürlüğü doğru şekilde değiştiriliyor. (b/153593580) FragmentContainerView
ile birDialogFragment
'un görünüm hiyerarşisine bir parça eklenirken yaşanan birillegalStateException
düzeltildi. (b/154366601)- Parçalardaki
getDefaultViewModelProviderFactory()
yöntemi, artık parçalarınızı bir etkinlik dışında barındırırken 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
serbest bırakıldı. 1.3.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
Fragment
'dakiprepareCall
yöntemleri artıkfinal
. (b/152439361)
Hata Düzeltmeleri
BottomSheetDialogFragment
kullanıldığında1.3.0-alpha02
parçasında ortaya çıkan bir 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 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)- Parça
1.2.4
: Parça ProGuard kuralları, tutulan parçaların karartılmasına izin verecek şekilde güncellendi. (b/151605338) 1.2.4
Fragment'inden: Yaşam döngüsü ve görüntüleme yaşam döngüsü her zaman senkronize olduğundanDialogFragment
sınıflarındakiFragmentLiveDataObserve
lint kuralı devre dışı bırakıldı. Bu sayede,observe
çağrılırkenthis
veyaviewLifecycleOwner
'in kullanılması güvenli hale geldi. (b/151765086)
Bağımlılık Değişiklikleri
- Parçalar,
1.2.0-alpha02
etkinliğinde kullanıma sunulan Activity Result API'de önemli iyileştirmeler yapılan1.2.0-alpha03
etkinliğine bağlıdı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ü bu kaydetmeleri içerir.
Yeni Özellikler
1.2.0-alpha02
Etkinliği'nde kullanıma sunulanActivityResultRegistry
API'si için destek eklendi. Bu API, Fragment'inizdeki yöntemleri geçersiz kılmadanstartActivityForResult()
+onActivityResult()
verequestPermissions()
+onRequestPermissionsResult()
akışlarını işlemek ve bu akışları test etmek için kanca sağlamak amacıyla kullanılır. Güncellenen Bir Etkinlikten Sonuç Alma başlıklı makaleyi inceleyin. (b/125158199)
API Değişiklikleri
DialogFragment
, artıkonCreateView()
tarafından varsayılan olarak genişletilmesi gereken düzeni belirten bir@LayoutRes
oluşturucu sunuyor. (b/150327080)onActivityCreated()
yöntemi kullanımdan kaldırıldı. Parçanın görünümüne dokunan kodonViewCreated()
içinde (onActivityCreated()
'ten hemen önce çağrılır) yapılmalı, diğer başlatma kodları iseonCreate()
içinde olmalıdır. Özellikle etkinlikle ilgilionCreate()
tamamlandığında geri arama almak içinonAttach()
bölgesindeki aktiviteninLifecycle
öğesineLifeCycleObserver
kaydedilmeli veonCreate()
geri çağırması alındığında kaldırılmalıdır. (b/144309266)
Hata Düzeltmeleri
1.2.3
Fragment'inden:DialogFragment
içindeonCreateDialog()
'dengetLayoutInflater()
çağrılırkenStackOverflowError
'ye neden olan bir hata düzeltildi. (b/117894767, aosp/1258664)- Parça
1.2.3
'ten: Kullanılmayan parça sınıflarının kaldırılabilmesi için parçanın dahil edilen ProGuard kurallarının kapsamı azaltıldı. (b/149665169) 1.2.3
Kırıntısından: Kotlin mülk adını gölgeleyen yerel bir değişken adı kullanıldığındaUseRequireInsteadOfGet
Lint kontrolünde yanlış pozitifler düzeltildi. (b/149891163)1.2.3
Parçası:FragmentContainerView
artık düzen önizlemesinde yanlış kurucuyu kullandığı içinUnsupportedOperationException
hatası vermiyor. (b/149707833)
Bilinen Sorunlar
BottomSheetDialogFragment
artık iletişim kutusunu ekranda düzgün bir ş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
serbest bırakıldı. 1.3.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Yaşam Döngüsü
2.3.0-alpha01
bölümüne eklenenViewTreeLifecycleOwner.get(View)
API'si,onCreateView()
tarihine kadar döndürülen tüm Görünümler için ParçanınviewLifecycleOwner
değeriniLifecycleOwner
olarak döndürecek şekilde destek eklendi. (aosp/1182955)
API Değişiklikleri
- Fragment'lerdeki
setRetainInstance()
yöntemi kullanımdan kaldırıldı. ViewModels'ın kullanıma sunulmasıyla birlikte geliştiriciler, etkinlikler, parçalar ve gezinme grafikleriyle ilişkilendirilebilecek durumu korumak için belirli bir API'ye sahip oldu. Bu sayede geliştiriciler, normal ve saklanmayan bir Fragment kullanabilir ve saklanmasını istedikleri belirli durumu ayrı tutabilir. Böylece, saklanmayan durumun tek bir kez oluşturulması ve yok edilmesinin (yaniViewModel
sınıfının kurucusu ve aldığıonCleared()
geri çağırma işlevi) yararlı özelliklerini korurken yaygın bir sızıntı kaynağından kaçınabilirler. (b/143911815) - ViewPager2
1.0.0
'nin kullanıma sunulmasıyla birlikte,ViewPager
ile etkileşime geçmek için kullanılanFragmentPagerAdapter
veFragmentStatePagerAdapter
sınıflarının desteği sonlandırıldı. ViewPager'dan ViewPager2'ye taşıma başlıklı makaleyi inceleyin. (b/145132715)
Hata Düzeltmeleri
- Parça ProGuard kuralları artık tüm
Fragment
örnekleri yerine yalnızca kullanılan varsayılan kurucuFragment
sınıflarını doğru şekilde koruyor. Bu sayede, Parça1.2.1
'de ortaya çıkan bir gerileme düzeltildi. (b/149665169 1.2.2
Parçası'na eklenenrequire___()
Lint kuralları, gölgelendirilmiş Kotlin özelliği adlarıyla (ör.view
). (b/149891163)FragmentContainerView
, Android Studio'da düzen önizlemesi kullanılırken artıkUnsupportedOperationException
hatası vermiyor. (b/149707833)- Durum kaydedildikten sonra eklenen ve saklanan parçaların her yapılandırma değişikliğinden sonra sürekli olarak yeniden oluşturulup yok edilmemesi sorunu 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
yayınlandı. 1.2.5 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Fragment'in
getViewLifecycleOwner()
, artıkonSaveInstanceState()
çağrılmadan önce durdurulur. Bu durum, fragment'in yaşam döngüsünün davranışını yansıtır. Bu, daha önce1.3.0-alpha04
Fragmanı'nda yayınlanmıştı. (b/154645875) - Bir fragmanda
setMenuVisibility(false)
çağrıldığında artık alt fragmanları tarafından sağlanan menülerin görünürlüğü doğru şekilde değiştiriliyor. Bu, daha önce1.3.0-alpha04
Kırıntısı'nda yayınlanmıştı. (b/153593580)
1.2.4 sürümü
1.2.4 sürümü
1 Nisan 2020
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
ve androidx.fragment:fragment-testing:1.2.4
yayınlandı. 1.2.4 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Parça ProGuard kuralları, saklanan parçaların kod karartılmasına olanak tanıyacak şekilde güncellendi. (b/151605338)
- Yaşam döngüsü ve görüntüleme yaşam döngüsü her zaman senkronize olduğundan
DialogFragment
sınıflarındaFragmentLiveDataObserve
lint kuralı devre dışı bırakıldı. Bu sayede,observe
çağrılırkenthis
veyaviewLifecycleOwner
'ın kullanılması güvenli hale geldi. (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ü bu taahhütleri içerir.
Hata Düzeltmeleri
DialogFragment
'te,onCreateDialog()
içindengetLayoutInflater()
çağrılırkenStackOverflowError
'e neden olan bir hata düzeltildi. (b/117894767, aosp/1258665)- Kullanılmayan Fragment sınıflarının kaldırılabilmesi için Fragment'in dahil edilen ProGuard kurallarının kapsamı azaltıldı. (b/149665169)
- Kotlin özelliğinin adını gölgeleyen bir yerel değişken adı kullanılırken
UseRequireInsteadOfGet
Lint kontrolündeki yanlış pozitifler düzeltildi. (b/149891163) FragmentContainerView
artık düzen önizlemesinde yanlış kurucunun kullanılması nedeniyleUnsupportedOperationException
hatası vermiyor. (b/149707833)
1.2.2 sürümü
1.2.2 sürümü
19 Şubat 2020
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
ve androidx.fragment:fragment-testing:1.2.2
serbest bırakıldı. 1.2.2 sürümü bu taahhütleri içerir.
Yeni hata analizi kontrolleri
- Lint,
onCreateView()
,onViewCreated()
veonActivityCreated()
'teOnBackPressedDispatcher
çağrıları içinLifecycleOwner
olarakviewLifecycleOwner
kullanılmasını önerir. (b/142117657) fragment-testing
yapısını kullanırken doğrudebugImplementation
kullandığınızı doğrulayan yeni bir Lint denetimi eklendi. (b/141500106)- Parçalar artık hem
get
hem derequire
eşdeğeri içeren tüm Parça API'leri içincheckNotNull(get___())
,requireNonNull(get___())
veyaget___()!!
yerine daha açıklayıcı hata mesajları için ilişkilirequire___()
yöntemlerini kullanmanızı önerir. (aosp/1202883)
Hata Düzeltmeleri
- R8 uyarılarını önlemek için Fragment ProGuard dosyaları düzeltildi (b/148963981)
observe
kullanırkenviewLifecycleOwner
kullanmayı öneren mevcut lint kontrolünü,observe
'unlivedata-ktx
uzantı yöntemi sürümünü de ele alacak şekilde iyileştirildi. (b/148996309)- Hata analizi kontrollerinin çoğunun biçimlendirmesi düzeltildi (aosp/1157012)
Harici katkılar
- Slack adına
require___()
Lint kontrollerine katkıda bulunduğu için Zac Sweers'a 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
yayınlandı. Sürüm 1.2.1 bu kaydetmeleri içerir.
Hata düzeltmeleri
add
vereplace
yöntemleri aracılığıyla eklenen veClass
örneği (veya Kotlin'in yeniden oluşturulmuş sürümleri) alan parçaların varsayılan kurucuları artık ProGuard tarafından korunuyor. (b/148181315)FragmentStatePagerAdapter
veFragmentPagerAdapter
,finishUpdate()
çalıştırıldığındaFragmentManager
tarafından oluşturulan istisnaları artık yakalamıyor. (aosp/1208711)FragmentManager.findFragment()
öğesinin,<fragment>
etiketi aracılığıyla eklenen parçalarla çalışmamasına neden olan sorun düzeltildi. (b/147784323)<fragment>
etiketi kullanılarak şişirilen parçalar artık düzendeyken her zamanonCreate()
çağrısından önceonInflate()
çağrısı alır. (aosp/1215856)FragmentManager
örneğindetoString()
çağrıldığında, Etkinlik zaten kaldırıldığında artıkNullPointerException
tetiklenmez. (b/148189412)
Bağımlılık değişiklikleri
1.2.1
parçaları artık Lifecycle ViewModel SavedState2.2.0
'e bağlıdır.
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
yayınlandı. 1.2.0 sürümü bu taahhütleri içerir.
1.1.0 sürümünden bu yana yapılan önemli değişiklikler
- FragmentContainerView:
FragmentContainerView
, dinamik olarak eklenen Fragment'ler için kesinlikle önerilen kapsayıcıdır veFrameLayout
veya diğer düzenlerin kullanımını değiştirir.<fragment>
etiketiyle aynıclass
,android:name
ve isteğe bağlıandroid:tag
değerlerini de destekler ancak bu ilk parçayı eklemek için<fragment>
tarafından kullanılan özel kod yolu yerine normal birFragmentTransaction
kullanır. onDestroyView()
zamanlaması: Fragment'ler artıkonDestroyView()
çağrılmadan önce çıkış animasyonlarının, çıkış çerçevesi geçişlerinin ve çıkış AndroidX geçişlerinin (Geçiş1.3.0
kullanılırken) tamamlanmasını bekler.- Sınıf tabanlı
add()
vereplace()
:FragmentTransaction
üzerindeClass<? extends Fragment>
ve isteğe bağlıBundle
bağımsız değişkeni alan yeniadd()
vereplace()
aşırı yüklemeleri eklendi. Bu yöntemler, eklenecek Fragment örneğini oluşturmak içinFragmentFactory
öğenizi kullanır. Yeniden oluşturulmuş türleri (ör.fragmentTransaction.replace<YourFragment>(R.id.container)
) kullanan Kotlin uzantıları dafragment-ktx
'e eklendi. - Lifecycle ViewModel SavedState Entegrasyonu:
by viewModels()
,by activityViewModels()
,ViewModelProvider
kurucusu veyaViewModelProviders.of()
ile bir parça kullanılırken artık varsayılan fabrikaSavedStateViewModelFactory
'dir. - Yeni hata analizi kontrolleri:
onCreateView()
,onViewCreated()
veyaonActivityCreated()
'denLiveData
'i gözlemlerkengetViewLifecycleOwner()
kullandığınızdan emin olmanızı sağlayan yeni bir hata analizi kontrolü eklendi. getFragmentManager()
desteğinin sonlandırılması: Fragment'tekigetFragmentManager()
verequireFragmentManager()
yöntemlerinin desteği sonlandırıldı ve bu yöntemler, Fragment'in eklendiği null olmayanFragmentManager
değerini döndüren tek birgetParentFragmentManager()
yöntemiyle değiştirildi (çağrılmasının güvenli olup olmadığını belirlemek içinisAdded()
'i kullanabilirsiniz).FragmentManager.enableDebugLogging()
desteği sonlandırıldı: StatikFragmentManager.enableDebugLogging
yöntemi kullanımdan kaldırıldı. FragmentManager, artıkFragmentManager
etiketi içinLog.isLoggable()
'ı dikkate alıyor. Böylece, uygulamanızı yeniden derlemedenDEBUG
veyaVERBOSE
günlük kaydını etkinleştirebilirsiniz.
Bilinen Sorunlar
- Yalnızca
FragmentContainerView
üzerindekiclass
veyaandroid:name
özelliği aracılığıyla referans verilen parçalar ProGuard tarafından otomatik olarak saklanmaz. Bu nedenle, her bir parça sınıfı için manuel olarak bir saklama kuralı eklemeniz gerekir. (b/142601969) FragmentContainerView
ile XML'declass
veyaandroid:name
kullanarakNavHostFragment
eklerken EtkinliğinizinonCreate()
bölümündefindNavController()
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
yayınlandı. 1.2.0-rc05 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
<fragment>
etiketi kullanılırken1.2.0-rc04
Fragment'inde, etkinlik imha edilirkenonViewCreated()
'nin yanlış çağrılmasına neden olan bir gerileme düzeltildi. (b/146290333)<fragment>
etiketiyle eklenen parçaların yapılandırma dışı verileri artık yalnızca bazen düzende (ör. yalnızca yatay düzeninizde) olsalar bile düzgün şekilde temizleniyor. Sonuç olarak bu Parçalar artık örneklenmek ancak hiçbir yaşam döngüsü yönteminden geçmemek yerine düzeninizde değilken bileCREATED
bölümüne doğru şekilde 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
yayınlandı. 1.2.0-rc04 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Görsel sorunları önlemek için
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
veTRANSIT_FRAGMENT_FADE
için animasyonlar düzenlendi. (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
serbest bırakıldı. 1.2.0-rc03 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Kaldırılan parçaların, çıkış animasyonları / geçişleri çalışırken
findFragmentById()
/findFragmentByTag()
tarafından hâlâ döndürüldüğü istenmeyen bir davranış değişikliği düzeltildi. (b/143982969, aosp/1167585) - İçerdiği etkinlik
onSaveInstanceState()
'ü çağırdığında artık alt parçalar ebeveynlerinden önce doğru şekilde durduruluyor. (b/144380645) - Gizli bir Fragment gösterildikten sonra Görüntüleme Sayısı'nın yanlışlıkla
INVISIBLE
olarak işaretlenmesi sorunu düzeltildi. (b/70793925) - Paylaşılan öğe geçişleri artık döndürülmüş, ölçeklendirilmiş vb. görünümleri yönetiyor (b/142835261)
Belge Güncellemeleri
setUserVisibleHint()
ile ilgili desteğin sonlandırılması dokümanlarına açıklık getirildi. (b/143897055)FragmentFactory
ayarının alt FragmentManager'ları da etkileyeceğini daha iyi belirtmek içinsetFragmentFactory()
vegetFragmentFactory()
ile ilgili dokümanlar iyileştirildi. (aosp/1170095)
Bağımlılık değişiklikleri
- Fragment'ler artık yaşam döngüsü
2.2.0-rc03
, yaşam döngüsü ViewModel SavedState1.0.0-rc03
ve etkinlik1.1.0-rc03
'e 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
yayınlandı. 1.2.0-rc02 sürümü bu taahhütleri içerir.
Hata düzeltmeleri
- Kotlin'de,
onCreateView()
,onViewCreated()
veyaonActivityCreated()
'tenLiveData
'u gözlemlerkengetViewLifecycleOwner()
kullanmaya yönelik LintFix (Parça1.2.0-rc01
'te kullanıma sunulmuştur) artıkgetViewLifecycleOwner()
yerine Kotlin mülk erişim söz dizimiviewLifecycleOwner
'i 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
yayınlandı. Sürüm 1.2.0-rc01 bu kaydetmeleri içerir.
Yeni özellikler
FragmentContainerView
artık<fragment>
etiketinin işlevini yansıtarakandroid:name
'ye ek olarakclass
özelliğini de destekliyor. (b/142722242)onCreateView()
,onViewCreated()
veyaonActivityCreated()
üzerindenLiveData
gözlem yaparkengetViewLifecycleOwner()
kullandığınızdan emin olmanızı sağlayan yeni bir Lint kontrolü eklendi. (b/137122478)
Hata düzeltmeleri
DialogFragment
üzerindekionDismiss
veonCancel
geri çağırma işlevleri artık kendilerine iletilenDialogInterface
değerinin null olmadığını vegetDialog()
işlevinin yürütüldüğünde null olmayan bir değer döndürdüğünü garanti eder. (b/141974033)FragmentContainerView
,class
veyaandroid:name
tarafından tanımlanan Parçayı enflasyonun bir parçası olarak ekler. BöylecefindFragmentById()
vefindFragmentByTag()
, bundan hemen sonra çalışır. (b/142520327)- Durum kaydedildiği için
FragmentContainerView
içindeki birIllegalStateException
düzeltildi. (b/142580713) FragmentContainerView
sınıfının kodu karartıldığındaFragmentContainerView
öğesindeUnsupportedOperationException
hatası düzeltildi. (b/142657034)
Bilinen sorunlar
- Yalnızca
FragmentContainerView
üzerindekiclass
veyaandroid:name
özelliği aracılığıyla referans verilen parçalar ProGuard tarafından otomatik olarak saklanmaz. Bu nedenle, her bir parça sınıfı için manuel olarak bir saklama kuralı eklemeniz gerekir. Bu sorunaapt2
aracılığıyla düzeltilene kadarFragmentContainerView
'e geçmeyi öneren lint kuralını 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
yayınlandı. Sürüm 1.2.0-beta02 bu kaydetmeleri içerir.
Hata düzeltmeleri
- Fragment'in
onInflate()
öğesininFragmentContainerView
öğesinden doğru özellikleri almaması veNavHostFragment
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ü bu taahhütleri içerir.
Yeni özellikler
FragmentContainerView
,android:name
ve isteğe bağlıandroid:tag
XML özellikleri için ek destek içeren bir başlangıç parçası ekleme desteği ekler.<fragment>
etiketinin aksineFragmentContainerView
, ilk parçayı eklemek için arka planda normal birFragmentTransaction
kullanır. Bu sayedeFragmentContainerView
üzerinde daha fazlaFragmentTransaction
işlemi yapılabilir ve düzen için Görünüm Bağlantısı kullanılabilir. (b/139830628, b/141177981)- Parçalar artık
<fragment>
yerineFragmentContainerView
için hızlı düzeltme sunan bir Lint uyarısı içeriyor. (b/139830056)
Hata düzeltmeleri
androidx.transition
kullanılırkenClassCastException
sorunu düzeltildi. (b/140680619)- Geçiş
1.3.0-beta01
kullanılırken parçalar artıkonDestroyView()
'yi göndermeden önceandroidx.transition
geçişlerinin (sırasıyla Parça1.2.0-alpha03
ve Parça1.2.0-alpha02
'te düzeltilen çerçeve geçişleri ve animasyonlarına ek olarak) tamamlanmasını bekler. (aosp/1119841) - Geçiş
1.3.0-beta01
kullanılırken artık Fragmanlar, aynı kapsayıcıda yeni geçişler / animasyonlar başlatmadan önceandroidx.transition
geçişlerini düzgün şekilde iptal ediyor. (aosp/1119841) - API 17 ve önceki sürümlerde,
FragmentContainerView
kullanırken Fragment'inizin kök görünümündeandroidx.transition
geçişleri kullanılırken ortaya çıkan bir sorun düzeltildi. (b/140361893) fragment-testing
yapı artık AndroidX Test'e1.2.0
bağlıdır. Bu sayede, en son Espresso 3.2.0 sürümüyle ilgili bir uyumsuzluk düzeltildi. (b/139100149)- FragmentManager'da
Log.w
kullanımı kaldırıldı. (aosp/1126468)
Bilinen sorunlar
- Parçanın
onInflate()
öğesi,FragmentContainerView
öğesinden doğru özellikleri almıyor veNavHostFragment
gibi durumları bozuyor. (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
yayınlandı. 1.2.0-alpha04 sürümü bu taahhütleri içerir.
API değişiklikleri
Fragment
üzerindekigetFragmentManager()
verequireFragmentManager()
yöntemlerinin desteği sonlandırıldı ve bunların yerine, Fragment'in eklendiği null olmayanFragmentManager
öğesini döndüren tek birgetParentFragmentManager()
yöntemi eklendi (çağrılmasının güvenli olup olmadığını belirlemek içinisAdded()
'i kullanabilirsiniz). (b/140574496)- Statik
FragmentManager.enableDebugLogging
yöntemi kullanımdan kaldırıldı. FragmentManager artıkFragmentManager
etiketi içinLog.isLoggable()
değerine uyuyor. Bu sayede uygulamanızı yeniden derlemedenDEBUG
veyaVERBOSE
günlük kaydını etkinleştirebilirsiniz. (aosp/1116591)
Hata düzeltmeleri
- Diğer parçalardaki çıkış animasyonları çalışırken parçalar artık düzgün bir şekilde yok ediliyor. (b/140574199)
- Fragment'lerin daha önce çağırmadığı
Activity.findViewById()
çağrısını yapması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 taahhütleri burada bulabilirsiniz.
API değişiklikleri
FragmentContainerView
artıkfinal
. (b/140133091)
Hata düzeltmeleri
FragmentContainerView
artık arka yığıntan parçalar çıkarıldığında çizim sırasını düzgün şekilde tersine çeviriyor. (b/139104187)- Hem bir parçayı pop up olarak açarken hem de aynı anda yeni bir parça eklerken yanlış animasyonun oynatılmasına neden olan sorun düzeltildi. (b/111659726)
- Parçalar artık
onDestroyView()
göndermeden önce geçişlerin (1.2.0-alpha02
parçasında düzeltilen animasyonlara ek olarak) tamamlanmasını bekler. (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 taahhütleri burada bulabilirsiniz.
Yeni özellikler
SavedStateViewModelFactory
artıkby viewModels()
,by activityViewModels()
,ViewModelProvider
kurucusu veyaFragment
ileViewModelProviders.of()
kullanılırken kullanılan varsayılan fabrikadır. (b/135716331)FragmentTransaction
cihazındasetTransition
ileTRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
kullanılı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 Fragment'lere gönderilen pencere içe eklemelerini düzelttiği için dinamik olarak eklenen Fragment'ler için
FragmentContainerView
'üFrameLayout
vb. kullanımların yerine güçlü bir şekilde önerilen kapsayıcı olarak kullanıma sunar. (b/37036000, aosp/985243, b/136494650) - Bir parça tarafından şişirilmiş bir görünümden içeren parçayı almak için statik bir
FragmentManager.findFragment(View)
yöntemi eklendi.fragment-ktx
'te Kotlin uzantısı da mevcuttur. (aosp/1090757) FragmentTransaction
üzerindeClass<? extends Fragment>
ve isteğe bağlı birBundle
bağımsız değişkeni alan yeniadd()
vereplace()
aşırı yüklemeleri eklendi. Bu yöntemler, eklenecek parçanın bir örneğini oluşturmak içinFragmentFactory
öğenizi kullanır.fragment-ktx
'a, somutlaştırılmış türleri (ör.fragmentTransaction.replace<YourFragment>(R.id.container)
) kullanan Kotlin uzantısı da eklendi. (b/126124987)@MainThread
yaşam döngüsü geri çağırmalarınaFragment
ek açıklamaları eklendi. (b/127272564)FragmentTransaction
veFragmentManager.BackStackEntry
sürümlerindeki içerik haritası başlığıyla ilgili API'ler kullanımdan kaldırıldı. (b/138252944)FragmentTransaction
üzerindekisetTransitionStyle
yöntemi kullanımdan kaldırıldı. (aosp/1011537)FragmentManager
yöntemlerinden çoğu artıkabstract
değildir.FragmentManager
kendisiabstract
olarak kalır ve doğrudan örneklendirilmemeli veya genişletilmemelidir; yalnızcagetSupportFragmentManager()
,getChildFragmentManager()
vb. öğelerden mevcut bir örnek almaya devam etmeniz gerekir.
Hata düzeltmeleri
- Parça
1.1.0-rc04
: Parçalar artık pop-up olarak gösterilen parçalarda ertelenen geçişleri doğru şekilde iptal ediyor. (b/138251858) 1.1.0-rc03
Fragment'inden:postponeEnterTransition()
işlevinin zaman aşımı parametresi birden fazla kez çağrıldığında önceki zaman aşımları iptal edilmeyen sorun düzeltildi. (b/137797118)1.1.0-rc02
Fragment'inden: Geçerli öğe kaldırılırkenFragmentPagerAdapter
veFragmentStatePagerAdapter
'te yaşanan kilitlenme sorunu düzeltildi. (b/137209870)- Parçalar artık
onDestroyView()
dağıtılmadan önce animasyonların bitmesini bekliyor. (b/136110528) - Alt parçalardan ve alt öğelerinden gelen parça animasyonları, artık üst parça animasyonlarında düzgün şekilde ele alınıyor. (b/116675313)
- Ortak öğe geçişleri kullanılırken ve pop ile ekleme işlemi birleştirilirken ortaya çıkan bir
NullPointerException
sorunu düzeltildi. (b/120507394) - Robolectric testlerinde
FragmentPagerAdapter
veFragmentStatePagerAdapter
kullanılırkenIllegalStateException
öğelerine geçici bir çö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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- FragmentManager artık Fragment'in görünümünü ekledikten sonra ve doğrudan
onViewCreated()
'ı çağırmadan öncerequestApplyInsets()
'yi çağırıyor. Böylece görünümünüzün her zaman doğru iç içe yerleştirilmelerine sahip olmasını sağlıyor. (b/135945162)
Hata düzeltmeleri
replace()
'dan öncesetPrimaryNavigationFragment()
kullanan birFragmentTransaction
'ı açarken oluşan birNullPointerException
düzeltildi. (b/134673465)
1.1.0 sürümü
1.1.0 sürümü
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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
1.0.0 sürümünden bu yana yapılan önemli değişiklikler
- fragment-testing:
fragment-testing
yapıları, bir parçayı tek başına test etmek içinFragmentScenario
sınıfı sağlar. Daha fazla bilgi için Uygulamanızın parçalarını test etme dokümanlarını inceleyin. - FragmentFactory: Artık, bağımsız bölüm örneklerinin oluşturulmasını yönetmek için bir
FragmentManager
üzerindeFragmentFactory
ayarlayabilirsiniz. Böylece, bağımsız bölüm oluşturucunun bağımsız değişken içermemesi şartı kaldırılmış olur. - ViewModel'ler için Kotlin mülk temsilcileri:
fragment-ktx
yapı artık iki Kotlin mülk temsilcisi içeriyor: Ayrı bir fragmanla ilişkili ViewModel'lere erişmek içinby viewModels()
ve etkinlik kapsamına alınmış ViewModel'lere erişmek içinby activityViewModels()
. - Maks. yaşam döngüsü: Artık bir
FragmentTransaction
üzerindesetMaxLifecycle()
çağrısı yaparak bir parça için maksimum yaşam döngüsü durumu ayarlayabilirsiniz. Bu, artık kullanımdan kaldırılansetUserVisibleHint()
'ün yerini almıştır.FragmentPagerAdapter
veFragmentStatePagerAdapter
, yeni davranışa geçiş yapmanıza olanak tanıyan yeni bir oluşturucuya sahip. - FragmentActivity LayoutId oluşturucusu:
FragmentActivity
alt sınıfları artık isteğe bağlı olarakonCreate()
'tesetContentView()
'i çağırmanın alternatifi olarakFragmentActivity
'deR.layout
kimliği alan bir oluşturucu çağırabilir. Bu oluşturucu, içerik görünümü olarak ayarlanması gereken düzeni belirtir. Bu, alt sınıfınızın bağımsız değişken içermeyen bir kurucuya sahip olması şartını değiştirmez. - Fragment LayoutId oluşturucusu:
Fragment
alt sınıfları artık isteğe bağlı olarakonCreateView()
'i geçersiz kılmanın alternatifi olarak bu parça için kullanılacak düzeni belirten birR.layout
kimliği alanFragment
oluşturucusunu çağırabilir. Şişirilmiş düzenonViewCreated()
'te yapılandırılabilir. - Tüme zaman aşımı ile erteleme: Zaman aşımı alan yeni bir
postponeEnterTransition()
aşırı yükleme işlevi 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 taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- Parçalar artık pop-up olarak gösterilen parçalarda ertelenen geçişleri 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ümdeki kaydetmelere buradan ulaşabilirsiniz.
Hata düzeltmeleri
- Zaman aşımına sahip
postponeEnterTransition()
uygulamasının birden fazla kez çağrılmasının, önceki zaman aşımlarının iptal edilmesine neden olmamasına 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
serbest bırakıldı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- Mevcut öğe kaldırılırken
FragmentPagerAdapter
veFragmentStatePagerAdapter
'te yaşanan 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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- Geçiş çalışırken
show()
veyahide()
işlemleri kullanıldığında artık parçaların görünürlüğü doğru şekilde güncelleniyor. (b/133385058) replace()
'den öncesetPrimaryNavigationFragment()
kullanan birFragmentTransaction
'i açarken oluşan birNullPointerException
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 taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- İç içe yerleştirilmiş parçalar için
androidx.lifecycle.Lifecycle
geri çağırmaları (özellikleSTARTED
,RESUMED
,PAUSED
,STOPPED
veDESTROYED
ile ilgili) düzgün bir şekilde iç içe yerleştirilmiş. (b/133497591) - Bir Fragment'in
onCreate()
özelliğine kaydedilenOnBackPressedCallback
örnekleri artık alt FragmentManager'a göre uygun şekilde önceliklidir. (b/133175997) - Ebeveyn parçaları değiştirilirken artık alt parçalar animasyonlu olarak gösterilmiyor. (b/121017790)
animateLayoutChanges="true"
kullanılırken artık parça 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
serbest bırakıldı. Bu sürüme dahil edilen taahhütleri 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ğrı alır. aosp/960857
Hata düzeltmeleri
- Bir alt fragman tarafından şişirilen menü öğeleri, ana fragman 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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Bu sürüm, Preferences 1.1.0-alpha01 ile 1.1.0-alpha04 arasında uyumlu değildir. Fragments'ın bu sürümünü kullanırken lütfen Tercihler 1.1.0-alpha05 sürümüne geçin.
Yeni özellikler
- Zaman aşımı alan yeni bir
postponeEnterTransition()
aşırı yükleme işlevi eklendi. Bu işlevden sonra Fragment,startPostponedEnterTransition()
'ı otomatik olarak çağırır b/120803208
API değişiklikleri
- Önemli değişiklik:
Bundle
alan ve daha önce desteği sonlandırılanFragmentFactory
instantiate
yöntemi kaldırıldı. aosp/953856 - Önemli değişiklik:
FragmentPagerAdapter
veFragmentStatePagerAdapter
'dekiRESUME_ONLY_CURRENT_FRAGMENT
veUSE_SET_USER_VISIBLE_HINT
sabitleri sırasıylaBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
veBEHAVIOR_SET_USER_VISIBLE_HINT
olarak yeniden adlandırıldı. aosp/954782
Hata düzeltmeleri
setMaxLifecycle()
üzerinden yaşam döngüsü sınırlanan parçalar artık son durumlarına ulaşmadan devam ettirilmiyor. b/131557151setMaxLifecycle(Lifecycle.State.CREATED)
kullanıldığında parçaların görünümü uygun şekilde kaldırılır. 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
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni özellikler
- Artık
FragmentTransaction
üzerindesetMaxLifecycle()
çağrısı yaparak bir Fragment için maksimum yaşam döngüsü durumu belirleyebilirsiniz. Bu, artık desteği sonlandırılansetUserVisibleHint()
öğesinin yerini alır.FragmentPagerAdapter
veFragmentStatePagerAdapter
, yeni davranışa geçmenize olanak tanıyan yeni bir oluşturucuya sahiptir. (b/129780800)
API Değişiklikleri
FragmentScenario
üzerindekimoveToState(STARTED)
artık yalnızca API 24 ve sonraki sürümleri çalıştıran cihazlarda çağrılabilir. (b/129880016)
Davranış Değişiklikleri
- (b/129907905) nedeniyle, barındırma etkinliği yeniden oluşturulduğunda arka yığıntaki parçalar
onCreateView()
için geri çağırma almaz.onCreateView()
artık yalnızca parça görünür hale geldiğinde (ör. arka yığın açıldığında) çağrılacaktır.
Hata düzeltmeleri
- XML'de
<fragment>
etiketi veFragmentActivity
ya daAppCompatActivity
öğesinincontentLayoutId
oluşturucusu kullanılırken karşılaşılan sorun düzeltildi. (b/129907905) - Arka yığıntaki parçaların, yapılandırma değişikliğinden sonra en az
CREATED
'e taşınmaması ve bu nedenle ViewModel'lerin ve tutulan alt parçaların düzgün şekilde kaldırılmamasına neden olan sorun düzeltildi. (b/129593351) - Örnek durumu kaydedildikten sonra saklanan parçaların senkronizasyonunun neden olduğu
restoreSaveState
kilitlenmesi düzeltildi. (b/130433793) (aosp/947824) FragmentManager
'un geri yığını varsa, bir parça yaşam döngüsü ile eklenenOnBackPressedCallback
'ün çağrılmaması sorunu düzeltildi. Daha fazla bilgi için androidx.activity 1.0.0-alpha07 bölümüne bakın. (aosp/948209)- Parçalar artık animasyonlar için
LAYER_TYPE_HARDWARE
öğesini zorunlu kılmıyor. Özellikle 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
yayınlandı. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- FragmentManager tarafından atılan istisnalar artık mesaja Fragment'in adını ekliyor. (b/67759402)
API Değişiklikleri
Fragment
veFragmentActivity
artık@LayoutRes int
alan ikinci bir kurucu işlevi içeriyor. Bu işlev, sınıfınıza@ContentView
ile not ekleme işleminin önceki davranışını değiştiriyor. Bu yaklaşım hem uygulama hem de kitaplık modüllerinde işe yarar. (b/128352521)- FragmentActivity'nin
onActivityResult()
özelliği artık@CallSuper
olarak işaretlendi. (b/127971684) - FragmentFactory'nin bağımsız değişken Bundle'ı alan
instantiate
yöntemi kullanımdan kaldırıldı. Ayrıca uygulamalar, Bundle almayan yeniinstantiate
aşırı yüklemesini kullanmalıdır. (b/128836103) FragmentScenario
yöntemleri artık@StyleRes
ile uygun şekilde ek açıklamaya sahip. (aosp/924193)FragmentTabHost
desteği sonlandırıldı. (b/127971835)- FragmentActivity öğesinin
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)
- popBackStack+replace+popBackStack işlem dizilerinden sonra birincil gezinme parçasının kaybolmasına neden olan sorun düzeltildi. (b/124332597)
- Fragment durumunu geri yüklerken Etkinliğinizde
@ContentView
kurucuları kullanırken oluşan bir sorun düzeltildi. (b/127313094) - Mevcut bir hedef Fragment'i henüz FragmentManager'a 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
yayınlandı. Bu sürüme dahil edilen tüm taahhütlerin listesini burada bulabilirsiniz.
Yeni özellikler
@ContentView
ek açıklama 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()
vesetPrimaryNavigationFragment()
çağrısı yapıldığında artık sessizce başarısız olmak yerine birIllegalStateException
atılıyor (aosp/904301)
Hata düzeltmeleri
FragmentActivity
içinonNewIntent
artık doğru şekilde@CallSuper
ile işaretlendi (b/124120586)getDialog().dismiss()
veyagetDialog().cancel()
kullanılırkenDialogFragment
onDismiss()
öğesinin iki kez çağrılmasına neden olan sorun 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
yayınlandı.
Yeni özellikler
onCreateView()
sınıfı ek açıklamaları için destek eklendi. Bu ek açıklama,onCreateView()
'yi geçersiz kılmanın alternatifi olarak hangi düzen XML dosyasının şişirileceğini belirtmenize olanak tanır.@ContentView
İlgili çalışmalarıonViewCreated()
'te görüntülemeniz önerilir. (aosp/837619)fragment-testing
artıkandroidx.test:core-ktx
1.1.0 kararlı sürümüne (b/121209673) bağlıdır- Artık
openActionBarOverflowOrOptionsMenu
ileFragmentScenario
'ü kullanarak parça üzerinde barındırılan seçenek menülerini test edebilirsiniz (b/121126668)
API değişiklikleri
@NonNull Bundle
döndüren veyaIllegalStateException
atanrequireArguments()
yöntemi eklendi (b/121196360)getLifecycle()
,getViewLifecycleOwner()
vegetViewLifecycleOwnerLiveData()
öğelerinin geçersiz kılınmaması ve gelecekteki bir sürümde nihai hale getirilmesi gerektiğini belirten bir not eklendi. Şu anda bu yöntemi geçersiz kılmaya çalışı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 kesinleşeceği not eklendi. Şu anda bu yöntemi geçersiz kılmaya çalışıyorsanız lütfen özellik isteği gönderin. (aosp/880713)- Fragments'ın önceki sürümleriyle ikili program uyumluluğuyla ilgili sorun düzeltildi. (aosp/887877) (aosp/889834)
Hata düzeltmeleri
null
öğesinisetTargetFragment()
öğesine ilettiğinizde hedef parçalar doğru şekilde temizlenir. (aosp/849969)- Hedef Fragment'lerin bazen
onDestroy()
'te veya sonrasında kullanılamamasına neden olan sorun düzeltildi. (b/122312935) - DialogFragment'in onDismiss() işlevi artık
onDestroy()
işlevinden önce çağrılıyor. (aosp/874133) (aosp/890734)
Sürüm 1.1.0-alpha03
17 Aralık 2018
Yeni özellikler
- Parça artık
BundleSavedStateRegistryOwner
'ü uygular ve yeni yayınlanan SavedState kitaplığına [aosp/824380] bağlıdır. - İçerdiği Activity ile ilişkili ViewModel'leri almak için bir
by activityViewModels
Kotlin mülk temsilcisi eklendi [b/119050253] by viewModels
Kotlin mülk temsilcisi,ViewModelStoreOwner
'yi almak için isteğe bağlı bir lambda yöntemi alacak şekilde genişletildi. Bu sayede,val viewModel: MyViewModel by viewModels(::requireParentFragment)
gibi bir kodla ana Fragment'i veya başka bir özelViewModelStoreOwner
'yi iletebilirsiniz [b/119050253]
API değişiklikleri
FragmentScenario
artıkTheme.AppCompat
[b/119054431] gibi bir tema belirtmenize olanak tanır. Bu zarar veren bir değişikliktir.@NonNull View
döndüren veyaIllegalStateException
atanrequireView()
yöntemi eklendi [b/120241368]@NonNull Fragment
döndüren veyaIllegalStateException
atanrequireParentFragment()
yöntemi eklendi [b/112103783]
Hata düzeltmeleri
- IllegalStateException düzeltildi: b/120814739 durumu kaydedilemedi
- Kayıtlı örnek durumundan geri yüklenen parçalar artık her zaman null olmayan bir alır. [b/119794496]
Bundle
- Kaldırılan Fragmanlar yeniden eklenirse artık
Lifecycle
nesnelerini yeniden kullanmaz [b/118880674]
Sürüm 1.1.0-alpha02
3 Aralık 2018
Yeni özellikler
- FragmentScenario'nun Kotlin uzantıları artık
FragmentFactory
örneğini iletmek yerine Fragment oluşturmak için lambda kullanmanıza olanak tanır. (aosp/812913)
Hata düzeltmeleri
- Arka yığınta iç içe yerleştirilmiş Fragment'ler kullanılırken oluşan IllegalStateException hatası düzeltildi (b/119256498)
FragmentScenario.recreate()
ileFragmentFactory
kullanıldığında kilitlenme düzeltildi (aosp/820540)- Parça kaldırıldıktan sonra hedef parçalara erişilememesi sorunu düzeltildi (aosp/807634)
Sürüm 1.1.0-alpha01
5 Kasım 2018
Bu, fragment-testing
yapısının ve androidx.test:core API'lerin üzerine kurulmuş FragmentScenario
öğesinin ilk sürümüdür. Daha fazla ayrıntı için Bölüntü testi dokümanlarını inceleyin.
Yeni özellikler
- Parçaları tek başına test etmek için yeni FragmentScenario sınıfı.
- Artık yeni Fragment örneklerinin nasıl oluşturulacağını kontrol etmek için herhangi bir
FragmentManager
üzerindeFragmentFactory
ayarlayabilirsiniz. - Bir Fragment'ten ViewModel'leri almak için yeni bir
by viewModels()
Kotlin mülk temsilcisi eklendi. - Beklemedeki giriş etkinlikleri (ör. tıklamalar) artık bir Fragment'in
onStop()
içinde iptal ediliyor.
API değişiklikleri
- Fragment API yüzeyinde null değer ek açıklamaları önemli ölçüde genişletildi.
Hata düzeltmeleri
- LiveData'dan Fragment işlemlerinin başarısız olmasına neden olan bir sorunu düzeltme(b/77944637)
Bilinen sorunlar
- Bir Fragment, FragmentManager'dan kaldırıldıktan sonra hedef Fragment'lere erişilemez.
fragment-testing
, doğruandroidx.test:core:1.0.0
yerineandroidx.test:core:1.0.0-beta01
değerine bağlıdır.