Parça
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürüm |
---|---|---|---|---|
12 Şubat 2025 | 1.8.6 | - | - | - |
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'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
1.8 sürümü
1.8.6 sürümü
12 Şubat 2025
androidx.fragment:fragment-*:1.8.6
yayınlanır. 1.8.6 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
FragmentContainerView
'ınsetOnApplyWindowInsetsListener
geçersiz kılma işlevi artık çerçevenin izin verdiğiyle eşleşen bir null dinleyici alıyor. (I575f0, b/282790626)
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şleri 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
içinde birUninitializedPropertyAccessException
düzeltildi. (I12dea)
Sürüm 1.8.3
4 Eylül 2024
androidx.fragment:fragment-*:1.8.3
yayınlanır. 1.8.3 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
FragmentManager
artık Tahmini Geri hareketini işlerken bekleyen 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 eklenirse 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
- Tahmini geri hareketi başlatıldığında kapsayıcı içermeyen parçaların hemen
DESTROYED
olarak ayarlanması 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
'unOnBackStackChangedListener
arayüzündekionBackStackChangeCancelled
geri çağırma işlevi artıkFragmentManager
'da 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.
Sürüm 1.8.0-rc01
29 Mayıs 2024
androidx.fragment:fragment-*:1.8.0-rc01
yayınlanır. 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 olmasına yol açan 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
Kırıntısından: 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ınlanır. 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 Oluştur hiyerarşisine parça eklemenize olanak tanır. Fragment'in durumunun kaydedilmesini ve geri yüklenmesini otomatik olarak yönetir. Bu, AndroidViewBindingComposable
için doğrudan bir değişim olarak kullanılabilir.(b/312895363, Icf841)
Belge Değişiklikleri
OnBackStackChangedListener
API'lerinin ne zaman çağrıldıklarını ve nasıl kullanıldıklarını belirtmek için API'lerle ilgili dokümanlar 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ü
1.7.1 sürümü
14 Mayıs 2024
androidx.fragment:fragment-*:1.7.1
yayınlanır. 1.7.1 sürümü 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ınlanır. 1.7.0 sürümü bu taahhütleri içerir.
Tahmini Geri Gitme 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 sayede kullanıcılar, hareketi tamamlayarak işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce animatör/geçişinizi arayarak önceki parçayı görmek için geri hareketini kullanabilir.
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 sırasıyla tahmini geri oynatma ilerleme durumunu ve iptal edilen etkinlikleri almak için onBackStackChangeProgressed()
ve onBackStackChangeCancelled()
sağlamaktadır.
Parça Oluşturma Yapısı
Fragment tabanlı mimariden tamamen Compose tabanlı mimariye geçiş sürecindeki uygulamaları desteklemeye odaklanan yeni bir fragment-compose
yapı 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ınlanır. 1.7.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Başka geçiş olmadan
sharedElement
ayarının neden çalışamayacağını belirtmek için günlükler eklendi. (Iec48e) - 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.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. 1.7.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
FragmentHostCallback
artık Kotlin'de yazılmıştır. Böylece, ana makinenin genel türünün boşluk kabul edebileceği durum,onGetHost()
'un döndürülen türünün boşluk kabul edebileceği durumla eşleşir. (I40af5)
Hata Düzeltmeleri
- Bir kapsayıcıda olmayan bir parçaya Tahmini Geri hareketi uygulandığında 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ı
Fragment tabanlı mimariden tamamen Compose tabanlı mimariye geçiş sürecindeki uygulamaları desteklemeye odaklanan yeni bir fragment-compose
yapı 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 Fragment'in Tahmini Geri desteği kullanılırken,addOnBackStackChangedListener
aracılığıyla hiçFragmentManager.OnBackStackChangedListener
eklenmemişse Fragment'lerhandleOnBackProgressed
'den birNullPointerException
atar. Manuel olarak dinleyici eklemek, kilitlenmeyi önler. Bu sorun, Fragments'ın sonraki sürümünde düzeltilecektir.
Sürüm 1.7.0-alpha08
10 Ocak 2024
androidx.fragment:fragment-*:1.7.0-alpha08
yayınlanır. 1.7.0-alpha08 sürümü bu taahhütleri içerir.
Temizleme
- 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 taahhütleri içerir.
Hata Düzeltmeleri
- Paylaşılan öğe geçişi ayarlandıktan sonra enter/exitTransition ayarlanmaması nedeniyle oluşan
NullPointerException
hatası 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
artık temizlenecek. (I6d83c, b/296173018)
Sürüm 1.7.0-alpha06
4 Ekim 2023
androidx.fragment:fragment-*:1.7.0-alpha06
yayınlanır. 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 taahhütleri içerir.
Yeni Özellikler
- Androidx geçişleri kullanılırken artık fragmanlar tahmini geri özelliğini destekliyor. Bu sayede, tamamlanmış hareket aracılığıyla işlemi gerçekleştirmeye veya iptal etmeye karar vermeden önce özel Androidx geçişinizle önceki parçaya gitmek için geri hareketini kullanabilirsiniz. Bu özelliği etkinleştirmek için Geçiş
1.5.0-alpha03
sürümünü kullanmanız gerekir. (Ib49b4, b/285175724)
Bilinen Sorunlar
- 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ı sorunu mevcut. 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
- Tahmini geri hareketi iptal ederken parçaların doğru yaşam döngüsü durumuna geçemediği bir sorun düzeltildi. (I7cffe, b/297379023)
- Animasyonların Geçişlerle birlikte çalışmasına izin verilen bir gerileme düzeltildi. (I59f36)
- Tahmini Geri özelliği, parçalarla birlikte kullanıldığında arka yığıntaki sondan ikinci parçada arkaya art arda iki kez 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 taahhütleri 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ınlanır. 1.7.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- API 34'ten itibaren tahmini geri hareketlerle parçaları kullanırken, aramayı (
Animations
,Transitions
) desteklemeyen veya hiç geçiş içermeyen bir geçiş sistemi kullanıyorsanız parçalar artık geri işlemini yürütmeden önce hareketin tamamlanmasını bekler. (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.
1.6 sürümü
Sürüm 1.6.2
1 Kasım 2023
androidx.fragment:fragment-*:1.6.2
yayınlanır. 1.6.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bir
FragmentContainerView
öğesinin Fragment'i şişirildiğindeFragmentManager
, Host ve id 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. 1.6.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Etkinlik durdurulduğunda ancak yok edilmediğinde saklanan kayıtlı durumun, parça örneği
RESUMED
durumuna geri taşındıktan sonra bile yanlış bir şekilde önbelleğe alınması sorunu 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, Kotlin kullanıcılarının Activity'ye açık bir bağımlılık olmadan
ComponentDialog
'ü genişletememesine neden olan sorunu düzeltir. (b/287509323)
1.6.0 sürümü
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, özel kitaplık durumu (özelParcelable
sınıfları) ve geliştirici tarafından sağlanan durum arasında tamamen 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ğ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 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ıdır. - Parça artık ProfileInstaller
1.3.0
'a bağlıdır. 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 sayede
fragment-testing
veandroidx.test
arasındaki sürüm uyuşmazlığı nedeniyle çakışmalar önlenir.
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 (değişiklik yapan işlemlerle karıştırıldıklarında) 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
işlevini zaman aşımı ile kullanmak ve ardından ertelenen parçayı değiştirmek artık ertelenen parçanın sızmasına neden olmuyor. (I2ec7d, b/276375110)- Yeni
onBackStackChangeStarted
veonBackStackChangeCommitted
geri çağırma işlevleri artık aynı parça birden fazla işlemde bulunsa bile bir parçayı yalnızca tek sefer gönderir. (Ic6b69)
Sürüm 1.6.0-alpha09
5 Nisan 2023
androidx.fragment:fragment-*:1.6.0-alpha09
yayınlanır. 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ınlanır. 1.6.0-alpha08 sürümü bu taahhütleri 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 sayede geri çağırma işlevine hiçbir zaman ayrılmış bir parça iletilmez. (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
Fragment'inden: Menü öğesi eklenmiş olsun veya olmasın herhangi bir Fragment'in kaldırılmasının, etkinliğin menüsünü geçersiz kılmasına neden olan sorun düzeltildi. (50f098, b/244336571)
Sürüm 1.6.0-alpha06
22 Şubat 2023
androidx.fragment:fragment-*:1.6.0-alpha06
yayınlanır. 1.6.0-alpha06 sürümü bu taahhütleri içerir.
Davranış değişikliği
FragmentManager
'unonBackStackChangedListener
bölümündeki yenionBackStackChangedStarted
geri çağırma işlevi artık parçalar hedef durumlarına taşınmaya başlamadan önce yürütülecek. (I34726)
Sürüm 1.6.0-alpha05
8 Şubat 2023
androidx.fragment:fragment-*:1.6.0-alpha05
yayınlanır. 1.6.0-alpha05 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentManager.OnBackStackChagnedListener
arayüzü artıkFragmentManager
'te arka yığın değişiklikleri olduğunda ek bilgi ve kontrol sağlayan iki ek geri çağırma işlevi (onBackStackChangeStarted
veonBackStackChangeCommitted
) sunuyor. (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 engellenir. (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 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. (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
Fragmanı: Fragmanlar artık görünüm sicil dairesi kayıtlı durumunun bir parçası olarakViewModel
durumunu yanlış bir şekilde kaydetmeyecek. (I10d2b, b/253546214)
Sürüm 1.6.0-alpha03
5 Ekim 2022
androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
ve androidx.fragment:fragment-testing:1.6.0-alpha03
yayınlandı. 1.6.0-alpha03 sürümü bu taahhütleri 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ğırmalara sahip olmasını sağlamak için yeni sağlayıcı geri çağırma arayüzlerinin (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) entegrasyonundan kaynaklanan geriye gidişler 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
yayınlandı. 1.6.0-alpha01 sürümü bu taahhütleri içerir.
Davranış Değişiklikleri
Fragment
'ların kayıtlı durumu, özel kitaplık durumu (özelParcelable
sınıfları) ve geliştirici tarafından sağlanan durum arasında tamamen 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. (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
1.5.7 sürümü
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
işlevini zaman aşımı ile kullanmak ve ardından ertelenen parçayı değiştirmek artık ertelenen parçanın sızmasına neden olmuyor. (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 taahhütleri içerir.
Hata Düzeltmeleri
- Menü öğesi eklenmiş olsun veya olmasın herhangi bir Fragment'in kaldırılmasının etkinliğin menüsünü geçersiz kılmasına neden olan sorun düzeltildi. (50f098, b/244336571)
Lifecycle
zatenSTARTED
ise ve bir sonuç zaten mevcutsasetFragmentResultListener
içindeclearFragmentResultListener
çağrılmasının çalışmadığı sorun 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 taahhütleri içerir.
Hata Düzeltmeleri
- Parçalar artık görüntü kayıt defteri kayıtlı durumu kapsamında
ViewModel
durumunu yanlış şekilde kaydetmeyecek. (I10d2b, b/253546214)
Sürüm 1.5.4
24 Ekim 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
ve androidx.fragment:fragment-testing:1.5.4
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 taahhütleri 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çacıklar artık birden fazla
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
veyaonConfigurationChanged()
geri çağırma 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 taahhütleri 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
yayınlandı. 1.5.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
DialogFragmentCallbacksDetector
'te, AGP 7.4 ile birlikte sunulan lint sürümünün kullanılmasının lint'in kilitlenmesine neden olduğu gerileme düzeltildi. (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)
1.5.0 sürümü
29 Haziran 2022
androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
ve androidx.fragment:fragment-testing:1.5.0
yayınlandı. 1.5.0 sürümü bu taahhütleri içerir.
1.4.0'dan sonraki önemli değişiklikler
- CreationExtras Entegrasyonu:
Fragment
artık Lifecycle2.5.0
'inCreationExtras
aracılığıyla durum bilgisi olmayan 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 yardımcı olmak için yapılan bir çalışmadı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 özel üçüncü taraf parçalarının sınıf adıylaallowViolation()
kullanarak belirli ihlal cezalarını atlama olanağı sunuyor.- 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ü bilincine sahip 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 Durumu Yeniden Düzenleme
- Her bir parçayla ilişkili durum artık
FragmentManager
'ün dahili durumundan ayrı olarak kaydedilir. Böylece, 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 Durumu Yeniden Düzenleme
FragmentManager
artık kayıtlı örnek durumunu doğrudan özel birParcelable
yerineBundle
içine 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
yayınlandı. 1.5.0-alpha05 sürümü bu taahhütleri 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 taahhütleri 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 taahhütleri 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
artıkonCreateDialog()
tarafından döndürülen varsayılan iletişim kutusu olarakComponentDialog
'i 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
yayınlandı. 1.5.0-alpha02 sürümü bu taahhütleri 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
yayınlandı. 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
Kırıntısından: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
, xml'den oluşturulan görüntüleme kimlikleri negatif değerlere sahip olduğunda artık yasa dışı durum istisnası atmıyor. (Ic185b, b/213086140)by viewModels()
ertelenen işleviyle özel birownerProducer
lambda kullanıldığında, özel birViewModelProvider.Factory
sağlanmazsa artık her zaman parçanın fabrikasını kullanmak yerine söz konusu sahiptendefaultViewModelProviderFactory
kullanılı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 bağımlı 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 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 geçerlidir ve kendi benzersiz politikalarını ayarlamayan tüm alt parça yöneticileri için de geçerlidir. Bölümler için StrictMode başlıklı makaleyi inceleyin.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ç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.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 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)
, 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 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()
, popBackStack()
'e benzer şekilde 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 null 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 null 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 bir parçanın Görüntüleme durumunun depolandığı, her bir parçanın
onSaveInstanceState()
çağrıldığı ve bu durumun geri yüklenmesinin yanı sıra bu parçalarla ilişkili tümViewModel
örneklerin tutulduğu (veonCleared()
'nin bunlarda çağrılmadığı) 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 yetmelidir (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()
'i çağırdığı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()
ile ilgili desteğin sonlandırılması 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ç durumlarla başa çıkabilecek ş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
, önemli bir değişiklik olmadan yayınlanır. 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 taahhütleri 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
'ün, daha öncesaveBackStack()
aracılığıyla kaydedilen durumun kopyasını, bu durum geri yüklendikten sonra bile tutması sorunu 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 bir ş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
yayınlandı. 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ı.FragmentActivity
dışındaki parçaları barındırmak içinFragmentController
kullanıyorsanızFragmentHostCallbacks
'nizinSavedStateRegistryOwner
'ı uygulaması 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
yayınlandı. 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ının görünür ipucunun ne olarak ayarlandığını içeren daha ayrıntılı bir hata mesajına sahiptir. (Ib2d5f)
Davranış Değişiklikleri
FragmentContainerView
üzerindefitsSystemWindows
çağrısı yapma kısıtlaması 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,FragmentManager
aracılığıyla günlük kaydı 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ı katı moddanViolation
muaf tutmayı destekliyor. Bu sayede, 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 tam olarak ne olduğunu doğrulayabilirsiniz (If5118, b/187871150). HerViolation
aşağıdakileri içerir:WrongFragmentContainerViolation
artıkFragment
'nin eklenmeye çalışıldığıViewGroup
'yi 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'u 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ü için 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
yayınlandı. 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,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ı etkili bir şekilde "değiştirebilirsiniz".
saveBackStack()
, popBackStack()
'e benzer şekilde 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 null 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 null 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 bir parçanın Görüntüleme durumunun depolandığı, her bir parçanın
onSaveInstanceState()
çağrıldığı ve bu durumun geri yüklenmesinin yanı sıra bu parçalarla ilişkili tümViewModel
örneklerin tutulduğu (veonCleared()
'nin bunlarda çağrılmadığı) 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 yetmelidir (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()
'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 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 eden FragmentStrictMode.Policy
, yeni setStrictModePolicy()
yöntemi aracılığıyla bir FragmentManager
üzerinde ayarlanabilir. Bu politika, söz konusu FragmentManager
için geçerlidir ve kendi benzersiz politikalarını ayarlamayan tüm alt parça yöneticileri için de 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()
, desteği sonlandırılmışsetRetainInstance()
veyagetRetainInstance()
API'lerini kullandığınızda bunu 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ılansetTargetFragment()
,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 denetimi artık birDialogFragment
nesnesininonCreateDialog()
yöntemindesetOnCancelListener
veyasetOnDismissListener
çağrılırken uyarı veriyor. Bu dinleyicilerin sahibiDialogFragment
'dir ve bu geri çağırma çağrılarını almak içinonCancel()
veonDismiss()
'yi 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 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 öğenizi 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
'ninCloseable
'i uygulamasını sağladığınız için teşekkürler simonschiller. (#121, b/143774122)- Bu sürüm için
FragmentStrictMode
API'nin tamamını eklediği için simonschiller'a 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
yayınlandı. 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ümde
transitionGroup=”true”
ayarlandığında,hide()
kullanılırken Fragment'in görünümü artıkGONE
olarak doğru şekilde ayarlanır. (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
- Parça
1.3.6
: Parçalar artık Etkinlik1.2.4
'e (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
yayınlandı. 1.3.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- aosp/1679887 tarafından
1.3.4
Fragmanı'nda paylaşılan öğe geçişlerinde ortaya çıkan 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)
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ılırken artık ek gönderilmeyecek. Bu sayedeBottomNavigationBar
veFloatingActionButton
örneklerindeki sorunlar düzeltilecek. (I1bb78, b/186012452) - Artık işlem sona erdikten sonra Parcelable'ınızı parça sonucu 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 taahhütleri 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
Fragmanı'nda,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
için yeni birWindowInsets
grubu göndererek her bir parçanın artık bağımsız olarak içe aktarmaları kullanabilmesini sağlar. (I63f68, b/172153900)DialogFragment
artık özelDialog
sınıfınızdaki bir kapsayıcıyla aynı kimliğe sahip bir kapsayıcıya alt fragman eklendiğinde ortaya çıkan durumları düzgün şekilde ele alıyor. Böylece,BottomSheetDialog
gibi iletişim kutuları tarafından dahili olarak kullanılan kimlikler yeniden kullanıldığında ortaya çıkan görüntü 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 durumu yöneticisi artık gizleme işlemleriyle çıkış geçişlerini düzgün şekilde yönetiyor. (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
yayınlandı. 1.3.2 sürümü bu taahhütleri 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
- Fragment artık Activity 1.2.2'ye bağlıdır. Bu sayede, Fragment 1.3.1 veya sonraki sürümler kullanılırken Activity'nin
InvalidFragmentVersionForActivityResult
lint kontrolüyle ilgili bir sorun düzeltildi. - Fragment artık Lifecycle 2.3.1'e bağlıdır.
1.3.1 sürümü
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ı. 1.3.1 sürümü bu taahhütleri 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 mevcut bir
RESUMED
etkinliğine şişirilen parçalar, yapılandırma değişikliğinden sonra artık düzgün şekilde gösteriliyor. (Ie14c8, b/180538371) - Parçanın sonunda artık fazladan bir
}
yoktoString()
(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ın parametre dokümanları, artık boş değerleri kabul etmediklerini yansıtacak şekilde güncellendi (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- Fragment'ler artık gösterme/gizleme işlemlerini 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
'e (I452ac, (I9fa49)
Bağımlılık Güncellemeleri
- 1.3.1 numaralı parça,
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 gönderilmesiyle ve ertelenen parçaların nasıl ele alındığıyla ilgili birçok sorunu düzeltti. Activity Result API Entegrasyonu: Activity
1.2.0
'te 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.- Bu sürümde, Activity Result API'nin
FragmentActivity
'ün önceki sürümlerinde çalışmasını engelleyen geçersiz istek kodları ve izin isteklerinin gönderilmesiyle ilgili çeşitli sorunlar düzeltilmiştir. Activity Result API'leriFragmentActivity
veyaAppCompatActivity
'te kullanmak için Fragment 1.3.0'a yükseltmeniz gerekir.
- Bu sürümde, Activity Result API'nin
Fragment Result API:
FragmentManager
'deki yeni API'ler aracılığıyla iki Fragment arasında sonuç aktarma desteği eklendi. Bu yöntem, hiyerarşi parçaları (üst/alt), 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. Bölünmüş Sonuç API'sini 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ştirmeleri:fragment-testing
yapısını içerenFragmentScenario
sınıfı Kotlin'de yeniden yazıldı ve çeşitli iyileştirmeler aldı: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 herLifecycle.State
'a ilk kez geçmeden önce parçanın durumunu doğrulamak için ilk birLifecycle.State
ayarlama özelliğini 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ünüm yaşam döngüsüne bağlı birSavedStateRegistryOwner
veLifecycleOwner
döndürür.TRANSIT_
animasyon değişiklikleri:TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
veTRANSIT_FRAGMENT_FADE
adlı varsayılan parça efektleri artıkAnimation
yerineAnimator
kullanmaktadır. 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 kaldırılmasının 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 geçiş 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
yayınlandı. 1.3.0-rc02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yapılandırma değişikliğinden sonra
DialogFragment
üst öğesininDialogFragment
alt öğesinin üzerinde görünmesi sorunu düzeltildi. Alt iletişim kutusu parçaları artık her zaman üst iletişim kutusu parçasının üzerinde görünür. (I30806, b/177439520) Animation
ilehide
işlemi yapmanın, animasyon sonunda gizlenen parçanın yanıp sönmesine neden olduğu 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 Durum Yöneticisi Hata Düzeltmeleri
Animation
içeren bir parçayıFragmentContainerView
'a ekleyip ardından bu eklemeyi bir pop işlemiyle kesintiye uğratırken ortaya çıkan sızıntı ve görsel kusur 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)- Artık devam ettirildiğinde odak, Fragment kök görünümlerine düzgün şekilde geri yüklenmektedir. (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
yayınlandı. 1.3.0-beta02 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentScenario
, Kotlin 1.4'ünFragmentAction
için işlevsel arayüzlerinin kullanılmasıyla kaynak ve ikili uyumluluğu korurken tamamen Kotlin'e dönüştürülmüştür. (I19d31)
Davranış Değişiklikleri
class
veyaandroid:name
özelliğini kullanarak bir fragmanı şişirmeyen FragmentContainerViews artıkFragmentActivity
dışında kullanılabilir. (Id4397, b/172266337)- Bir parçanın maksimum yaşam döngüsünü
DESTROYED
olarak ayarlamaya çalışmak artık birIllegalArgumentException
(Ie7651, b/170765622) hatası oluşturuyor - FragmentScenario nesnesi
DESTROYED
durumuyla başlatılırken artıkIllegalArgumentException
hatası veriliyor (I73590, b/170765622)
Yeni Durum 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 çevrilmiş çıkış parçaları artık doğru şekilde iptal edilir ve doğru giriş efektiyle yeniden başlatılır. (I62226, b/167092035)
hide()
için exitAnimator
komutunun çalışmamasına neden olan sorun düzeltildi. (Id7ffe)- Parçalar artık ertelendikten sonra hemen başlatıldığında düzgün şekilde gösteriliyor. (Ie713b, b/170022857)
- 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ür ederiz Sinan 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ı. 1.3.0-beta01 sürümü bu taahhütleri 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
- androidx'i Kotlin 1.4'ü kullanacak şekilde yükseltme (Id6471, b/165307851, b/165300826)
Davranış Değişiklikleri
- Parça kaynak dosyaları doğru şekilde gizli hale getirildi. (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 null olmayan bir
FragmentManager
değerine sahip olacak ve null olmayanFragmentManager
değerine sahip parçalar her zaman etkin olarak 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ına başlamadan hemen önce görüntüleme odak durumunu düzgün şekilde geri yükler. (Icc256)
- Yalnızca paylaşılan öğe geçişi olan parçalar artık özel efektlerini düzgün şekilde tamamlıyor. Yani nihai durumlarına geçiyorlar (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)
- Yeni durum yöneticisi, artık bir parça görünümünün görünürlüğünde yapılan açık değişikliklere uyuyor. 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
Animators
'eAnimations
'ten öncelik veriyor. Yani her ikisini de içeren bir parça yalnızcaAnimator
'yi çalıştırır veAnimation
'ı yoksayar. (b/167579557) - Yeni durum yöneticisi, artık giriş animasyonları kullanılırken parçaların yanıp sönmesine neden olmaz. (b/163084315)
Bilinen Sorun
Yeni durum yöneticisini kullanırken, özel efektin girişi sırasında önceki parçaya dönmek yerine geri tuşuna basarsanız eski parça hiçbir zaman yeniden eklenmez ve ekran boş görünür. (b/167259187, b/167092035, b/168442830)
Sürüm 1.3.0-alpha08
19 Ağustos 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
ve androidx.fragment:fragment-testing:1.3.0-alpha08
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 ertelendiğinde ara parçaların geçici olarak görünür olmasına neden olmayacak. (b/37140383)
FragmentManager
artıkonAttachFragment()
geri çağırma işlevi içindenfindFragmentById()
veyafindFragmentByTag()
çağrılırken doğru parçaları döndürüyor. (b/153082833)- Parçalar artık, yerlerine geçen parça ertelendiğinde yok edilen parçalarda
onCreateView()
çağrısı yapmıyor. (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 fragmanın
onCreate()
yaşam döngüsü yöntemindeActivityResultLauncher
ü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ç vermeden ziyade bunun 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
artık parçayı her zamanRESUMED
durumuna taşımak yerineCREATED
,STARTED
veyaRESUMED
olarak bir başlangıç yaşam döngüsü durumu ayarlama özelliğini destekliyor. (b/159662750)onFragment
API'sininFragmentScenario
yerine, değer döndürmenize olanak tanıyan Kotlin gerçekleştirilmiş uzantı yöntemiwithFragment
şeklinde 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
yayınlandı. 1.3.0-alpha06 sürümü bu taahhütleri içerir.
Yeni Özellikler
FragmentActivity
veFragment
'dekionAttachFragment()
geri çağırma işlevinin desteği sonlandırıldı. Daha esnek bir alternatif sunmak için yeni birFragmentOnAttachListener
eklendi. Bu,onAttachFragment()
'un ayrı, test edilebilir dinleyicilere devredilmesine olanak tanır ve doğrudan alt FragmentManager'ınız dışındaki FragmentManager'lara dinleyici ekleme desteği sağlar. (I06d3d)
Hata Düzeltmeleri
- Ebeveyn parçalarının görüntüleme durumu artık alt parçalarından önce geri yüklenir. Bu sayede, bir
DialogFragment
alt parça olarak başka birDialogFragment
gösterdiğinde yapılandırmanın değiştirilmesinden sonra ortaya çıkan görsel sıralama sorunu düzeltilir. (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. Daha önce ayarlanmış bir sonucu veya dinleyiciyi 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
'daki daha önce desteği sonlandırılmışstartActivityForResult()
,startIntentSenderForResult()
verequestPermissions
artık dahili olarakActivityResultRegistry
'i kullanıyor. Bu sayede, bu API'leri kullanırken istek kodlarınız için yalnızca alt bitleri (0xFFFF
'in altında) kullanma kısıtlaması kaldırıldı. (b/155518741)
Belge Güncellemeleri
- Varsayılan
FragmentFactory
kullanılırkenFragment(@LayoutRes int)
veDialogFragment(@LayoutRes int)
kurucularının alt sınıflarınızın bağımsız değişken içermeyen kurucusundan çağrılması gerektiğini açıklığa kavuşturmak için bu kurucularla ilgili dokümanları genişlettik. (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
'te yeni API'ler aracılığıyla iki Fragment arasında sonuç aktarma desteği eklendi. Bu yöntem, hiyerarşi parçaları (üst/alt), 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. (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) 1.2.0-alpha04
Etkinliği'ndeki ö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ısı yapı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
yayınlandı. 1.3.0-alpha03 sürümü bu taahhütleri 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 taahhütleri 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()
'nin varsayılan olarak şişmesi gereken düzeni belirten bir@LayoutRes
alan bir kurucu sağlar. (b/150327080)onActivityCreated()
yöntemi artık 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 kodu iseonCreate()
içinde olmalıdır. Özellikle etkinliğinonCreate()
tamamlandığında geri arama almak içinonAttach()
'teki etkinliğinLifecycle
alanına birLifeCycleObserver
kaydedilmeli veonCreate()
geri araması alındıktan sonra 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
Fragmanı: 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 ş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
yayınlandı. 1.3.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Yaşam döngüsü
2.3.0-alpha01
'de eklenenViewTreeLifecycleOwner.get(View)
API'si için destek eklendi. Bu API,onCreateView()
tarafından döndürülen tüm Görünümler içinLifecycleOwner
olarak Fragment'inviewLifecycleOwner
değerini döndürür. (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 kaldırılmasının 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. (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 geçiş 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 saklıyor. Bu sayede, Parça1.2.1
'de ortaya çıkan bir gerileme düzeltildi. (b/149665169 1.2.2
Fragmanı'na eklenenrequire___()
Lint kuralları, artık gölgelenen Kotlin özellik adlarıyla aynı adı paylaşan yerel değişkenlerde yanlış pozitif sonuç vermiyor (ö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 taahhütleri 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ısı yapı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
Fragmanı'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 karartılmasına izin verecek ş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 mülk adını gölgeleyen yerel bir değişken adı kullanıldığında
UseRequireInsteadOfGet
Lint kontrolünde 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
yayınlandı. 1.2.2 sürümü bu taahhütleri içerir.
Yeni hata analizi kontrolleri
- Lint,
onCreateView()
,onViewCreated()
veonActivityCreated()
'teOnBackPressedDispatcher
'ye yapılan aramalar 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 kontrollerini katkıda bulunan Zac Sweers'e teşekkürler. (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ı. 1.2.1 sürümü bu taahhütleri 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()
etiketinin,<fragment>
etiketi aracılığıyla eklenen parçalarla çalışmaması sorunu 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)- Etkinlik zaten yok edildiğinde
FragmentManager
örneğindetoString()
çağrısı artıkNullPointerException
hatası atmaz. (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
etiketlerini 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
'a 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()
'yi 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()
değerine uyuyor. Bu sayede 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 Fragment'ler artık taslak halinde oluşturulmak yerine, hiçbir yaşam döngüsü yönteminde hareket etmeden düzeninizde olmasa bileCREATED
alanına 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
yayınlandı. 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ı. 1.2.0-rc01 sürümü bu taahhütleri 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()
'tenLiveData
'u gözlemlerkengetViewLifecycleOwner()
'ü kullandığınızdan emin olmanızı sağlayan yeni bir hata kontrolü eklendi. (b/137122478)
Hata düzeltmeleri
DialogFragment
üzerindekionDismiss
veonCancel
geri çağırma işlevleri artık kendilerine iletilenDialogInterface
değerinin null olmadığını ve çalıştırıldıklarındagetDialog()
değerinin null olmadığını garanti eder. (b/141974033)FragmentContainerView
artık şişirme kapsamındaclass
veyaandroid:name
tarafından tanımlanan Fragment'i ekleyerekfindFragmentById()
vefindFragmentByTag()
'in hemen ardından çalışmasını sağlar. (b/142520327)- Durum kaydedildiği için
FragmentContainerView
içindeki birIllegalStateException
düzeltildi. (b/142580713) FragmentContainerView
sınıfı karartıldığındaFragmentContainerView
içinde birUnsupportedOperationException
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ı. 1.2.0-beta02 sürümü bu taahhütleri 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üntü Bağlama kullanılabilir. (b/139830628, b/141177981)- Parçalar artık
<fragment>
yerineFragmentContainerView
kullanmaya yönelik hızlı bir 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()
göndermeden önceandroidx.transition
geçişlerinin (sırasıyla Parça1.2.0-alpha03
ve Parça1.2.0-alpha02
'ta 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 ile 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 artık parçalar düzgün ş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ı bekliyor. (b/138741697)
Sürüm 1.2.0-alpha02
7 Ağustos 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
ve androidx.fragment:fragment-testing:11.2.0-alpha02
yayınlandı. Bu sürüme dahil edilen 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
cihazlardasetTransition
ile birlikteTRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
kullanırken varsayılan animasyonlar, Android 10 cihazlardaki etkinlikler tarafından kullanılan animasyonlarla eşleşecek şekilde güncellendi. (aosp/1012812, aosp/1014730)
API değişiklikleri
- Animasyon z sıralama sorunlarını ve parçalara gönderilen pencere içe eklemelerini düzelttiği için dinamik olarak eklenen parçalar 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şirilen 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 Fragment örneğini oluşturmak içinFragmentFactory
öğenizi kullanır.fragment-ktx
'a, gerçekleştirilmiş türleri (ör.fragmentTransaction.replace<YourFragment>(R.id.container)
) kullanan Kotlin uzantısı da eklendi. (b/126124987)Fragment
yaşam döngüsü geri çağırmalarına@MainThread
ek açıklamaları eklendi. (b/127272564)FragmentTransaction
veFragmentManager.BackStackEntry
'teki içerik haritası başlığıyla ilgili API'lerin desteği sonlandırıldı. (b/138252944)FragmentTransaction
'dakisetTransitionStyle
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ının iptal edilmemesi sorunu 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()
göndermeden önce animasyonların tamamlanmasını bekler. (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
için bir geçici çözüm eklendi. (b/137201343)
Sürüm 1.2.0-alpha01
2 Temmuz 2019
androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
ve androidx.fragment:fragment-testing:1.2.0-alpha01
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
FragmentManager
üzerinde birFragmentFactory
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çmenize olanak tanıyan yeni bir oluşturucuya sahiptir. - 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ılma yerine 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. - Aşırı yüklemeyi zaman aşımıyla 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üme dahil edilen taahhütleri burada bulabilirsiniz.
Hata düzeltmeleri
- Zaman aşımı ile
postponeEnterTransition()
çağrısının birden fazla kez çağrılmasının önceki zaman aşımlarını iptal etmemesi sorunu 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
yayınlandı. 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()
'dan öncesetPrimaryNavigationFragment()
kullanan birFragmentTransaction
'ı 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ş Fragment'ler için
androidx.lifecycle.Lifecycle
geri çağırma işlevleri (özellikleSTARTED
,RESUMED
,PAUSED
,STOPPED
veDESTROYED
ile ilgili) artık düzgün şekilde iç içe yerleştiriliyor. (b/133497591) - Bir Fragment'in
onCreate()
özelliğine kaydedilenOnBackPressedCallback
örnekleri artık alt FragmentManager'a göre uygun şekilde önceliklidir. (b/133175997) - Üst parçaları değiştirilirken alt parçalar artık 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
yayınlandı. 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'in bu sürümünü kullanırken lütfen Tercihler 1.1.0-alpha05 sürümüne yükseltin.
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
'dakiRESUME_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
- Yaşam döngüsü
setMaxLifecycle()
aracılığıyla sınırlandırılmış olan parçalar artık son durumlarına ulaşmadan devam ettirilmez. b/131557151 setMaxLifecycle(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üme dahil edilen taahhütleri burada bulabilirsiniz.
Yeni özellikler
- Artık
FragmentTransaction
üzerindesetMaxLifecycle()
çağrısı yaparak bir Fragment 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ç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ılır.
Hata düzeltmeleri
- XML'de
<fragment>
etiketi veFragmentActivity
veyaAppCompatActivity
içincontentLayoutId
kurucusu kullanıldığında ortaya çıkan bir 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 tutulan parçaların senkronizasyonunun kaldırılmasından kaynaklanan
restoreSaveState
kilitlenme sorunu 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
'ü 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 Bundle bağımsız değişkeni alan
instantiate
yöntemi kullanımdan kaldırıldı. Uygulamalar, Bundle bağımsız değişkeni 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'nin
getThemedContext()
özelliği kaldırıldı. (aosp/934078)
Hata düzeltmeleri
- 1.1.0-alpha05 sürümünde, gelen Fragment'in ekranda yanıp sönmesine neden olan bir gerileme düzeltildi. (b/129405432)
- popBackStack+replace+popBackStack işlem dizisi sonrasında birincil gezinme fragmanının kaybolmasına neden olan sorun düzeltildi. (b/124332597)
- Fragment durumunu geri yüklerken Etkinliğinizde
@ContentView
kurucuları kullanırken yaşanan 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 tam 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
'ninonDismiss()
işlevinin 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çıklamalar,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 tarafından 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 getirileceğiyle ilgili 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()
parametresinin geçersiz kılınmaması ve gelecekteki bir sürümde nihai hale getirileceğiyle ilgili bir 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 uyumlulukla ilgili bir 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, önemli 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 Fragment oluşturmak için
FragmentFactory
örneğini iletmek yerine 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ırken 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, androidx.test:core API'lerinin üzerine inşa edilen fragment-testing
yapı ve FragmentScenario
'ın ilk sürümüdür. Daha fazla bilgi 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 boşluk kabul edilebilirlik 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.