Fragmen
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 13 Agustus 2025 | 1.8.9 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Fragment, Anda harus menambahkan repositori Google Maven ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.8
Versi 1.8.9
13 Agustus 2025
androidx.fragment:fragment-*:1.8.9 dirilis. Versi 1.8.9 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat membatalkan gestur kembali prediktif yang memunculkan operasi penyembunyian akan menyebabkan gestur berikutnya tidak dianimasikan dengan benar saat menggunakan animator. (I0a400, b/384765586)
- Memperbaiki error saat kombinasi
setMaxLifecycledanpopBackStackdapat gagal memindahkan fragmen teratas ke RESUMED. (I3448b, b/406127576)
Versi 1.8.8
4 Juni 2025
androidx.fragment:fragment-*:1.8.8 dirilis. Versi 1.8.8 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan
FragmentManagererror saat mencoba menyimpan status Fragmen yang ditambahkan dengansetMaxLifecycle(Lifecycle.State.INITIALIZED). Fragmen ini, karena tidak pernah melaluionCreate(), tidak lagi memiliki status yang disimpan atauonSaveInstanceState()yang dipanggil. (I6e37a)
Versi 1.8.7
20 Mei 2025
androidx.fragment:fragment-*:1.8.7 dirilis. Versi 1.8.7 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah
FragmentManageryang tidak dalam status yang tepat setelah operasi pop dan penggantian dalam frame yang sama yang dapat menyebabkan error bersamaan dengan memunculkan kembali backstack melaluipopBackStackatau gestur kembali prediktif. (I50ad1) - Memperbaiki error yang disebabkan oleh penggunaan Transisi AndroidX dan masuk ke kasus ketika transaksi fragmen berurutan yang cepat mencoba membatalkan transisi yang belum dimulai dan library Transisi AndroidX tidak membersihkan status transisi dengan benar. (lihat b/414612221). (Ib5235)
Versi 1.8.6
12 Februari 2025
androidx.fragment:fragment-*:1.8.6 dirilis. Versi 1.8.6 berisi commit ini.
Perbaikan Bug
- Penggantian
setOnApplyWindowInsetsListenerFragmentContainerViewkini menggunakan pemroses null, yang sesuai dengan yang diizinkan framework. (I575f0, b/282790626)
Versi 1.8.5
30 Oktober 2024
androidx.fragment:fragment-*:1.8.5 dirilis. Versi 1.8.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki
IllegalStateExceptionyang dipicu olehsaveBackStackhanya setelah gestur Kembali Prediktif dibatalkan atau terganggu. (I3387d, b/342419080)
Versi 1.8.4
2 Oktober 2024
androidx.fragment:fragment-*:1.8.4 dirilis. Versi 1.8.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat menekan tombol kembali sistem dengan cepat atau melakukan kembali gestur dengan cepat akan menyebabkan error pada Fragment saat menggunakan Transisi Androidx. (Ibc038, b/364804225)
- Memperbaiki masalah pada fragmen saat mengganggu gestur kembali prediktif akan membuat pengelola fragmen berada dalam status yang tidak ditentukan dan bahkan menampilkan fragmen yang salah. (If82e2, b/338624457)
- Memperbaiki
UninitializedPropertyAccessExceptiondalamAndroidFragmentsaat mengganti Class yang digunakan instanceAndroidFragmentAnda secara dinamis. (I12dea)
Versi 1.8.3
4 September 2024
androidx.fragment:fragment-*:1.8.3 dirilis. Versi 1.8.3 berisi commit ini.
Perbaikan Bug
FragmentManagerkini memperhitungkan operasi yang tertunda dengan benar saat menangani gestur Kembali Prediktif. Hal ini akan memastikan bahwa melakukan kembali sistem tidak lagi menyebabkanIndexOutOfBoundsException. (I9ba32, b/342316801)AndroidFragmenttidak lagi mengalami error jika ditambahkan ke komposisi saat status aktivitas/fragmen penampungnya sudah disimpan. (I985e9, b/356643968)
Versi 1.8.2
24 Juli 2024
androidx.fragment:fragment-*:1.8.2 dirilis. Versi 1.8.2 berisi commit ini.
Perbaikan Bug
AndroidFragmentkini menangani kasus dengan benar saat fragmen induk ditempatkan di data sebelumnya Fragment, menghindari masalah 'No view found for id' saat kembali ke fragmen tersebut. (I94608)- Fragmen yang ditambahkan melalui metode
FragmentTransaction.addyang menggunakanViewGroupkini menungguonContainerAvailablesebelum melanjutkan keonStart(). Hal ini memengaruhi pengguna API tersebut, sepertiAndroidFragment, yang kini menungguAndroidFragmentmasuk kembali ke komposisi sebelum memindahkannya melaluionStart(). (I94608)
Versi 1.8.1
26 Juni 2024
androidx.fragment:fragment-*:1.8.1 dirilis. Versi 1.8.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat fragmen tanpa penampung langsung
DESTROYEDsaat memulai gestur kembali prediktif. Sekarang, tombol tersebut berada dalam statusCREATEDhingga setelah gestur selesai. (If6b83, b/345244539)
Versi 1.8.0
12 Juni 2024
androidx.fragment:fragment-*:1.8.0 dirilis. Versi 1.8.0 berisi commit ini.
Perubahan penting sejak versi 1.7.0
- Artefak
fragment-composesekarang berisiComposableAndroidFragmentyang memungkinkan penambahan fragmen ke hierarki Compose melalui nama class fragmen. Secara otomatis menangani penyimpanan dan pemulihan status Fragmen. Hal ini harus digunakan sebagai pengganti langsung untuk pendekatan yang direkomendasikan sebelumnya, yaitu menggunakanAndroidViewBindinguntuk mem-inflate Fragment. - Callback
onBackStackChangeCancelledpada antarmukaOnBackStackChangedListenerFragmentManagerkini diaktifkan sebagai bagian dari operasi yang dijalankan diFragmentManager, sehingga lebih selaras dengan waktu callbackonBackStackChangeCommitted.
Versi 1.8.0-rc01
29 Mei 2024
androidx.fragment:fragment-*:1.8.0-rc01 dirilis. Versi 1.8.0-rc01 berisi commit ini.
Perbaikan Bug
- Callback
onBackStackChangeCancelledpada antarmukaFragmentManagers OnBackStackChangedListenerkini diaktifkan sebagai bagian dari operasi yang dijalankan diFragmentManager, sehingga lebih selaras dengan waktu callbackonBackStackChangeCommitted. (I5ebfb, b/332916112)
Versi 1.8.0-beta01
14 Mei 2024
androidx.fragment:fragment-*:1.8.0-beta01 dirilis. Versi 1.8.0-beta01 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.7.1: Kembali prediktif kini hanya akan berjalan untuk transaksi yang semua fragmennya memiliki Animator atau Transisi Androidx yang Dapat Dicari. Perbaikan ini mengatasi masalah saat membatalkan transaksi yang dapat dicari sebagian akan menyebabkan layar hitam. (I43037, b/339169168)
Versi 1.8.0-alpha02
17 April 2024
androidx.fragment:fragment-*:1.8.0-alpha02 dirilis. Versi 1.8.0-alpha02 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.7.0-rc02: Menambahkan log untuk menunjukkan alasan mengapa menyetelsharedElementtanpa transisi lain akan gagal dijalankan. (Iec48e) - Dari Fragment
1.7.0-rc02: Memperbaiki bug yang menyebabkan error jika elemen bersama yang tidak dapat dicari ditambahkan ke transaksi yang semua transisi lainnya dapat dicari. Sekarang, transaksi akan dianggap tidak dapat dicari dengan benar. (I18ccd)
Versi 1.8.0-alpha01
3 April 2024
androidx.fragment:fragment-*:1.8.0-alpha01 dirilis. Versi 1.8.0-alpha01 berisi commit ini.
Fitur Baru
AndroidFragmentComposablebaru memungkinkan penambahan fragmen ke hierarki Compose melalui nama class fragmen. Secara otomatis menangani penyimpanan dan pemulihan status Fragmen. Hal ini dapat digunakan sebagai pengganti langsungComposableAndroidViewBinding.(b/312895363, Icf841)
Perubahan Dokumentasi
- Memperbarui dokumentasi untuk API
OnBackStackChangedListeneruntuk menunjukkan kapan API tersebut dipanggil dan cara penggunaannya. (I0bfd9)
Pembaruan dependensi
- Fragment sekarang bergantung pada Profile Installer 1.3.1.
Versi 1.7
Versi 1.7.1
14 Mei 2024
androidx.fragment:fragment-*:1.7.1 dirilis. Versi 1.7.1 berisi commit ini.
Perbaikan Bug
- Kembali prediktif kini hanya akan berjalan untuk transaksi yang semua fragmennya memiliki Animator atau Transisi Androidx yang Dapat Dicari. Perbaikan ini mengatasi masalah saat membatalkan transaksi yang dapat dicari sebagian akan menyebabkan layar kosong. (I43037, b/339169168)
Versi 1.7.0
1 Mei 2024
androidx.fragment:fragment-*:1.7.0 dirilis. Versi 1.7.0 berisi commit ini.
Dukungan Gestur Kembali Prediktif
- Fragmen kini memberikan dukungan untuk Kembali dalam aplikasi prediktif saat menggunakan
Animatoratau saat menggunakan AndroidX Transition 1.5.0. Hal ini memungkinkan pengguna menggunakan gestur kembali untuk melihat fragmen sebelumnya dengan mencari Animator/Transisi Anda sebelum memutuskan untuk melakukan commit transaksi dengan menyelesaikan gestur atau membatalkan.
| Sistem Transisi | Resource XML | Mendukung Kembali Prediktif |
|---|---|---|
Animation |
R.anim |
Tidak |
Animator |
R.animator |
Ya |
Framework Transition |
R.transition |
Tidak |
AndroidX Transition dengan Transition 1.4.1 atau yang lebih lama |
R.transition |
Tidak |
AndroidX Transition dengan Transition 1.5.0 |
R.transition |
Ya |
Jika Anda melihat masalah terkait dukungan Kembali Prediktif di Fragment setelah mengaktifkan gestur kembali prediktif, harap laporkan masalah terhadap Fragment dengan project contoh yang mereproduksi masalah Anda. Anda dapat menonaktifkan kembali prediktif menggunakan FragmentManager.enabledPredictiveBack(false) di onCreate() Aktivitas Anda.
FragmentManager.OnBackStackChangedListener() kini menyediakan onBackStackChangeProgressed() dan onBackStackChangeCancelled() untuk menerima progres kembali prediktif dan peristiwa yang dibatalkan.
Artefak Compose Fragmen
Artefak fragment-compose baru telah dibuat yang berfokus pada dukungan aplikasi yang sedang dalam proses berpindah dari arsitektur berbasis Fragment ke arsitektur berbasis Compose sepenuhnya.
Fitur pertama yang tersedia di artefak baru ini adalah metode ekstensi content pada Fragment yang berupaya mempermudah penggunaan Compose untuk UI setiap Fragment dengan membuat ComposeView untuk Anda dan menyetel ViewCompositionStrategy yang benar.
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)
}
}
Versi 1.7.0-rc02
17 April 2024
androidx.fragment:fragment-*:1.7.0-rc02 dirilis. Versi 1.7.0-rc02 berisi commit ini.
Perbaikan Bug
- Menambahkan log untuk menunjukkan alasan mengapa menyetel
sharedElementtanpa transisi lain akan gagal dijalankan. (Iec48e) - Memperbaiki bug yang menyebabkan error jika elemen bersama yang tidak dapat dicari ditambahkan ke transaksi saat semua transisi lainnya dapat dicari. Sekarang, transaksi akan dianggap tidak dapat dicari dengan benar. (I18ccd)
Versi 1.7.0-rc01
3 April 2024
androidx.fragment:fragment-*:1.7.0-rc01 dirilis. Versi 1.7.0-rc01 berisi commit ini.
Pembaruan dependensi
- Fragment sekarang bergantung pada Profile Installer 1.3.1.
Versi 1.7.0-beta01
20 Maret 2024
androidx.fragment:fragment-*:1.7.0-beta01 dirilis. Versi 1.7.0-beta01 berisi commit ini.
Perubahan API
FragmentHostCallbackkini ditulis dalam Kotlin sehingga nullability jenis generik Host cocok dengan nullability jenis yang ditampilkanonGetHost(). (I40af5)
Perbaikan Bug
- Memperbaiki masalah saat melakukan gestur Kembali Prediktif pada fragmen yang tidak ada di penampung, fragmen tersebut tidak akan pernah dihancurkan. Fragmen kini akan segera dipindahkan ke status akhir. (Ida0d9)
- Memperbaiki masalah di Fragmen saat mengganggu transisi masuk dengan gestur Kembali prediktif akan menghancurkan tampilan masuk, dan membuat layar kosong. (Id3f22, b/319531491)
Versi 1.7.0-alpha10
7 Februari 2024
androidx.fragment:fragment-*:1.7.0-alpha10 dirilis. Versi 1.7.0-alpha10 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah umum dalam rilis Fragmen sebelumnya saat menggunakan dukungan Kembali Prediktif Fragmen untuk
Animatoratau Transisi AndroidX, Fragmen akan memunculkanNullPointerExceptiondarihandleOnBackProgressedjika tidak adaFragmentManager.OnBackStackChangedListeneryang pernah ditambahkan melaluiaddOnBackStackChangedListener. (I7c835)
Versi 1.7.0-alpha09
24 Januari 2024
androidx.fragment:fragment-*:1.7.0-alpha09 dirilis. Versi 1.7.0-alpha09 berisi commit ini.
Artefak Compose Fragmen
Artefak fragment-compose baru telah dibuat yang berfokus pada dukungan aplikasi yang sedang dalam proses berpindah dari arsitektur berbasis Fragment ke arsitektur berbasis Compose sepenuhnya.
Fitur pertama yang tersedia di artefak baru ini adalah metode ekstensi content pada Fragment yang berupaya mempermudah penggunaan Compose untuk UI setiap Fragment dengan membuat ComposeView untuk Anda dan menyetel ViewCompositionStrategy yang benar. (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)
}
}
Fitur Baru
FragmentManager.OnBackStackChangedListener()kini menyediakanonBackStackChangeProgressed()danonBackStackChangeCancelled()untuk menerima progres kembali prediktif dan peristiwa yang dibatalkan. (214b87)
Masalah Umum
- Saat menggunakan dukungan Kembali Prediktif Fragment untuk
Animatoratau Transisi AndroidX, Fragment akan menampilkanNullPointerExceptiondarihandleOnBackProgressedjikaFragmentManager.OnBackStackChangedListenerbelum pernah ditambahkan melaluiaddOnBackStackChangedListener. Menambahkan pemroses secara manual akan mengatasi error. Perbaikan untuk masalah ini akan tersedia di rilis Fragment berikutnya.
Versi 1.7.0-alpha08
10 Januari 2024
androidx.fragment:fragment-*:1.7.0-alpha08 dirilis. Versi 1.7.0-alpha08 berisi commit ini.
Pembersihan
- Menghapus solusi untuk library Transisi yang telah diperbaiki di Transisi
1.5.0-alpha06. (I04356)
Versi 1.7.0-alpha07
29 November 2023
androidx.fragment:fragment-*:1.7.0-alpha07 dirilis. Versi 1.7.0-alpha07 berisi commit ini.
Perbaikan Bug
- Memperbaiki
NullPointerExceptionyang disebabkan oleh penyetelan transisi elemen bersama dan kegagalan menyetel enter/exitTransition juga. (I8472b) - Dari Fragment
1.6.2: Saat FragmentFragmentContainerViewdi-inflate, statusnya sepertiFragmentManager, Host, dan ID kini dapat diakses di callbackonInflate. (I1e44c, b/307427423) - Dari Fragment
1.6.2: Saat menggunakanclearBackStackuntuk menghapus sekumpulan fragmen,ViewModelFragment bertingkat kini akan dihapus saatViewModelsfragmen induk dihapus. (I6d83c, b/296173018)
Versi 1.7.0-alpha06
4 Oktober 2023
androidx.fragment:fragment-*:1.7.0-alpha06 dirilis. Versi 1.7.0-alpha06 berisi commit ini.
Pembaruan Dependensi
- Fragment telah diupdate untuk bergantung pada
animateToStartAPI baru yang ditambahkan di Transition1.5.0-alpha04.
Versi 1.7.0-alpha05
20 September 2023
androidx.fragment:fragment-*:1.7.0-alpha05 dirilis. Versi 1.7.0-alpha05 berisi commit ini.
Fitur Baru
- Fragmen kini memberikan dukungan untuk Kembali Prediktif saat menggunakan Transisi AndroidX. Hal ini memungkinkan Anda menggunakan gestur kembali untuk mencari fragmen sebelumnya dengan Transisi Androidx kustom sebelum memutuskan untuk melakukan atau membatalkan transaksi melalui gestur yang telah selesai. Anda harus mengandalkan rilis Transisi
1.5.0-alpha03untuk mengaktifkan fitur ini. (Ib49b4, b/285175724)
Masalah Umum
- Saat ini ada masalah yang menyebabkan setelah Anda membatalkan gestur kembali dengan transisi satu kali, saat Anda memulai gestur kembali berikutnya, transisi akan gagal dijalankan, sehingga menyebabkan layar kosong. Hal ini dapat disebabkan oleh masalah di library Transisi. (b/300157785). Jika Anda melihat masalah ini, laporkan masalah terhadap Fragment dengan project contoh yang mereproduksi masalah Anda. Anda dapat menonaktifkan kembali prediktif menggunakan
FragmentManager.enabledPredictiveBack(false)dionCreate()Aktivitas Anda.
Versi 1.7.0-alpha04
6 September 2023
androidx.fragment:fragment-*:1.7.0-alpha04 dirilis. Versi 1.7.0-alpha04 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat membatalkan gestur kembali prediktif yang menyebabkan fragmen gagal mencapai status Siklus Proses yang benar. (I7cffe, b/297379023)
- Memperbaiki regresi saat Animasi diizinkan berjalan dengan Transisi. (I59f36)
- Memperbaiki masalah saat menggunakan Kembali Prediktif dengan fragmen yang mencoba kembali dua kali secara berurutan dengan cepat pada fragmen kedua hingga terakhir di back stack akan menyebabkan error. (Ifa1a4)
Versi 1.7.0-alpha03
23 Agustus 2023
androidx.fragment:fragment-*:1.7.0-alpha03 dirilis. Versi 1.7.0-alpha03 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah pada Fragmen saat menggunakan kembali prediktif yang menyebabkan fragmen pertama dalam tumpukan kembali pengelola fragmen dilewati dan Aktivitas selesai saat menggunakan kembali sistem melalui navigasi 3 tombol atau gestur kembali prediktif. (I0664b, b/295231788)
Versi 1.7.0-alpha02
9 Agustus 2023
androidx.fragment:fragment-*:1.7.0-alpha02 dirilis. Versi 1.7.0-alpha02 berisi commit ini.
Perbaikan Bug
- Saat menggunakan Fragment dengan Gestur Kembali Prediktif dari API 34, jika Anda menggunakan sistem transisi yang tidak mendukung pencarian (
Animations,Transitions) atau tidak ada transisi sama sekali, Fragment kini akan menunggu hingga gestur selesai sebelum mengeksekusi tindakan kembali. (I8100c)
Versi 1.7.0-alpha01
7 Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01 dirilis. Versi ini dikembangkan di cabang internal.
Fitur Baru
- Fragment kini memberikan dukungan untuk Kembali dalam aplikasi prediktif saat menggunakan
Animator. Hal ini memungkinkan Anda menggunakan gestur kembali untuk melihat fragmen sebelumnya dengan Animator kustom sebelum memutuskan untuk melakukan transaksi melalui gestur yang telah selesai atau membatalkan. Anda juga dapat menonaktifkan perilaku baru ini dengan menggunakanenablePredictiveBack()eksperimental dan meneruskanfalse.
Versi 1.6
Versi 1.6.2
1 November 2023
androidx.fragment:fragment-*:1.6.2 dirilis. Versi 1.6.2 berisi commit ini.
Perbaikan Bug
- Saat Fragment
FragmentContainerViewdi-inflate, statusnya sepertiFragmentManager, Host, dan ID kini dapat diakses di callbackonInflate. (I1e44c, b/307427423) - Saat menggunakan
clearBackStackuntuk menghapus sekumpulan fragmen,ViewModelFragment bertingkat kini akan dihapus saatViewModelsfragmen induk dihapus. (I6d83c, b/296173018)
Versi 1.6.1
26 Juli 2023
androidx.fragment:fragment-*:1.6.1 dirilis. Versi 1.6.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat status tersimpan yang disimpan saat aktivitas dihentikan, tetapi tidak dihancurkan, akan di-cache secara salah meskipun setelah instance fragmen dipindahkan kembali ke status
RESUMED. Hal ini akan menyebabkan status yang di-cache tersebut digunakan kembali jika instance fragmen tersebut ada di data sebelumnya saat menggunakan beberapa API data sebelumnya untuk menyimpan dan memulihkan fragmen tersebut. (I71288, b/246289075)
Pembaruan Dependensi
- Fragment sekarang bergantung pada Activity 1.7.2. Perbaikan ini mengatasi masalah saat pengguna Kotlin tidak dapat memperluas
ComponentDialogtanpa dependensi eksplisit pada Activity. (b/287509323)
Versi 1.6.0
7 Juni 2023
androidx.fragment:fragment-*:1.6.0 dirilis. Versi 1.6.0 berisi commit ini.
Perubahan penting sejak versi 1.5.0
- Status tersimpan
Fragmenttelah dibagi sepenuhnya antara status library pribadi (classParcelablekhusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalamBundleyang memungkinkan penentuan tempat asal fragmen dengan tepat. - Antarmuka
FragmentManager.OnBackStackChangedListenertelah diperluas dengan dua callback tambahan, yaituonBackStackChangeStarteddanonBackStackChangeCommitted, yang dipanggil dengan setiapFragmenttepat sebelum ditambahkan/dihapus dari data sebelumnya fragmen dan tepat setelah transaksi dilakukan. FragmentStrictModemenambahkanWrongNestedHierarchyViolationbaru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan kechildFragmentManagerinduk.FragmentAPI danFragmentManagerAPI yang menggunakanIntentatauIntentSendersekarang dianotasi dengan benar menggunakan@NonNulluntuk mencegah penerusan nilai null karena nilai null akan selalu menyebabkan error pada masing-masing API framework Android yang dipanggil metode ini.DialogFragmentkini menyediakan akses keComponentDialogyang mendasarinya melaluirequireComponentDialog()API.- Fragment sekarang bergantung pada Lifecycle
2.6.1. - Fragment kini bergantung pada SavedState
1.2.1. - Fragment kini bergantung pada ProfileInstaller
1.3.0. Artefak
fragment-testing-manifestmemisahkan entri manifes dari komponen pengujian fragmen lainnya. Ini berarti Anda dapat melakukan hal berikut:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")Menghindari konflik karena perbedaan versi antara
fragment-testingdanandroidx.test
Versi 1.6.0-rc01
10 Mei 2023
androidx.fragment:fragment-*:1.6.0-rc01 dirilis. Versi 1.6.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan
ActivityResultdikirim dengan kode permintaan yang salah saat beberapa permintaanstartActivityForResulttelah dibuat secara berurutan. (If0b9d, b/249519359) - Memperbaiki masalah saat callback
onBackStackChangeListenerdikirim untuk transaksi yang sebenarnya tidak mengubah data sebelumnya jika digabungkan dengan transaksi yang melakukannya. (I0eb5c, b/279306628)
Versi 1.6.0-beta01
19 April 2023
androidx.fragment:fragment-*:1.6.0-beta01 dirilis. Versi 1.6.0-beta01 berisi commit ini.
Perbaikan Bug
- Penggunaan
postponeEnterTransitiondengan waktu tunggu, lalu mengganti fragmen yang ditunda tidak lagi menyebabkan kebocoran fragmen yang ditunda. (I2ec7d, b/276375110) - Callback
onBackStackChangeStarteddanonBackStackChangeCommittedbaru kini hanya akan mengirimkan fragmen satu kali, meskipun beberapa transaksi berisi fragmen yang sama. (Ic6b69)
Versi 1.6.0-alpha09
5 April 2023
androidx.fragment:fragment-*:1.6.0-alpha09 dirilis. Versi 1.6.0-alpha09 berisi commit ini.
Perubahan API
DialogFragmentkini menyediakan akses keComponentDialogyang mendasarinya melaluirequireComponentDialog()API. (I022e3, b/234274777)- API fragmen
commitNow(),executePendingTransactions(), danpopBackStackImmediate()telah diberi anotasi dengan@MainThreadyang berarti kini semuanya akan memunculkan error build saat tidak dipanggil dari thread utama, bukan menunggu hingga gagal saat runtime. (Ic9665, b/236538905)
Perbaikan Bug
- Memperbaiki bug di
FragmentManageryang menyebabkan error saat menyimpan dan memulihkan dalam frame yang sama. (Ib36af, b/246519668) - Callback
OnBackStackChangedListeneronBackStackChangeStarteddanonBackStackChangeCommittedkini hanya dieksekusi saat data sebelumnyaFragmentManagerdiubah. (I66055, b/274788957)
Versi 1.6.0-alpha08
22 Maret 2023
androidx.fragment:fragment-*:1.6.0-alpha08 dirilis. Versi 1.6.0-alpha08 berisi commit ini.
Perubahan Perilaku
- Waktu callback
OnBackStackChangedListener.onBackStackChangeCommitedtelah disesuaikan untuk dieksekusi sebelum operasi fragmen dieksekusi. Hal ini memastikan bahwa callback tidak akan pernah meneruskan fragmen yang terlepas. (I66a76, b/273568280)
Perbaikan Bug
- Dari Fragmen
1.5.6: Memperbaiki masalah saat memanggilclearFragmentResultListenerdi dalamsetFragmentResultListenertidak akan berfungsi jikaLifecyclesudahSTARTEDdan hasil sudah tersedia. (If7458)
Update Dependensi
- Fragment sekarang bergantung pada Lifecycle
2.6.1. (586fe7) - Fragment kini bergantung pada SavedState
1.2.1. (078e4e) - Fragment kini bergantung pada ProfileInstaller
1.3.0. (3fc05b)
Versi 1.6.0-alpha07
8 Maret 2023
androidx.fragment:fragment-*:1.6.0-alpha07 dirilis. Versi 1.6.0-alpha07 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.5.6: Memperbaiki masalah saat penghapusan Fragment apa pun, baik yang telah menambahkan item Menu atau tidak, akan membatalkan menu aktivitas. (50f098, b/244336571)
Versi 1.6.0-alpha06
22 Februari 2023
androidx.fragment:fragment-*:1.6.0-alpha06 dirilis. Versi 1.6.0-alpha06 berisi commit ini.
Perubahan perilaku
- Callback
onBackStackChangedStartedbaru padaonBackStackChangedListenerFragmentManagersekarang akan dieksekusi sebelum fragmen mulai berpindah ke status targetnya. (I34726)
Versi 1.6.0-alpha05
8 Februari 2023
androidx.fragment:fragment-*:1.6.0-alpha05 dirilis. Versi 1.6.0-alpha05 berisi commit ini.
Fitur Baru
- Antarmuka
FragmentManager.OnBackStackChagnedListenerkini menawarkan dua callback tambahan,onBackStackChangeStarteddanonBackStackChangeCommitted, yang memungkinkan informasi tambahan dan kontrol saat perubahan data sebelumnya terjadi diFragmentManager. (Ib7ce5, b/238686802)
Perubahan API
FragmentAPI danFragmentManagerAPI yang menggunakanIntentatauIntentSendersekarang dianotasi dengan benar menggunakan@NonNulluntuk mencegah penerusan nilai null karena nilai null akan selalu menyebabkan error pada masing-masing API framework Android yang dipanggil metode ini. (I06fd4)
Versi 1.6.0-alpha04
7 Desember 2022
androidx.fragment:fragment-*:1.6.0-alpha04 dirilis. Versi 1.6.0-alpha04 berisi commit ini.
Fitur Baru
FragmentStrictModemenambahkanWrongNestedHierarchyViolationbaru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan kechildFragmentManagerinduk. (I72521, b/249299268)
Perubahan Perilaku
- Fragment kini memulihkan status
SavedStateRegistrysebelumonAttach(), memastikan bahwa fragmen tersedia dari semua metode siklus proses ke atas. (I1e2b1)
Perubahan API
- Artefak
fragment-testing-manifestmemisahkan entri manifes dari komponen pengujian fragmen lainnya. Ini berarti Anda dapat melakukan hal berikut:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Menghindari konflik karena perbedaan versi antara fragment-testing dan androidx.test.(I8e534, b/128612536)
Perbaikan Bug
- Dari Fragment
1.5.5: Fragment tidak akan lagi salah menyimpan statusViewModelsebagai bagian dari status tersimpan registry tampilan. (I10d2b, b/253546214)
Versi 1.6.0-alpha03
5 Oktober 2022
androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03, dan androidx.fragment:fragment-testing:1.6.0-alpha03 dirilis. Versi 1.6.0-alpha03 berisi commit ini.
Perubahan API
- Class yang memperluas
DialogFragmentkini akan diperlukan untuk memanggil super dalam penggantianonDismiss()-nya. (I14798, b/238928865)
Perbaikan Bug
- Memperbaiki regresi yang disebabkan oleh integrasi antarmuka callback penyedia yang baru (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) untuk memastikan bahwa fragmen selalu mendapatkan callback yang tepat. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Versi 1.6.0-alpha02
24 Agustus 2022
androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02, dan androidx.fragment:fragment-testing:1.6.0-alpha02 dirilis. Versi 1.6.0-alpha02 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.5.2: Memperbaiki masalah saat menjalankan transaksipopBackStack()danreplace()secara bersamaan dapat menyebabkan keluarnya fragmen untuk menjalankanAnimation/Animatoryang salah. (Ib1c07, b/214835303)
Versi 1.6.0-alpha01
27 Juli 2022
androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01, dan androidx.fragment:fragment-testing:1.6.0-alpha01 dirilis. Versi 1.6.0-alpha01 berisi commit ini.
Perubahan Perilaku
- Status tersimpan
Fragmenttelah dibagi sepenuhnya antara status library pribadi (classParcelablekhusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalamBundleyang memungkinkan penentuan tempat asal fragmen dengan tepat. (b/207158202)
Perbaikan Bug
- Dari Fragment
1.5.1: Memperbaiki regresi diDialogFragmentCallbacksDetectorsaat menggunakan versi lint yang dipaketkan dengan AGP 7.4 akan menyebabkan lint mengalami error. (b/237567009)
Pembaruan dependensi
- Dari Fragment
1.5.1: Library Fragment sekarang bergantung pada Lifecycle2.5.1. (Id204c) - Dari Fragment
1.5.1: Library Fragment sekarang bergantung pada Activity1.5.1. (I10f07)
Versi 1.5
Versi 1.5.7
19 April 2023
androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7, dan androidx.fragment:fragment-testing:1.5.7 dirilis. Versi 1.5.7 berisi commit ini.
Perbaikan Bug
- Penggunaan
postponeEnterTransitiondengan waktu tunggu, lalu mengganti fragmen yang ditunda tidak lagi menyebabkan kebocoran fragmen yang ditunda. (I2ec7d, b/276375110)
Versi 1.5.6
22 Maret 2023
androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6, dan androidx.fragment:fragment-testing:1.5.6 dirilis. Versi 1.5.6 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat penghapusan Fragment apa pun, baik yang telah menambahkan item Menu atau tidak, akan membatalkan menu aktivitas. (50f098, b/244336571)
- Memperbaiki masalah saat panggilan
clearFragmentResultListenerdi dalamsetFragmentResultListenertidak akan berfungsi jikaLifecyclesudahSTARTEDdan hasil sudah tersedia. (If7458)
Versi 1.5.5
7 Desember 2022
androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5, dan androidx.fragment:fragment-testing:1.5.5 dirilis. Versi 1.5.5 berisi commit ini.
Perbaikan Bug
- Fragment tidak akan lagi salah menyimpan status
ViewModelsebagai bagian dari status tersimpan registry tampilan. (I10d2b, b/253546214)
Versi 1.5.4
24 Oktober 2022
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4, dan androidx.fragment:fragment-testing:1.5.4 dirilis. Versi 1.5.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki error saat menggunakan
FragmentControllerkustom dengan host yang tidak menerapkan antarmuka callback penyedia (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) dan memanggil fungsi pengiriman yang tidak digunakan lagi akan gagal dikirimkan ke fragmen turunan. (I9b380)
Versi 1.5.3
21 September 2022
androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3, dan androidx.fragment:fragment-testing:1.5.3 dirilis. Versi 1.5.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang menyebabkan fragmen pada data sebelumnya mendapatkan callback
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory(), danonConfigurationChanged(). (I34581, I8dfe6, b/242570955) - Fragmen turunan bertingkat tidak akan lagi menerima beberapa callback
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory(), atauonConfigurationChanged(). (I690b3, Id0096, If9d6b, I2cba2)
Versi 1.5.2
10 Agustus 2022
androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2, dan androidx.fragment:fragment-testing:1.5.2 dirilis. Versi 1.5.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat menjalankan transaksi
popBackStack()danreplace()secara bersamaan dapat menyebabkan keluarnya fragmen untuk menjalankanAnimation/Animatoryang salah. (Ib1c07, b/214835303 )
Versi 1.5.1
27 Juli 2022
androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1, dan androidx.fragment:fragment-testing:1.5.1 dirilis. Versi 1.5.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi dalam
DialogFragmentCallbacksDetectorsaat menggunakan versi lint yang dipaketkan dengan AGP 7.4 akan menyebabkan lint mengalami error. (b/237567009)
Pembaruan dependensi
- Library Fragment kini bergantung pada Lifecycle
2.5.1. (Id204c) - Library Fragment sekarang bergantung pada Activity
1.5.1. (I10f07)
Versi 1.5.0
29 Juni 2022
androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0, dan androidx.fragment:fragment-testing:1.5.0 dirilis. Versi 1.5.0 berisi commit ini.
Perubahan penting sejak versi 1.4.0
- Integrasi CreationExtras -
Fragmentkini memiliki kemampuan untuk menyediakanViewModelProvider.Factorystateless melaluiCreationExtrasLifecycle2.5.0. - Integrasi Dialog Komponen -
DialogFragmentkini menggunakanComponentDialogmelalui Activity1.5.0sebagai dialog default yang ditampilkan olehonCreateDialog(). - Pemfaktoran Ulang Status Instance Tersimpan - Fragmen mulai mengubah cara penyimpanan status instance. Ini adalah upaya untuk membantu mengidentifikasi dengan jelas status yang telah disimpan dalam fragmen dan sumber status. Perubahan saat ini meliputi:
FragmentManagerkini menyimpan status instance tersimpannya ke dalamBundle, bukan langsung diParcelablekustom.- Hasil yang ditetapkan melalui
Fragment Result APIsyang belum ditayangkan kini disimpan secara terpisah dari status internalFragmentManager. - Status yang terkait dengan setiap fragmen individual kini disimpan secara terpisah dari status internal
FragmentManager, sehingga memungkinkan Anda menghubungkan jumlah status tersimpan yang terkait dengan fragmen individual menggunakan ID unik yang ada di logging debugFragment.
Perubahan Lainnya
FragmentStrictModekini menawarkan kemampuan bagi fragmen pihak ketiga pribadi untuk mengabaikan penalti pelanggaran tertentu menggunakanallowViolation()dengan nama class.- Fragment API untuk menyediakan menu ke
ActionBaraktivitas Anda tidak digunakan lagi.MenuHostAPI danMenuProviderAPI yang ditambahkan di Activity1.4.0menyediakan antarmuka API setara yang dapat diuji dan berbasis siklus proses yang harus digunakan fragmen.
Versi 1.5.0-rc01
11 Mei 2022
androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01, dan androidx.fragment:fragment-testing:1.5.0-rc01 dirilis. Versi 1.5.0-rc01 berisi commit ini.
Pemfaktoran Ulang Status Instance Tersimpan
- Status yang terkait dengan setiap fragmen individual kini disimpan secara terpisah dari status internal
FragmentManager, sehingga memungkinkan Anda menghubungkan jumlah status tersimpan yang terkait dengan fragmen individual menggunakan ID unik yang ada di Logging debug fragmen. (a153e0, b/207158202)
Versi 1.5.0-beta01
20 April 2022
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01, dan androidx.fragment:fragment-testing:1.5.0-beta01 dirilis. Versi 1.5.0-beta01 berisi commit ini.
Perubahan API
DialogFragmenttelah menambahkan metodedismissNowbaru yang menggunakancommitNowuntuk paritas dengan fungsishowNow. Perhatikan bahwa tindakan ini tidak akan membuatDialoglangsung ditutup. Tindakan ini hanya akan memperbarui statusFragmentManagersecara sinkron. (I15c36, b/72644830)
Pemfaktoran Ulang Status Instance Tersimpan
FragmentManagerkini menyimpan status instance tersimpannya ke dalamBundle, bukan langsung diParcelablekustom. Ini adalah langkah pertama dalam memberikan transparansi tambahan tentang apa yang sebenarnya disimpan oleh Fragment. (I93807, b/207158202)- Hasil yang ditetapkan melalui Fragment Result API yang belum ditayangkan kini disimpan secara terpisah dari status internal
FragmentManager. Hal ini akan memungkinkan transparansi tambahan terkait hasil yang disimpan sebagai bagian dari status instance tersimpan Anda. (I6ea12, b/207158202)
Versi 1.5.0-alpha05
6 April 2022
androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05, dan androidx.fragment:fragment-testing:1.5.0-alpha05 dirilis. Versi 1.5.0-alpha05 berisi commit ini.
Perubahan API
setHasOptionsMenu()Fragmentsudah tidak digunakan lagi. Untuk mengelola menu dan item menunya, API menu baru harus digunakan, sesuai dengan catatan rilis Fragment1.5.0-alpha04. (I7b4b4, b/226438239)
Versi 1.5.0-alpha04
23 Maret 2022
androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04, dan androidx.fragment:fragment-testing:1.5.0-alpha04 dirilis. Versi 1.5.0-alpha04 berisi commit ini.
Perubahan API
- Fragment API untuk menyediakan menu ke
ActionBaraktivitas Anda tidak digunakan lagi karena mengaitkan fragmen Anda secara erat ke aktivitas Anda dan tidak dapat diuji secara terpisah.MenuHostAPI danMenuProviderAPI yang ditambahkan di Activity1.4.0-alpha01menyediakan antarmuka API setara yang dapat diuji dan berbasis siklus proses yang harus digunakan fragmen. (I50a59, I20758)
Perbaikan Bug
SavedStateViewFactorysekarang mendukung penggunaanCreationExtrasmeskipun diinisialisasi denganSavedStateRegistryOwner. Jika tambahan disediakan, argumen yang diinisialisasi akan diabaikan. (I6c43b, b/224844583)
Versi 1.5.0-alpha03
23 Februari 2022
androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03, dan androidx.fragment:fragment-testing:1.5.0-alpha03 dirilis. Versi 1.5.0-alpha03 berisi commit ini.
Perubahan API
- Anda kini dapat meneruskan
CreationExtraske fungsiby viewModels()danby activityViewModels(). (Ibefe7, b/217601110)
Perubahan Perilaku
DialogFragmentkini menggunakanComponentDialogsebagai dialog default yang ditampilkan olehonCreateDialog(). (If3784, b/217618170)
Versi 1.5.0-alpha02
9 Februari 2022
androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02, dan androidx.fragment:fragment-testing:1.5.0-alpha02 dirilis. Versi 1.5.0-alpha02 berisi commit ini.
Fitur Baru
FragmentStrictModekini menawarkan kemampuan bagi fragmen pihak ketiga pribadi untuk mengabaikan penalti pelanggaran tertentu menggunakanallowViolation()dengan nama class. (I8f678)
Versi 1.5.0-alpha01
26 Januari 2022
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01, dan androidx.fragment:fragment-testing:1.5.0-alpha01 dirilis. Versi 1.5.0-alpha01 berisi commit ini.
Fitur Baru
Fragmentkini terintegrasi dengan ViewModel CreationExtras, yang diperkenalkan sebagai bagian dari Lifecycle2.5.0-alpha01. (I3060b, b/207012585)
Perbaikan Bug
- Dari Fragment
1.4.1:FragmentContainerViewtidak lagi melemparkan pengecualian status ilegal saat ID tampilan yang dihasilkan dari XML memiliki nilai negatif. (Ic185b, b/213086140) - Dari Fragment
1.4.1: Jika menggunakan lambdaownerProducerkustom dengan fungsi lambatby viewModels(), lambda ini sekarang akan menggunakandefaultViewModelProviderFactorydari pemilik tersebut jikaViewModelProvider.Factorykustom tidak disediakan, bukan selalu menggunakan factory fragmen. (I56170, b/214106513) - Memperbaiki error saat mengakses
ViewModeluntuk pertama kalinya dari callbackregisterForActivityResult()Fragment. (Iea2b3)
Versi 1.4
Versi 1.4.1
26 Januari 2022
androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1, dan androidx.fragment:fragment-testing:1.4.1 dirilis. Versi 1.4.1 berisi commit ini.
Perbaikan Bug
FragmentContainerViewtidak lagi melemparkan pengecualian status ilegal saat ID tampilan yang dihasilkan dari XML memiliki nilai negatif. (Ic185b, b/213086140)- Jika menggunakan lambda
ownerProducerkustom dengan fungsi lambatby viewModels(), lambda ini sekarang akan menggunakandefaultViewModelProviderFactorydari pemilik tersebut jikaViewModelProvider.Factorykustom tidak disediakan, bukan selalu menggunakan factory fragmen. (I56170, b/214106513)
Versi 1.4.0
17 November 2021
androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0, dan androidx.fragment:fragment-testing:1.4.0 dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
FragmentStrictModeAPI menyediakan pemeriksaan runtime yang memungkinkan Anda memverifikasi bahwa aplikasi atau library yang dijadikan dependensi tidak memanggil API fragmen yang tidak digunakan lagi. Saat pelanggaran terdeteksi, Anda dapat memilih untuk mencetak pesan log, memicu pemroses kustom sendiri, atau membuat aplikasi error.FragmentStrictMode.Policyyang mengontrol pemeriksaan yang diaktifkan dan "masalah" yang dipicu dapat ditetapkan padaFragmentManagermelalui metodesetStrictModePolicy()baru. Kebijakan tersebut berlaku untukFragmentManagertersebut dan secara transitif untuk semua pengelola fragmen turunan yang tidak menetapkan kebijakan uniknya sendiri. Lihat StrictMode untuk fragmen.FragmentContainerViewkini menyediakan metodegetFragment()yang akan menampilkan fragmen yang terakhir ditambahkan ke penampung. Metode ini menggunakan logika yang sama sepertifindFragmentById()dengan IDFragmentContainerView, tetapi memungkinkan perantaian panggilan.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenariokini mengimplementasikanCloseablesehingga Anda dapat menggunakannya dengan metodeuseatau try-with-resources Kotlin.Menambahkan
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}untuk menentukan apakah akan mengaktifkan animasi transisi Activity standar yang diambil dari tema Anda dalam transisi Fragment.API eksperimental
FragmentManager.enableNewStateManager(boolean)telah dihapus dan pengelola status baru kini menjadi satu-satunya opsi yang tersedia.
Beberapa data sebelumnya
FragmentManager mempertahankan data sebelumnya yang terdiri dari transaksi fragmen yang menggunakan addToBackStack(). Hal ini memungkinkan Anda memunculkan transaksi tersebut dan mengembalikan ke status sebelumnya, menggunakan mekanisme untuk Menyimpan status dengan fragmen agar fragmen dapat memulihkan statusnya dengan tepat.
Rilis ini memperluas mekanisme ini dengan menyediakan tiga API FragmentManager baru: saveBackStack(String name), restoreBackStack(String name), dan clearBackStack(String name). API ini menggunakan name yang sama seperti addToBackStack() untuk menyimpan status FragmentTransaction dan status setiap fragmen yang ditambahkan dalam transaksi tersebut, serta memungkinkan Anda memulihkan transaksi tersebut dan fragmennya nanti beserta statusnya. Hal ini memungkinkan Anda 'bertukar' secara efektif antara beberapa data sebelumnya dengan menyimpan data sebelumnya saat ini dan memulihkan data sebelumnya yang tersimpan.
saveBackStack() beroperasi dengan cara yang mirip seperti popBackStack() karena bersifat asinkron dan mengakibatkan semua transaksi fragmen sebelumnya yang kembali ke nama tertentu tersebut dibatalkan ('muncul') dan fragmen apa pun yang ditambahkan dihancurkan dan dihapus, tetapi berbeda dalam beberapa cara penting:
saveBackStack()selalu bersifat inklusif.- Tidak seperti
popBackStack()yang akan memunculkan semua transaksi dalam data sebelumnya jika nama yang ditentukan tidak ditemukan dalam data sebelumnya atau jika nama null diberikan,saveBackStack()tidak melakukan apa pun jika Anda belum meng-commit transaksi fragmen menggunakanaddToBackStack()dengan nama non-null yang sama persis. - Status semua fragmen yang ditambahkan dari transaksi tersebut akan disimpan. Artinya, status Tampilan setiap fragmen disimpan,
onSaveInstanceState()setiap fragmen dipanggil dan status tersebut dipulihkan, dan setiap instanceViewModelyang terkait dengan fragmen tersebut akan dipertahankan (danonCleared()tidak dipanggil).
Transaksi fragmen yang dapat digunakan dengan saveBackStack() harus memenuhi kriteria tertentu:
- Setiap transaksi fragmen harus menggunakan
setReorderingAllowed(true)untuk memastikan transaksi dapat dipulihkan sebagai operasi tunggal atom. - Rangkaian transaksi yang disimpan harus bersifat mandiri (yaitu, transaksi tidak boleh secara eksplisit merujuk ke fragmen apa pun di luar rangkaian transaksi tersebut) untuk memastikan bahwa transaksi tersebut dapat dipulihkan kapan pun nanti, apa pun perubahan yang telah dibuat pada data sebelumnya dalam waktu intervensi.
- Fragmen yang disimpan tidak mungkin merupakan fragmen yang dipertahankan atau memiliki fragmen yang dipertahankan dalam kumpulan transitif fragmen turunannya untuk memastikan bahwa
FragmentManagertidak mengembalikan referensi apa pun ke fragmen yang disimpan setelah data sebelumnya disimpan.
Serupa dengan saveBackStack(), restoreBackStack() dan clearBackStack() yang masing-masing akan memulihkan data sebelumnya yang telah disimpan sebelumnya atau menghapus data sebelumnya yang telah disimpan sebelumnya, keduanya tidak melakukan apa pun jika Anda belum pernah memanggil saveBackStack() dengan nama yang sama.
Untuk informasi selengkapnya, lihat Beberapa data sebelumnya: Pembahasan mendalam.
Versi 1.4.0-rc01
3 November 2021
androidx.fragment:fragment:1.4.0-rc01 dirilis tanpa perubahan dari Fragment 1.4.0-beta01. Versi 1.4.0-rc01 berisi commit ini.
Versi 1.4.0-beta01
27 Oktober 2021
androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01, dan androidx.fragment:fragment-testing:1.4.0-beta01 dirilis. Versi 1.4.0-beta01 berisi commit ini.
Perbaikan Bug
- Fragmen induk kini akan mengirim
onHiddenChanged()ke seluruh hierarki sebelum meluncurkan callback-nya sendiri. (Iedc20, b/77504618) - Keyboard kini akan otomatis menutup saat beralih dari fragmen dengan keyboard terbuka ke fragmen dengan tampilan recycler. (I8b842, b/196852211)
DialogFragmentsekarang menggunakansetReorderingAllowed(true)untuk semua transaksi yang dibuatnya saat Anda memanggilshow(),showNow(), ataudismiss(). (Ie2c14)- Peringatan Lint
DetachAndAttachFragmentInSameFragmentTransactionyang sangat panjang telah dipersingkat menjadiDetachAndAttachSameFragment. (e9eca3)
Versi 1.4.0-alpha10
29 September 2021
androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10, dan androidx.fragment:fragment-testing:1.4.0-alpha10 dirilis. Versi 1.4.0-alpha10 berisi commit ini.
Lint
- Menambahkan peringatan lint
DetachAndAttachFragmentInSameFragmentTransactionuntuk mendeteksi panggilandetach()danattach()padaFragmentyang sama diFragmentTransactionyang sama - karena operasi pelengkap ini saling menghapus saat dilakukan dalam transaksi yang sama, transaksi tersebut harus dibagi menjadi transaksi terpisah agar dapat melakukan tindakan apa pun. (aosp/1832956, b/200867930) - Menambahkan error lint
FragmentAddMenuProvideruntuk mengoreksi penggunaan Siklus Proses Fragmen ke Siklus proses tampilan Fragmen saat menggunakanaddMenuProviderAPI dariMenuHost. (aosp/1830457, b/200326272)
Pembaruan Dokumentasi
- Pesan penghentian penggunaan untuk API yang sekarang ditangani oleh Activity Result API, yaitu
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissions, danonRequestPermissionsResult, semuanya telah diperluas dengan detail selengkapnya. (cce80f) - Pesan penghentian untuk
onActivityCreated()untukFragmentdanDialogFragmenttelah diperluas dengan detail selengkapnya. (224db4)
Versi 1.4.0-alpha09
15 September 2021
androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09, dan androidx.fragment:fragment-testing:1.4.0-alpha09 dirilis. Versi 1.4.0-alpha09 berisi commit ini.
Fitur Baru
- Anda sekarang dapat memanggil
clearBackStack(name)untuk menghapus status yang sebelumnya disimpan dengansaveBackStack(name). (I70cd7)
Perubahan API
- Class
FragmentContainerViewtelah ditulis ulang di Kotlin yang memastikan bahwa fungsigetFragmentakan mengikuti nullability dengan benar. (If694a, b/189629145) - FragmentStrictMode sekarang ditulis di Kotlin (I11767, b/199183506)
Perbaikan Bug
- Memperbaiki masalah ketika status Fragmen
yang ditambahkan dengan
setReorderingAllowed(true)lalu segera dihapus sebelum menjalankan transaksi tertunda tidak akan dibersihkan dengan benar. (I8ccb8)
Versi 1.4.0-alpha08
1 September 2021
androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08, dan androidx.fragment:fragment-testing:1.4.0-alpha08 dirilis. Versi 1.4.0-alpha08 berisi commit ini.
Perbaikan Bug
- Meningkatkan pemeriksaan Lint
UseRequireInsteadOfGetuntuk menangani tanda kurung yang redundan dengan lebih baik. (I2d865) - Meningkatkan pemeriksaan Lint
UseGetLayoutInflateruntuk menangani kasus ekstrem tambahan. (Ie5423)
Versi 1.4.0-alpha07
18 Agustus 2021
androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07, dan androidx.fragment:fragment-testing:1.4.0-alpha07 dirilis tanpa perubahan penting. Versi 1.4.0-alpha07 berisi commit ini.
Versi 1.4.0-alpha06
4 Agustus 2021
androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06, dan androidx.fragment:fragment-testing:1.4.0-alpha06 dirilis. Versi 1.4.0-alpha06 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah dengan beberapa data sebelumnya
saat beralih dengan cepat di antara data sebelumnya
yang akan muncul sebagai
IllegalStateExceptionsaat memulihkanFragmentTransactionatau sebagai salinan kedua fragmen yang muncul. (I9039f) - Memperbaiki masalah yang menyebabkan
FragmentManagermenyimpan salinan status yang sebelumnya disimpan melaluisaveBackStack()bahkan setelah status tersebut dipulihkan. (Ied212) - Metode
dismissAllowingStateLoss()dariDialogFragmenttidak lagi error saat Anda memanggilnya setelah status disimpan ketika menambahkan DialogFragment secara khusus melalui metodeshow(FragmentTransaction, String). (I84422)
Versi 1.4.0-alpha05
21 Juli 2021
androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05, dan androidx.fragment:fragment-testing:1.4.0-alpha05 dirilis. Versi 1.4.0-alpha05 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.3.6: Tampilan Fragment kini disetel dengan benar keGONEsaat menggunakanhide()saat tampilan root menyeteltransitionGroup=”true”. (aosp/1766655, b/193603427) - Dari Fragment
1.3.6:FragmentActivitysekarang selalu membuka status tersimpan sebagai operasi pertamanya di callback siklus proses yang digantikannya. (I6db7a)
Pembaruan dependensi
- Dari Fragment
1.3.6: Fragment kini bergantung pada Activity1.2.4(I3a66c)
Versi 1.4.0-alpha04
30 Juni 2021
androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04, dan androidx.fragment:fragment-testing:1.4.0-alpha04 dirilis. Versi 1.4.0-alpha04 berisi commit ini.
Perubahan API
FragmentManagersekarang menggunakanSavedStateRegistrydi balik layar untuk menyimpan statusnya. MetodesaveAllState()danrestoreSavedState()juga tidak digunakan lagi diFragmentController. Jika Anda menggunakanFragmentControlleruntuk menghosting fragmen di luarFragmentActivity, Anda harus memintaFragmentHostCallbacksmengimplementasikanSavedStateRegistryOwner. (Iba68e, b/188734238)
Perbaikan Bug
- Memperbaiki masalah saat panggilan ke
saveBackStack()sebagai bagian dari dukungan beberapa data sebelumnya akan gagal jika dilakukan bersamaan dengan menjalankanFragmentTransactionyang menggunakanreplace(). (I73137) - Memperbaiki
NullPointerExceptionyang terjadi setelah memulihkan data tersimpan sebelumnya secara manual yang berisi beberapa transaksi saat menggunakanrestoreBackStack()API untuk beberapa dukungan data sebelumnya. Ini juga memperbaiki masalah saatsetReorderingAllowed(true)tidak diperiksa untuk semua transaksi. (I8c593) - Memperbaiki masalah saat
FragmentManagersalah melanjutkan pemulihan status fragmen yang disimpan sebelumnya bahkan setelah fragmen tersebut dihapus dariFragmentManager, sehingga menyebabkan status tersimpan terus bertambah seiring waktu. (I1fb8e)
Versi 1.4.0-alpha03
16 Juni 2021
androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03, dan androidx.fragment:fragment-testing:1.4.0-alpha03 dirilis. Versi 1.4.0-alpha03 berisi commit ini.
Fitur Baru
- Semua class Fragmen StrictMode
Violationtelah diupdate dengan pesan error yang lebih terperinci yang menjelaskan detail pelanggaran. (b/187871638)FragmentTagUsageViolationsekarang berisi pesan error yang lebih terperinci yang menampung penampung induk tempat fragmen ditambahkan. (Ic33a7)WrongFragmentContainerViolationsekarang memiliki pesan error yang lebih terperinci yang menyertakan penampung tempat fragmen ditambahkan. (Ib55f8)- Class kasus penggunaan untuk
TargetFragmentUsageViolationkini memiliki pesan error yang lebih terperinci untuk menyertakan fragmen yang menyebabkan pelanggaran dan informasi lain yang ada di dalamnya. (Icc6ac) - Class yang memperluas
RetainInstanceUsageViolationkini memiliki pesan error lebih terperinci yang menyertakan fragmen yang menyebabkan pelanggaran. (I6bd55) FragmentReuseViolationsekarang memiliki pesan error yang lebih mendetail yang menyertakan ID fragmen sebelumnya. (I28ce2)SetUserVisibleHintViolationkini memiliki pesan error yang lebih mendetail yang menyertakan petunjuk yang dapat dilihat oleh pengguna. (Ib2d5f)
Perubahan Perilaku
- Mengembalikan batasan pemanggilan
fitsSystemWindowspadaFragmentContainerView- tindakan ini tidak akan lagi membuat aplikasi Anda error. (6b8ddd, b/190622202)
Perbaikan Bug
- Dari Fragmen
1.3.5: Memperbaiki regresi dalam transisi elemen bersama yang diperkenalkan di Fragmen1.3.4oleh aosp/1679887. Fragmen kini menangani grup transisi dengan benar (baik disetel langsung melaluitransitionGroup="true"maupun secara tidak langsung melaluitransitionNameataubackground) dan elemen bersama tidak akan lagi membuangIndexOutOfBoundsException. (I16484, b/188679569, b/188969304) FragmentManagertidak akan lagi error saat Anda mencoba menyembunyikan fragmen yang menghapus. (I573dd, b/183634730)- Pemeriksaan lint
OnCreateDialogIncorrectCallbacktidak akan lagi mengalami error saat mengevaluasi variabel level teratas. (0a9efa, b/189967522)
Versi 1.4.0-alpha02
2 Juni 2021
androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02, dan androidx.fragment:fragment-testing:1.4.0-alpha02 dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Fitur Baru
FragmentStrictModekini akan selalu mencatat pelanggaran saat logging diaktifkan melaluiFragmentManager, terlepas dari kebijakan mode ketat yang saat ini digunakan. (I02df6, b/187872638)FragmentStrictModekini mendukung pengecualian classFragmenttertentu dariViolationmode ketat yang memungkinkan class tersebut mengabaikan masalah apa pun. (Ib4e5d, b/184786736)Class
ViolationFragmentStrictModetelah diperluas untuk menambahkan informasi struktur berdasarkan setiap pelanggaran. Hal ini memungkinkan Anda memverifikasi penyebab pelanggaran beserta fragmen yang melanggar (If5118, b/187871150), setiapViolationberisi hal berikut:WrongFragmentContainerViolationkini berisiViewGroupyang berusaha ditambahkanFragment. (I83c75, b/187871150)TargetFragmentUsageViolationtelah diperluas menjadiSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolation, danGetTargetFragmentRequestCodeUsageViolation, denganSetTargetFragmentUsageViolationyang berisi fragmen target dan kode permintaan. (I741b4, b/187871150)SetUserVisibleHintViolationkini berisi nilai boolean yang diteruskan kesetUserVisibleHint(). (I00585, b/187871150)FragmentTagUsageViolationkini berisi ViewGroup yang berusaha di-inflate fragmen oleh tag<fragment>. (I5dbbc, b/187871150)FragmentReuseViolationkini berisi ID unik instanceFragmentsebelumnya yang menyebabkan pelanggaran. (I0544d, b/187871150)RetainInstanceUsageViolationkini bersifat abstrak dan memiliki dua subclass,SetRetainInstanceUsageViolationdanGetRetainInstanceUsageViolation, yang mewakili dua kasus untuk jenis pelanggaran. (Ic81e5, b/187871150)
Perubahan Perilaku
FragmentContainerViewkini menampilkan pengecualian saat mencoba mengubah atributfitsSystemWindowsecara terprogram atau melalui XML. Inset harus ditangani oleh tampilan masing-masing fragmen. (Ie6651, b/187304502)
Versi 1.4.0-alpha01
18 Mei 2021
androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01, dan androidx.fragment:fragment-testing:1.4.0-alpha01 dirilis. Versi 1.4.0-alpha01 berisi commit ini.
Fitur Baru
FragmentContainerViewkini menyediakan metodegetFragment()yang akan menampilkan fragmen yang terakhir ditambahkan ke penampung. Metode ini menggunakan logika yang sama sepertifindFragmentById()dengan IDFragmentContainerView, tetapi memungkinkan perantaian panggilan. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerMenambahkan
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}untuk menentukan apakah akan mengaktifkan animasi transisi Activity standar yang diambil dari tema Anda dalam transisi Fragment. (I46652)
Beberapa data sebelumnya
FragmentManager mempertahankan data sebelumnya yang terdiri dari transaksi fragmen yang menggunakan addToBackStack(). Hal ini memungkinkan Anda memunculkan transaksi tersebut dan mengembalikan ke status sebelumnya, menggunakan mekanisme untuk Menyimpan status dengan fragmen agar fragmen dapat memulihkan statusnya dengan tepat.
Rilis ini memperluas mekanisme ini dengan menyediakan dua API FragmentManager baru: saveBackStack(String name) dan restoreBackStack(String name). API ini menggunakan name yang sama seperti addToBackStack() untuk menyimpan status FragmentTransaction dan status setiap fragmen yang ditambahkan dalam transaksi tersebut, serta memungkinkan Anda memulihkan transaksi tersebut dan fragmennya nanti beserta statusnya. Hal ini memungkinkan Anda 'bertukar' secara efektif antara beberapa data sebelumnya dengan menyimpan data sebelumnya saat ini dan memulihkan data sebelumnya yang tersimpan.
saveBackStack() beroperasi dengan cara yang mirip seperti popBackStack() karena bersifat asinkron dan mengakibatkan semua transaksi fragmen sebelumnya yang kembali ke nama tertentu tersebut dibatalkan ('muncul') dan fragmen apa pun yang ditambahkan dihancurkan dan dihapus, tetapi berbeda dalam beberapa cara penting:
saveBackStack()selalu bersifat inklusif.- Tidak seperti
popBackStack()yang akan memunculkan semua transaksi dalam data sebelumnya jika nama yang ditentukan tidak ditemukan dalam data sebelumnya atau jika nama null diberikan,saveBackStack()tidak melakukan apa pun jika Anda belum meng-commit transaksi fragmen menggunakanaddToBackStack()dengan nama non-null yang sama persis. - Status semua fragmen yang ditambahkan dari transaksi tersebut akan disimpan. Artinya, status Tampilan setiap fragmen disimpan,
onSaveInstanceState()setiap fragmen dipanggil dan status tersebut dipulihkan, dan setiap instanceViewModelyang terkait dengan fragmen tersebut akan dipertahankan (danonCleared()tidak dipanggil).
Transaksi fragmen yang dapat digunakan dengan saveBackStack() harus memenuhi kriteria tertentu:
- Setiap transaksi fragmen harus menggunakan
setReorderingAllowed(true)untuk memastikan transaksi dapat dipulihkan sebagai operasi tunggal atom. - Rangkaian transaksi yang disimpan harus bersifat mandiri (yaitu, transaksi tidak boleh secara eksplisit merujuk ke fragmen apa pun di luar rangkaian transaksi tersebut) untuk memastikan bahwa transaksi tersebut dapat dipulihkan kapan pun nanti, apa pun perubahan yang telah dibuat pada data sebelumnya dalam waktu intervensi.
- Fragmen yang disimpan tidak mungkin merupakan fragmen yang dipertahankan atau memiliki fragmen yang dipertahankan dalam kumpulan transitif fragmen turunannya untuk memastikan bahwa
FragmentManagertidak mengembalikan referensi apa pun ke fragmen yang disimpan setelah data sebelumnya disimpan.
Serupa dengan saveBackStack(), restoreBackStack() tidak melakukan apa pun jika Anda belum pernah memanggil saveBackStack() dengan nama yang sama. (b/80029773)
StrictMode Fragmen
FragmentStrictMode API menyediakan pemeriksaan runtime yang memungkinkan Anda memverifikasi bahwa aplikasi atau library yang dijadikan dependensi tidak memanggil API fragmen yang tidak digunakan lagi. Saat pelanggaran terdeteksi, Anda dapat memilih untuk mencetak pesan log, memicu pemroses kustom sendiri, atau membuat aplikasi error. FragmentStrictMode.Policy yang mengontrol pemeriksaan yang diaktifkan dan "masalah" yang dipicu dapat ditetapkan pada FragmentManager melalui metode setStrictModePolicy() baru. Kebijakan tersebut berlaku untuk FragmentManager tersebut dan secara transitif untuk semua pengelola fragmen turunan yang tidak menetapkan kebijakan uniknya sendiri. (#123, #131, #150, b/143774122)
detectFragmentReuse()mendeteksi apakah instanceFragmentyang sebelumnya dihapus ditambahkan kembali keFragmentManager. Anda tidak boleh berinteraksi dengan atau menyimpan referensi ke instanceFragmentsetelah referensi dihancurkan dan dihapus dariFragmentManager. (#142, b/153738653)detectFragmentTagUsage()mendeteksi saat Anda menggunakan tag<fragment>dalam XML tata letak. Anda harus selalu menggunakanFragmentContainerViewsaat meng-inflate fragmen sebagai bagian dari tata letak. (#141, b/153738235)detectWrongFragmentContainer()mendeteksi saat Anda menambahkan fragmen ke penampung yang bukanFragmentContainerView. Anda harus selalu menggunakanFragmentContainerViewsebagai penampung untuk fragmen dalam tata letak. (#146, b/181137036)detectRetainInstanceUsage()mendeteksi saat Anda menggunakan APIsetRetainInstance()ataugetRetainInstance()yang tidak digunakan lagi. (#140, b/153737954)detectSetUserVisibleHint()mendeteksi saat Anda menggunakan APIsetUserVisibleHint()yang tidak digunakan lagi. (#136, b/153738974)detectTargetFragmentUsage()mendeteksi saat Anda menggunakan APIsetTargetFragment(),getTargetFragment(), ataugetTargetRequestCode()yang tidak digunakan lagi. (#139, b/153737745)
Perubahan API
- API eksperimental
FragmentManager.enableNewStateManager(boolean)telah dihapus dan pengelola status baru kini menjadi satu-satunya opsi yang tersedia. (I90036, b/162776418) FragmentScenariokini mengimplementasikanCloseablesehingga Anda dapat menggunakannya dengan metodeuseatau try-with-resources Kotlin. (#121, b/143774122)
Pemeriksaan Lint baru
- Pemeriksaan Lint
UseGetLayoutInflaterkini memperingatkan saat menggunakanLayoutInflater.from(Context)dalamDialogFragment. Anda harus selalu menggunakan metodegetLayoutInflater()fragmen dialog agar sesuai untukLayoutInflater. (#156, b/170781346) - Pemeriksaan Lint
DialogFragmentCallbacksDetectorkini memperingatkan saat memanggilsetOnCancelListeneratausetOnDismissListenerdalam metodeonCreateDialog()DialogFragment. Pemroses ini dimiliki olehDialogFragmentdan Anda harus menimpaonCancel()danonDismiss()untuk menerima callback ini. (#171, b/181780047, b/187524311)
Perbaikan Bug
- Dari Fragment 1.3.4: Memperbaiki regresi yang terjadi di Fragment
1.3.3saat menggunakan APIViewTreeViewModelStoreOwner.get()denganViewModelProvideratau metode Jetpack ComposeviewModel()di dalam Fragment. Kasus penggunaan ini kini menggunakan dengan benarViewModelProvider.Factoryyang disediakan oleh Fragment jika menggantikangetDefaultViewModelProviderFactory()(seperti yang dilakukan oleh Fragment yang diberi anotasi@AndroidEntryPointsaat menggunakan Hilt). Jika Anda tidak mengganti metode tersebut,SavedStateViewModelFactoryyang menyimpan dan memulihkan statusnya bersama tampilan Fragment akan dibuat sebagai factory default. (I5cbfa, b/186097368) - Dari Fragment 1.3.4: Saat menggunakan
FragmentContainerViewdi API 29, inset tidak akan lagi dikirim tanpa batas waktu, sehingga memperbaiki masalah terkait instanceBottomNavigationBardanFloatingActionButton. (I1bb78, b/186012452) - Dari Fragment 1.3.4: Kini Anda dapat mengambil Parcelable dari paket hasil fragmen setelah penghentian proses. (I65932, b/187443158)
- Dari Fragment 1.3.4: Saat melakukan transisi elemen bersama pada ViewGroup, jika
ViewGroup memiliki
transitionGroupyang disetel ke false, kini transisinya dilakukan dengan benar. (I99675)
Kontribusi Eksternal
- Terima kasih simonschiller yang telah membuat
FragmentScenariomengimplementasikanCloseable. (#121, b/143774122) - Terima kasih simonschiller yang telah menambahkan keseluruhan API
FragmentStrictModeuntuk rilis ini. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Terima kasih tatoocaster yang telah menambahkan pemeriksaan Lint
UseGetLayoutInflater. (#156, b/170781346) - Terima kasih tatocaster yang telah menambahkan pemeriksaan Lint
DialogFragmentCallbacksDetector. (#171, b/181780047)
Versi 1.3
Versi 1.3.6
21 Juli 2021
androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6, dan androidx.fragment:fragment-testing:1.3.6 dirilis. Versi 1.3.6 berisi commit ini.
Perbaikan Bug
- Dari Fragment
1.4.0-alpha03:FragmentManagertidak akan lagi mengalami error saat Anda mencoba menyembunyikan fragmen yang menghapus. (I573dd, b/183634730) - Tampilan Fragment kini disetel dengan benar ke
GONEsaat menggunakanhide()saat tampilan root menyeteltransitionGroup=”true”. (aosp/1766655, b/193603427) FragmentActivitykini selalu membuka status tersimpan sebagai operasi pertamanya dalam callback siklus proses yang digantikannya. (I6db7a)
Pembaruan dependensi
- Dari Fragment
1.3.6: Fragment kini bergantung pada Activity1.2.4(I3a66c)
Versi 1.3.5
16 Juni 2021
androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5, dan androidx.fragment:fragment-testing:1.3.5 dirilis. Versi 1.3.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi dalam transisi elemen bersama yang diperkenalkan di Fragmen
1.3.4oleh aosp/1679887. Fragmen kini menangani grup transisi dengan benar (baik disetel langsung melaluitransitionGroup="true"maupun secara tidak langsung melaluitransitionNameataubackground) dan elemen bersama tidak akan lagi membuangIndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
Versi 1.3.4
18 Mei 2021
androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4, dan androidx.fragment:fragment-testing:1.3.4 dirilis. Versi 1.3.4 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi yang terjadi di Fragment
1.3.3saat menggunakan APIViewTreeViewModelStoreOwner.get()denganViewModelProvideratau metode Jetpack ComposeviewModel()di dalam Fragment saat menggunakan Hilt. Kasus penggunaan ini kini menggunakan dengan benarViewModelProvider.Factoryyang disediakan oleh Fragment jika menggantikangetDefaultViewModelProviderFactory()(seperti@AndroidEntryPointFragment yang diberi anotasi). Jika Anda tidak mengganti metode tersebut,SavedStateViewModelFactoryyang menyimpan dan memulihkan statusnya bersama tampilan Fragment akan dibuat sebagai factory default. (I5cbfa, b/186097368) - Saat menggunakan
FragmentContainerViewdi API 29, inset tidak akan lagi dikirim tanpa batas waktu, sehingga memperbaiki masalah terkait instanceBottomNavigationBardanFloatingActionButton. (I1bb78, b/186012452) - Kini Anda dapat mengambil Parcelable dari paket hasil fragmen setelah penghentian proses. (I65932, b/187443158)
- Saat melakukan transisi elemen bersama pada ViewGroup, jika
ViewGroup memiliki
transitionGroupyang disetel ke false, kini transisinya akan dilakukan dengan benar. (I99675)
Versi 1.3.3
21 April 2021
androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3, dan androidx.fragment:fragment-testing:1.3.3 dirilis. Versi 1.3.3 berisi commit ini.
Fitur Baru
- Penggunaan
SavedStateViewModelFactorykini berfungsi saat digunakan denganSavedStateRegistryOwneryang ditampilkan menggunakanViewTreeSavedStateRegistryOwner.get()dengan Tampilan Fragmen. (I21acf, b/181577191)
Perbaikan Bug
- Memperbaiki regresi yang diperkenalkan pada Fragment
1.3.2yang akan menyebabkan animasipopEntertidak berjalan saat memunculkanFragmentTransactionyang menyertakan operasisetPrimaryNavFragment, seperti yang digunakan olehNavHostFragment. (I38c87, b/183877426) FragmentContainerViewkini memastikan bahwa setiapFragmentdikirim ke kumpulanWindowInsetsbaru, yang memastikan bahwa setiap fragmen sekarang dapat menggunakan inset secara independen. (I63f68, b/172153900)DialogFragmentkini menangani kasus dengan benar saat fragmen turunan ditambahkan ke penampung yang memiliki ID yang sama dengan penampung dalam classDialogkhusus, memperbaiki masalah hierarki tampilan saat menggunakan kembali ID yang telah digunakan secara internal oleh dialog sepertiBottomSheetDialog. (Ie6279, b/180021387)FragmentManager.dump()kini mengindentasi fragmen pertama dengan benar dalam daftar fragmen aktif. (If5c33, b/183705451)
Perbaikan Bug Pengelola Status Baru
- Pengelola status fragmen baru kini menangani transisi keluar dengan benar dengan operasi sembunyikan. (I9e4de, b/184830265)
Versi 1.3.2
24 Maret 2021
androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2, dan androidx.fragment:fragment-testing:1.3.2 dirilis. Versi 1.3.2 berisi commit ini.
Perbaikan Bug Pengelola Status Baru
- Saat menjalankan operasi
popBackStack()dancommit()bersamaan, operasi yang dijalankan terakhir sekarang akan menetapkan arah untuk semua animasi, serta tidak menjalankan beberapa animasi pop dan animasi enter. (I7072e, b/181142246) - Tampilan dalam hirarki elemen bersama tidak lagi menghapus nama transisi saat melakukan transisi elemen bersama. (I4d4a6, b/179934757)
Update Dependensi
- Fragment sekarang bergantung pada Activity 1.2.2, memperbaiki masalah pada pemeriksaan lint
InvalidFragmentVersionForActivityResultActivity saat menggunakan Fragment 1.3.1 atau yang lebih tinggi. - Fragment sekarang bergantung pada Lifecycle 2.3.1.
Versi 1.3.1
10 Maret 2021
androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1, dan androidx.fragment:fragment-testing:1.3.1 dirilis. Versi 1.3.1 berisi commit ini.
Fitur Baru
- Dialog di dalam
DialogFragmentkini dapat memperoleh akses ke pemilik ViewTree melalui DekorasiView-nya, memastikan bahwaDialogFragmentdapat digunakan denganComposeView. (Ib9290, b/180691023)
Perbaikan Bug
- Fragment yang di-inflate ke dalam aktivitas
RESUMEDyang sudah ada menggunakan FragmentContainerView kini ditampilkan dengan benar setelah perubahan konfigurasi. (Ie14c8, b/180538371) - Tidak ada tambahan
}lagi di akhir fragmentoString()(I54705, b/177761088) - Metode yang diganti di FragmentActivity kini mewarisi metode dasar javaDoc dengan benar (I736ce, b/139548782)
- Dokumen untuk
setFragmentResultdansetFragmentResultListenertelah memperbarui dokumen parameternya guna menunjukkan bahwa parameter tersebut tidak lagi menerima nullable (I990ba, b/178348386)
Perbaikan Bug Pengelola Status Baru
- Memperbaiki kebocoran memori pada fragmen yang disebabkan oleh
mFocusedView(Ib4e9e, b/179925887) - Fragmen kini memanggil
onCreateOptionsMenudengan benar saat menggunakan transaksi tampilkan/sembunyikan (I8bce8, b/180255554) - Fragmen turunan dengan transisi yang dimulai sebelum fragmen ditata akan mencapai
RESUMEDdengan benar (Ic11e6, b/180825150) - Fragmen yang di-inflate menggunakan tag
<fragment>kini akan selalu dibuat keRESUMED(I452ac, (I9fa49)
Update Dependensi
- Fragmen 1.3.1 bergantung pada Aktivitas
1.2.1. (I557b9)
Versi 1.3.0
10 Februari 2021
androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0, dan androidx.fragment:fragment-testing:1.3.0 dirilis. Versi 1.3.0 berisi commit ini.
Perubahan utama sejak versi 1.2.0
- Pengelola Status Baru: Penulisan ulang internal
FragmentManageryang signifikan telah memperbaiki banyak masalah yang berkaitan dengan pengiriman peristiwa siklus proses, animasi, dan transisi, serta cara menangani fragmen yang ditunda. Integrasi Activity Result API: Menambahkan dukungan untuk
ActivityResultRegistryAPI yang diperkenalkan di Activity1.2.0untuk menangani aliranstartActivityForResult()+onActivityResult()sertarequestPermissions()+onRequestPermissionsResult()tanpa mengganti metode di Fragment Anda selain memberikan hook untuk menguji alur ini. Lihat Mendapatkan Hasil dari Activity terbaru.- Rilis ini memperbaiki sejumlah masalah terkait kode permintaan yang tidak valid dan pengiriman permintaan izin yang mencegah Activity Result API untuk berfungsi pada versi
FragmentActivitysebelumnya. Anda harus mengupgrade ke Fragment 1.3.0 untuk menggunakan Activity Result API dalamFragmentActivityatauAppCompatActivity.
- Rilis ini memperbaiki sejumlah masalah terkait kode permintaan yang tidak valid dan pengiriman permintaan izin yang mencegah Activity Result API untuk berfungsi pada versi
Fragment Result API: Menambahkan dukungan untuk meneruskan hasil antara dua Fragment melalui API baru di
FragmentManager. Ini berfungsi untuk fragmen hierarki (induk/turunan), DialogFragments, dan fragmen di Navigation, serta memastikan bahwa hasil tersebut hanya akan dikirim ke Fragment Anda saat Fragment setidaknya sedangSTARTED. API fragmen target tidak digunakan lagi dan digantikan dengan API baru ini. Lihat Mendapatkan Hasil menggunakan Fragment Result API.FragmentOnAttachListener: CallbackonAttachFragment()diFragmentActivitydanFragmenttidak digunakan lagi.FragmentOnAttachListenerbaru telah ditambahkan untuk memberikan alternatif yang lebih fleksibel, memungkinkan delegasionAttachFragment()ke pemroses terpisah yang dapat diuji serta dukungan untuk menambahkan pemroses ke FragmentManager selain FragmentManager turunan langsung Anda.Penyempurnaan
FragmentScenario: ClassFragmentScenariodari artefakfragment-testingtelah ditulis ulang dalam Kotlin dan telah menerima sejumlah peningkatan:FragmentScenariosekarang menggunakansetMaxLifecycle()untuk mengimplementasikanmoveToState(), memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya.FragmentScenariosekarang mendukung penyetelanLifecycle.Stateawal untuk mendukung pernyataan status fragmen sebelum berpindah ke setiapLifecycle.Stateuntuk pertama kalinya.- Sekarang ada alternatif ke
FragmentScenarioAPI darionFragmentdalam bentuk reifikasi metode ekstensi KotlinwithFragmentyang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu.
Dukungan
ViewTree:Fragmentsekarang mendukung APIViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View), danViewTreeSavedStateRegistryOwneryang ditambahkan di Lifecycle2.3.0dan SavedState1.1.0sehingga API tersebut akan menampilkan Fragment sebagaiViewModelStoreOwner, danSavedStateRegistryOwnersertaLifecycleOwnerterikat ke Lifecycle tampilan fragmen saat menggunakanViewdalamFragment.Perubahan animasi
TRANSIT_: Efek default fragmen,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, danTRANSIT_FRAGMENT_FADE, sekarang menggunakanAnimator, bukanAnimation. Resource yang digunakan untuk membuat animasi ini sekarang bersifat pribadi.Penghentian penggunaan
setRetainInstance(): MetodesetRetainInstance()pada Fragment tidak digunakan lagi. Dengan diperkenalkannya ViewModels, developer memiliki API tertentu untuk mempertahankan status yang dapat dihubungkan dengan grafik Activity, Fragment, dan Navigation. Hal ini memungkinkan developer menggunakan Fragment normal yang tidak dipertahankan, dan mempertahankan status tertentu yang ingin dipertahankan untuk tetap terpisah, yang menghindari sumber kebocoran umum sekaligus mempertahankan properti berguna dari satu pembuatan dan penghentian status yang dipertahankan (yaitu, konstruktorViewModeldan callbackonCleared()yang diterimanya).Penghentian penggunaan adaptor ViewPager 1: Dengan dirilisnya ViewPager2
1.0.0, classFragmentPagerAdapterdanFragmentStatePagerAdapteruntuk berinteraksi denganViewPagertidak digunakan lagi. Baca Bermigrasi dari ViewPager ke ViewPager2.
Versi 1.3.0-rc02
27 Januari 2021
androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02, dan androidx.fragment:fragment-testing:1.3.0-rc02 dirilis. Versi 1.3.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat induk
DialogFragmentakan muncul di atas turunanDialogFragmentsetelah perubahan konfigurasi; fragmen dialog turunan kini selalu muncul di atas fragmen dialog induk. (I30806, b/177439520) - Memperbaiki masalah saat melakukan operasi
hidedenganAnimationakan menyebabkan fragmen tersembunyi berkedip di akhir animasi. (I57e22, b/175417675) - Fragmen dengan transisi yang ditambahkan sebelum hierarki tampilan
yang terpasang sekarang menjangkau
RESUMEDdengan benar. (I1fc1d, b/177154873)
Perbaikan Bug Pengelola Status Baru
- Tampilan
LifecycleFragmen kini menangani dengan benar kasus saat tampilan Fragmen dihancurkan sebelumLifecyclemenjangkauCREATED, menghindari pengecualian yang menyatakan “tidak ada peristiwa yang tidak diinginkan dari INITIALIZED”. (eda2bd, b/176138645) - Fragmen yang menggunakan
Animatorkini muncul dalam urutan yang sesuai saat menggunakanFragmentContainerView. (Id9aa3, b/176089197)
Versi 1.3.0-rc01
16 Desember 2020
androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01, dan androidx.fragment:fragment-testing:1.3.0-rc01 dirilis. Versi 1.3.0-rc01 berisi commit ini.
Perbaikan Bug
onPrepareOptionsMenu()kini mengikuti logika yang sama sepertionCreateOptionsMenu()dan tidak lagi dipanggil saat fragmen induk memanggilsetMenuVisibility(false). (Id7de8, b/173203654)
Perbaikan Bug Pengelola Status Baru
- Memperbaiki kebocoran dan artefak visual saat menambahkan
fragmen dengan
AnimationkeFragmentContainerView, lalu mengganggu penambahan tersebut dengan operasi pop. (I952d8) - Memperbaiki masalah tampilan fragmen yang akan
tetap berada dalam hierarki tampilan jika diganti selama
metode
onCreate()atauonViewCreated(). (I8a7d5) - Fokus kini dipulihkan dengan benar ke tampilan root Fragment bila dilanjutkan. (Ifc84b)
- Menggabungkan operasi pop dan penggantian dalam transaksi fragmen yang sama kini akan menampilkan animasi yang tepat (Ifd4e4, b/170328691)
Versi 1.3.0-beta02
2 Desember 2020
androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02, dan androidx.fragment:fragment-testing:1.3.0-beta02 dirilis. Versi 1.3.0-beta02 berisi commit ini.
Fitur Baru
FragmentScenariotelah sepenuhnya dikonversi ke Kotlin dengan tetap mempertahankan kompatibilitas sumber dan biner melalui penggunaan antarmuka fungsi Kotlin 1.4 untukFragmentAction. (I19d31)
Perubahan Perilaku
- FragmentContainerViews yang tidak meng-inflate fragmen menggunakan atribut
classatauandroid:namekini dapat digunakan di luarFragmentActivity. (Id4397, b/172266337) - Mencoba menetapkan siklus proses maksimum fragmen ke
DESTROYEDkini akan menampilkanIllegalArgumentException(Ie7651, b/170765622) - Menginisialisasi FragmentScenario dengan status
DESTROYEDkini akan memunculkanIllegalArgumentException(I73590, b/170765622)
Perbaikan Bug Pengelola Status Baru
- Mengatasi masalah tampilan yang tidak akan mencapai status akhir jika Anda mengganggu transisi fragmen yang menggunakan
Animatoratau salah satu dari opsiTRANSIT_FRAGMENT_. (I92426, b/169874632) - Mengatasi masalah yang mencegah fragmen dengan
Animationyang ada dihancurkan dengan benar. (I83d65) - Keluar dari fragmen yang efeknya terbalik kini membatalkan dengan benar dan memulai ulang dengan efek masuk yang tepat. (I62226, b/167092035)
- Mengatasi masalah saat
Animatorkeluarhide()tidak berjalan. (Id7ffe) - Fragmen kini muncul dengan benar bila ditunda, lalu segera dimulai. (Ie713b, b/170022857)
- Fragmen yang menghapus tampilan fokusnya selama animasi tidak akan lagi mencoba memulihkan fokus pada tampilan yang dilepas setelah mencapai
RESUMED(I38c65, b/172925703)
Kontribusi Eksternal
FragmentFactorykini men-cache class fragmen secara terpisah untuk instanceClassLoaderberbeda. Terima kasih, Simon Schiller! (#87, b/113886460)
Versi 1.3.0-beta01
1 Oktober 2020
androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01, dan androidx.fragment:fragment-testing:1.3.0-beta01 dirilis. Versi 1.3.0-beta01 berisi commit ini.
Fitur Baru
setMaxLifecycle()kini mendukung penetapan statusLifecyclekeINITIALIZINGselama fragmen belum dipindahkan keCREATED. (b/159662173)
Perubahan API
- Mengupgrade androidx untuk menggunakan Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Perubahan Perilaku
- Status file resource fragmen telah diubah menjadi pribadi dengan benar. (aosp/1425237)
Perbaikan Bug
- Fragment yang di-inflate menggunakan tag
<fragment>kini akan menunggu dengan benar hingga tampilannya ditambahkan ke penampung sebelum dipindahkan ke STARTED (I02f4c) - Fragmen yang terlihat, lalu
setMaxLifecycle()hinggaCREATEDsekarang menjalankan efek keluarnya dengan benar. (b/165822335) - Menghapus fragmen terlepas yang tidak ditambahkan ke data sebelumnya tidak lagi menyebabkan kebocoran memori. Disediakan oleh Nicklas Ansman Giertz. (b/166489383)
- Fragmen aktif kini akan selalu memiliki
FragmentManagernon-null dan fragment denganFragmentManagernon-null akan selalu dianggap aktif. (aosp/1422346) - Efek default fragmen,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, danTRANSIT_FRAGMENT_FADE, kini menggunakanAnimatorbukanAnimation. (b/166155034)
Perbaikan Bug Pengelola Status Baru
- Fragmen kini memulihkan status fokus tampilan dengan benar dari awal sebelum animasi dimulai. (Icc256)
- Fragmen yang hanya memiliki transisi elemen bersama kini menyelesaikan efek khususnya dengan benar, yang berarti fragmen tersebut benar-benar berpindah ke status final (Iaebc7, b/166658128)
- Tampilan fragmen kini selalu dihapus dari penampung sebelum dihancurkan. (Id5876)
- Pengelola status baru kini secara konsisten menghapus tampilan fragment keluar sebelum menambahkan tampilan fragmen masuk. (I41a6e)
- Perubahan eksplisit pada visibilitas tampilan fragmen kini dipatuhi oleh pengelola status baru. Artinya, jika Anda menyetel tampilan fragmen masuk ke
INVISIBLEsebelum animasi dimulai, tampilan fragmen tersebut akan tetap tidak terlihat. (b/164481490) - Fragmen kini memprioritaskan
AnimatorsdaripadaAnimations, yang berarti fragmen dengan keduanya hanya akan menjalankanAnimatordan mengabaikanAnimation. (b/167579557) - Pengelola status baru tidak lagi menyebabkan fragmen berkedip saat menggunakan animasi masuk. (b/163084315)
Masalah Umum
Saat menggunakan pengelola status baru, jika Anda menekan kembali selama efek khusus masuk, tindakan tersebut bukan mengembalikan ke fragmen sebelumnya, tetapi fragmen lama tidak akan pernah ditambahkan kembali, sehingga layar akan menjadi kosong. (b/167259187, b/167092035, b/168442830)
Versi 1.3.0-alpha08
19 Agustus 2020
androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08, dan androidx.fragment:fragment-testing:1.3.0-alpha08 dirilis. Versi 1.3.0-alpha08 berisi commit ini.
Pengelola Status Baru
Rilis ini mencakup pemfaktoran ulang besar terhadap pengelolaan status internal FragmentManager yang memengaruhi pengiriman metode siklus proses, animasi dan transisi, serta cara penanganan transaksi yang ditunda. Rilis ini diaktifkan secara default. Lihat postingan blog Fragment: Membuat Ulang Internal untuk mengetahui detail selengkapnya. (b/139536619, b/147749580)
- API eksperimental di
FragmentManager.enableNewStateManager(boolean)dapat digunakan untuk mengontrol apakah FragmentManager menggunakan pengelola status baru atau tidak. (I7b6ee)
Masalah berikut hanya diperbaiki saat menggunakan pengelola status baru:
- Fragmen operasi
replacesebelumnya kini dihentikan dengan benar sebelum fragmen baru dimulai. (b/161654580) - Fragmen kini mencegah beberapa animasi yang bersaing pada fragmen yang sama, menghindari kasus ketika
Animationakan mengganti semua efekTransitionatauAnimatordanTransitionpada fragmen individual akan berjalan. (b/149569323) enterTransitiondanexitTranstiondari semua fragmen yang masuk dan keluar sekarang juga dijalankan, bukan hanya fragmen yang terakhir masuk dan yang pertama keluar. (b/149344150)- Fragmen yang ditunda tidak lagi terhenti di status
CREATED, tetapi akan dipindahkan keSTARTEDdengan fragmen lain. (b/129035555) - Memperbaiki masalah ketika
FragmentManageryang akan menjalankan operasi tidak berfungsi saat menggabungkan transaksi yang ditata ulang dan transaksi yang tidak ditata ulang. (b/147297731) - Memunculkan banyak fragmen secara bersamaan tidak lagi mengakibatkan fragmen perantara terlihat sementara saat menunda beberapa fragmen. (b/37140383)
FragmentManagerkini menampilkan fragmen yang benar saat memanggilfindFragmentById()ataufindFragmentByTag()dari dalam callbackonAttachFragment(). (b/153082833)- Fragmen tidak lagi memanggil
onCreateView()pada fragmen yang dihancurkan saat fragmen penggantinya ditunda. (b/143915710) - Pesan error saat mencoba menggabungkan instance framework
Transitiondan AndroidXTransitionkini menyebutkan fragmen dengan transisi yang tidak valid. (b/155574969)
Perubahan Perilaku
- Anda sekarang dapat memanggil
launch()diActivityResultLauncherdalam metode siklus prosesonCreate()dari sebuah fragmen. (b/161464278) - Kini memanggil
registerForActivityResult()setelahonCreate()akan menampilkan pengecualian yang menunjukkan bahwa tindakan ini tidak diizinkan dan tidak otomatis memberikan hasil setelah perubahan konfigurasi. (b/162255449) FragmentActivitysekarang menggunakanOnContextAvailableListenerAPI yang diperkenalkan di Activity1.2.0-alpha08untuk memulihkan statusFragmentManager. Setiap pemroses yang ditambahkan ke subclassFragmentActivityakan berjalan setelah pemroses ini. (I513da)
Perbaikan Bug
ActivityOptionsyang diteruskan saat menggunakanstartIntentSenderForResult()sekarang diterima. (b/162247961)
Masalah Umum
- Saat menggunakan pengelola status baru, langsung menyetel visibilitas tampilan akar fragmen setelah
onViewCreated()dan sebelumonResume()akan menghasilkan visibilitas yang Anda setel agar diganti olehFragmentManager, yang mengontrol visibilitas tampilan root. Sebagai solusinya, Anda harus selalu menggunakan operasihide()danshow()untuk mengubah visibilitas fragmen Anda. (b/164481490)
Versi 1.3.0-alpha07
22 Juli 2020
androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07, dan androidx.fragment:fragment-testing:1.3.0-alpha07 dirilis. Versi 1.3.0-alpha07 berisi commit ini.
Fitur Baru
FragmentScenariosekarang mendukung penyetelan status Siklus proses awalCREATED,STARTED, atauRESUMEDdaripada selalu memindahkan Fragmen keRESUMED. (b/159662750)- Menambahkan alternatif ke API
FragmentScenariodarionFragmentdalam bentuk metode ekstensi reifikasi KotlinwithFragmentyang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu. (b/158697631)
Perubahan Perilaku
FragmentScenariosekarang menggunakansetMaxLifecycle()untuk mengimplementasikanmoveToState(), memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya. (b/156527405)SavedStateRegistryOwneryang dikembalikan olehViewTreeSavedStateRegistryOwnersekarang terikat dengan Siklus proses tampilan fragmen. Hal ini memastikan statusnya disimpan dan dipulihkan secara bersamaan dengan tampilan fragmen. (b/158503763)
Perbaikan Bug
- Fragmen kini menunggu tampilan fragmen dilampirkan sebelum memanggil
ViewCompat.requestApplyInsets(), menghindari kasus saat permintaan inset dibatalkan. (b/158095749) - Kini memanggil
clearFragmentResultListenerakan menghapus observer siklus proses dengan benar. (b/159274993)
Versi 1.3.0-alpha06
10 Juni 2020
androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06, dan androidx.fragment:fragment-testing:1.3.0-alpha06 dirilis. Versi 1.3.0-alpha06 berisi commit ini.
Fitur Baru
- Callback
onAttachFragment()padaFragmentActivitydanFragmenttidak digunakan lagi.FragmentOnAttachListenerbaru telah ditambahkan untuk memberikan alternatif yang lebih fleksibel, memungkinkan delegasionAttachFragment()ke pemroses terpisah yang dapat diuji serta dukungan dalam menambahkan pemroses ke FragmentManager selain FragmentManager turunan langsung. (I06d3d)
Perbaikan Bug
- Fragmen induk memiliki status tampilan yang dipulihkan sebelum fragmen turunannya, yang memperbaiki masalah pengurutan visual setelah perubahan konfigurasi saat
DialogFragmentmenampilkanDialogFragmentlainnya sebagai fragmen turunan. (b/157195715) - Memperbaiki masalah yang menyebabkan pemeriksaan Lint
UseRequireInsteadOfGettidak menangani penggunaan berantai dari operator?.dan!!dengan benar. (b/157677616)
Versi 1.3.0-alpha05
20 Mei 2020
androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05, dan androidx.fragment:fragment-testing:1.3.0-alpha05 dirilis. Versi 1.3.0-alpha05 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk
ViewTreeViewModelStoreOwnerdari Lifecycle2.3.0-alpha03, danViewTreeSavedStateRegistryOwnerdari SavedState1.1.0-alpha01saat menggunakanViewdalamFragment. (aosp/1297993, aosp/1300264)
Perubahan API
- API
setFragmentResult()dansetFragmentResultListener()kini menggunakanFragmentResultListenerdanBundlenon-null secara berurutan. Untuk menghapus pemroses atau hasil yang ditetapkan sebelumnya secara eksplisit, gunakan metodeclearFragmentResult()danclearFragmentResultListener()baru. (b/155416778) - Ekstensi Kotlin
setFragmentResultListener()yang menggunakan lambda kini ditandai sebagaiinline. (b/155323404)
Perubahan Perilaku
startActivityForResult(),startIntentSenderForResult(), danrequestPermissionsyang sebelumnya tidak digunakan lagi diFragmentkini menggunakanActivityResultRegistrysecara internal, sehingga menghapus batasan pada penggunaan khusus bit yang lebih rendah (di bawah0xFFFF) untuk kode permintaan Anda saat menggunakan API tersebut. (b/155518741)
Pembaruan Dokumentasi
- Memperluas dokumentasi pada konstruktor
Fragment(@LayoutRes int)danDialogFragment(@LayoutRes int)untuk mengklarifikasi bahwa keduanya harus dipanggil dari konstruktor tanpa argumen subclass Anda saat menggunakanFragmentFactorydefault. (b/153042497)
Versi 1.3.0-alpha04
29 April 2020
androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04, dan androidx.fragment:fragment-testing:1.3.0-alpha04 dirilis. Versi 1.3.0-alpha04 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk meneruskan hasil antara dua Fragment melalui API baru di
FragmentManager. Ini berfungsi untuk fragmen hierarki (induk/turunan), DialogFragments, dan fragmen di Navigation, serta memastikan bahwa hasil tersebut hanya akan dikirim ke Fragment Anda saat Fragment setidaknya sedangSTARTED. (b/149787344)
Perubahan API
- API fragmen target tidak digunakan lagi. Untuk meneruskan data antarfragmen, Fragment Result API baru harus digunakan. (b/149787344)
startActivityForResult()/onActivityResult()API danrequestPermissions()/onRequestPermissionsResult()API pada Fragmen tidak digunakan lagi. Harap gunakan Activity Result API. (aosp/1290887)- Perubahan yang dapat menyebabkan gangguan dari Activity
1.2.0-alpha04: metodeprepareCall()telah diganti namanya menjadiregisterForActivityResult(). (aosp/1278717)
Perbaikan Bug
getViewLifecycleOwner()fragmen kini dihentikan sebelumonSaveInstanceState()dipanggil, yang mencerminkan perilaku siklus proses fragmen tersebut. (b/154645875)- Memanggil
setMenuVisibility(false)pada fragmen kini akan mengubah visibilitas menu yang disediakan oleh fragmen turunannya dengan benar. (b/153593580) - Memperbaiki
illegalStateExceptionsaat menambahkan fragmen ke hierarki tampilanDialogFragmentdenganFragmentContainerView. (b/154366601) - Metode
getDefaultViewModelProviderFactory()pada fragmen tidak lagi mengalami error saat menghosting fragmen Anda di luar aktivitas. (b/153762914)
Versi 1.3.0-alpha03
1 April 2020
androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03, dan androidx.fragment:fragment-testing:1.3.0-alpha03 dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perubahan API
- Metode
prepareCalldiFragmentkini menjadifinal. (b/152439361)
Perbaikan Bug
- Memperbaiki regresi yang diperkenalkan di Fragment
1.3.0-alpha02saat menggunakanBottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - Memperbaiki error saat menggunakan
prepareCalldari suatu fragmen setelah perubahan konfigurasi. (b/152137004) - Memperbaiki masalah saat elemen bersama dan transisi keluar diabaikan saat menggunakan
setTargetFragment(). (b/152023196) - Dari Fragmen
1.2.4: Memperbarui aturan Fragment ProGuard untuk memungkinkan obfuscation fragmen yang dipertahankan. (b/151605338) - Dari Fragmen
1.2.4: Menonaktifkan aturan LintFragmentLiveDataObservepada classDialogFragmentkarena siklus proses dan siklus proses tampilan mereka selalu sinkron, sehingga membuatthisatauviewLifecycleOwneraman digunakan saat memanggilobserve. (b/151765086)
Perubahan Dependensi
- Fragment bergantung pada Activity
1.2.0-alpha03, yang memiliki peningkatan signifikan pada Activity Result API yang diperkenalkan dalam Activity1.2.0-alpha02.
Versi 1.3.0-alpha02
18 Maret 2020
androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02, dan androidx.fragment:fragment-testing:1.3.0-alpha02 dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk
ActivityResultRegistryAPI yang diperkenalkan di Activity1.2.0-alpha02untuk menanganistartActivityForResult()+onActivityResult()serta flowrequestPermissions()+onRequestPermissionsResult()tanpa mengganti metode di Fragment Anda selain menyediakan hook untuk menguji flow ini. Lihat Mendapatkan Hasil dari Activity terbaru. (b/125158199)
Perubahan API
DialogFragmentkini menyediakan konstruktor yang mengambil@LayoutResyang menunjukkan tata letak dan harus di-inflate secara default olehonCreateView(). (b/150327080)- Metode
onActivityCreated()kini tidak digunakan lagi. Kode yang menyentuh tampilan fragmen harus dilakukan dionViewCreated()(yang dipanggil tepat sebelumonActivityCreated()) dan kode inisialisasi lainnya harus berada dionCreate(). Untuk menerima callback secara khusus saatonCreate()aktivitas selesai,LifeCycleObserverharus terdaftar diLifecycleaktivitas dionAttach(), dan dihapus setelah callbackonCreate()diterima. (b/144309266)
Perbaikan Bug
- Dari Fragmen
1.2.3: Memperbaiki bug diDialogFragmentyang menyebabkanStackOverflowErrorsaat memanggilgetLayoutInflater()dari dalamonCreateDialog(). (b/117894767, aosp/1258664) - Dari Fragmen
1.2.3: Mengurangi cakupan aturan ProGuard yang disertakan dalam Fragmen untuk memastikan bahwa class Fragmen yang tidak digunakan dapat dihilangkan. (b/149665169) - Dari Fragmen
1.2.3: Memperbaiki positif palsu (PP) pada pemeriksaan LintUseRequireInsteadOfGetsaat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163) - Dari Fragmen
1.2.3:FragmentContainerViewtidak lagi melemparkanUnsupportedOperationExceptionuntuk menggunakan konstruktor yang salah dalam pratinjau tata letak. (b/149707833)
Masalah Umum
BottomSheetDialogFragmenttidak lagi menempatkan dialognya dengan benar di layar. (b/151652127)
Versi 1.3.0-alpha01
4 Maret 2020
androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01, dan androidx.fragment:fragment-testing:1.3.0-alpha01 dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk API
ViewTreeLifecycleOwner.get(View)yang ditambahkan di Lifecycle2.3.0-alpha01sehingga API menampilkanviewLifecycleOwnerFragmen sebagaiLifecycleOwneruntuk semua View yang dikembalikan olehonCreateView(). (aosp/1182955)
Perubahan API
- Metode
setRetainInstance()pada Fragmen tidak digunakan lagi. Dengan diperkenalkannya ViewModels, developer memiliki API tertentu untuk mempertahankan status yang dapat dihubungkan dengan grafik Activity, Fragment, dan Navigation. Hal ini memungkinkan developer menggunakan Fragment normal yang tidak dipertahankan, dan mempertahankan status tertentu yang ingin dipertahankan untuk tetap terpisah, yang menghindari sumber kebocoran umum sekaligus mempertahankan properti berguna dari satu pembuatan dan penghentian status yang dipertahankan (yaitu, konstruktorViewModeldan callbackonCleared()yang diterimanya). (b/143911815) - Dengan dirilisnya ViewPager2
1.0.0, classFragmentPagerAdapterdanFragmentStatePagerAdapteruntuk berinteraksi denganViewPagertidak digunakan lagi. Baca Bermigrasi dari ViewPager ke ViewPager2. (b/145132715)
Perbaikan Bug
- Aturan Fragment ProGuard kini hanya mempertahankan class
Fragmentkonstruktor default yang digunakan dengan benar, bukan untuk semua instanceFragment, yang memperbaiki regresi yang diperkenalkan dalam Fragment1.2.1. (b/149665169 - Aturan Lint
require___()yang ditambahkan dalam Fragmen1.2.2tidak lagi positif palsu (PP) pada variabel lokal yang menggunakan nama yang sama seperti nama properti Kotlin yang dibayangi (yakni,view). (b/149891163) FragmentContainerViewtidak lagi melemparkanUnsupportedOperationExceptionketika menggunakan pratinjau tata letak di Android Studio. (b/149707833)- Memperbaiki masalah ketika fragmen yang dipertahankan dan ditambahkan setelah statusnya disimpan tidak akan dibuat ulang terus-menerus kemudian dihapus setelah masing-masing perubahan konfigurasi. (b/145832397)
Versi 1.2.5
Versi 1.2.5
10 Juni 2020
androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5, dan androidx.fragment:fragment-testing:1.2.5 dirilis. Versi 1.2.5 berisi commit ini.
Perbaikan Bug
getViewLifecycleOwner()fragmen kini dihentikan sebelumonSaveInstanceState()dipanggil, yang mencerminkan perilaku siklus proses fragmen tersebut. Ini sebelumnya dirilis di Fragment1.3.0-alpha04. (b/154645875)- Memanggil
setMenuVisibility(false)pada fragmen kini akan mengubah visibilitas menu yang disediakan oleh fragmen turunannya dengan benar. Ini sebelumnya dirilis di Fragment1.3.0-alpha04. (b/153593580)
Versi 1.2.4
Versi 1.2.4
1 April 2020
androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4, dan androidx.fragment:fragment-testing:1.2.4 dirilis. Versi 1.2.4 berisi commit ini.
Perbaikan Bug
- Memperbarui aturan Fragment ProGuard untuk memungkinkan obfuscation fragmen yang dipertahankan. (b/151605338)
- Menonaktifkan aturan Lint
FragmentLiveDataObservepada classDialogFragmentkarena siklus proses dan siklus proses tampilannya selalu disinkronkan, sehinggathismaupunviewLifecycleOwneraman untuk digunakan saat memanggilobserve. (b/151765086)
Versi 1.2.3
Versi 1.2.3
18 Maret 2020
androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3, dan androidx.fragment:fragment-testing:1.2.3 dirilis. Versi 1.2.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug dalam
DialogFragmentyang menyebabkanStackOverflowErrorsaat memanggilgetLayoutInflater()dari dalamonCreateDialog(). (b/117894767, aosp/1258665) - Mengurangi cakupan aturan ProGuard yang disertakan pada Fragment untuk memastikan bahwa class Fragment yang tidak digunakan dapat dihilangkan. (b/149665169)
- Memperbaiki positif palsu (PP) dalam pemeriksaan Lint
UseRequireInsteadOfGetsaat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163) FragmentContainerViewtidak lagi melemparkanUnsupportedOperationExceptionuntuk menggunakan konstruktor yang salah dalam pratinjau tata letak. (b/149707833)
Versi 1.2.2
Versi 1.2.2
19 Februari 2020
androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2, dan androidx.fragment:fragment-testing:1.2.2 dirilis. Versi 1.2.2 berisi commit ini.
Pemeriksaan Lint baru
- Lint menyarankan penggunaan
viewLifecycleOwnersebagaiLifecycleOwneruntuk memanggilOnBackPressedDispatcherdalamonCreateView(),onViewCreated(), danonActivityCreated(). (b/142117657) - Menambahkan pemeriksaan Lint baru yang mengonfirmasi bahwa Anda menggunakan
debugImplementationyang benar saat menggunakan artefakfragment-testing. (b/141500106) - Fragmen kini menyarankan penggunaan metode
require___()terkait untuk pesan error yang lebih deskriptif, bukancheckNotNull(get___()),requireNonNull(get___()), atauget___()!!untuk semua Fragment API yang menyertakangetdanrequireyang setara. (aosp/1202883)
Perbaikan Bug
- Memperbaiki file Fragment ProGuard untuk menghindari peringatan R8 (b/148963981)
- Meningkatkan pemeriksaan Lint yang ada yang menyarankan penggunaan
viewLifecycleOwnersaat menggunakanobserveuntuk menangani versi metode ekstensilivedata-ktxdariobserve. (b/148996309) - Memperbaiki pemformatan untuk banyak pemeriksaan Lint (aosp/1157012)
Kontribusi eksternal
- Terima kasih kepada Zac Sweers yang telah berkontribusi dalam pemeriksaan Lint
require___()atas nama Slack. (aosp/1202883)
Versi 1.2.1
Versi 1.2.1
5 Februari 2020
androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1, dan androidx.fragment:fragment-testing:1.2.1 dirilis. Versi 1.2.1 berisi commit ini.
Perbaikan bug
- Fragmen yang ditambahkan melalui metode
adddanreplaceyang menggunakan instanceClass(atau versi reifikasi Kotlin) kini memiliki konstruktor default yang dipertahankan oleh ProGuard. (b/148181315) FragmentStatePagerAdapterdanFragmentPagerAdaptertidak lagi mengambil pengecualian yang dilemparkan olehFragmentManagersaat menjalankanfinishUpdate(). (aosp/1208711)- Memperbaiki masalah ketika
FragmentManager.findFragment()tidak berfungsi dengan fragmen yang ditambahkan melalui tag<fragment>. (b/147784323) - Fragmen yang di-inflate menggunakan tag
<fragment>kini selalu menerima panggilan keonInflate()sebelumonCreate()saat berada di tata letak. (aosp/1215856) - Memanggil
toString()pada instanceFragmentManagertidak lagi melemparkanNullPointerExceptionsaat Activity telah dihapus. (b/148189412)
Perubahan dependensi
- Fragmen
1.2.1kini bergantung pada Lifecycle ViewModel SavedState2.2.0.
Versi 1.2.0
Versi 1.2.0
22 Januari 2020
androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0, dan androidx.fragment:fragment-testing:1.2.0 dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
- FragmentContainerView:
FragmentContainerViewadalah container yang sangat disarankan untuk Fragmen yang ditambahkan secara dinamis, menggantikan penggunaanFrameLayoutatau tata letak lainnya. Penampung ini juga mendukungclass,android:nameyang sama, danandroid:tagopsional sebagai tag<fragment>, tetapi menggunakanFragmentTransactionnormal untuk menambahkan fragmen awal ini, sebagai pengganti jalur kode khusus yang digunakan oleh<fragment>. - Pengaturan waktu
onDestroyView(): Fragmen sekarang akan menunggu selesainya animasi keluar, transisi framework keluar, dan transisi AndroidX keluar (saat menggunakan Transition1.3.0) sebelum memanggilonDestroyView(). add()danreplace()berbasis class: Menambahkan overloadadd()danreplace()baru diFragmentTransactionyang menggunakanClass<? extends Fragment>danBundleargumen opsional. Metode ini menggunakanFragmentFactoryAnda untuk membuat instance Fragment yang akan ditambahkan. Ekstensi kotlin yang menggunakan jenis reified (misalnya,fragmentTransaction.replace<YourFragment>(R.id.container)) juga telah ditambahkan kefragment-ktx.- Integrasi Lifecycle ViewModel SavedState:
SavedStateViewModelFactorysekarang menjadi setelan pabrik default yang digunakan saat menggunakanby viewModels(),by activityViewModels(), konstruktorViewModelProvider, atauViewModelProviders.of()dengan Fragmen. - Pemeriksaan Lint baru: Menambahkan pemeriksaan Lint baru yang memastikan Anda menggunakan
getViewLifecycleOwner()saat mengamatiLiveDatadarionCreateView(),onViewCreated(), atauonActivityCreated(). - Penghentian
getFragmentManager(): MetodegetFragmentManager()danrequireFragmentManager()di Fragment sudah tidak digunakan lagi dan diganti dengan metodegetParentFragmentManager()tunggal, yang menampilkanFragmentManagernon-null tempat Fragment ditambahkan (Anda dapat menggunakanisAdded()untuk menentukan apakah metode tersebut aman untuk dipanggil). - Penghentian
FragmentManager.enableDebugLogging(): MetodeFragmentManager.enableDebugLoggingstatis sudah tidak digunakan lagi. FragmentManager sekarang mengikutiLog.isLoggable()untuk tagFragmentManager, memungkinkan Anda mengaktifkan loggingDEBUGatauVERBOSEtanpa mengompilasi ulang aplikasi.
Masalah Umum
- Fragmen yang hanya direferensikan melalui atribut
classatauandroid:namepadaFragmentContainerViewtidak otomatis disimpan oleh ProGuard, sehingga Anda harus menambahkan aturan secara manual untuk mempertahankan setiap class fragmen. (b/142601969) - Saat menambahkan
NavHostFragmentmenggunakanclassatauandroid:namedalam XML denganFragmentContainerView, Anda tidak dapat menggunakanfindNavController()dalamonCreate()Aktivitas Anda. (b/142847973)
Versi 1.2.0-rc05
8 Januari 2020
androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05, dan androidx.fragment:fragment-testing:1.2.0-rc05 dirilis. Versi 1.2.0-rc05 berisi commit ini.
Perbaikan bug
- Memperbaiki regresi di Fragmen
1.2.0-rc04saat menggunakan tag<fragment>yang menyebabkanonViewCreated()dipanggil dengan tidak benar selama penghapusan aktivitas. (b/146290333) - Fragmen yang ditambahkan dengan tag
<fragment>sekarang non-config-nya dihapus dengan benar meskipun jarang berada dalam tata letak (misalnya, hanya dalam tata letak lanskap). Karenanya, Fragmen ini sekarang dipindahkan keCREATEDdengan benar meskipun saat tidak berada dalam tata letak Anda, bukan digunakan, tetapi tidak pernah bergerak melalui metode siklus proses apa pun. (b/145769287)
Versi 1.2.0-rc04
18 Desember 2019
androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04, dan androidx.fragment:fragment-testing:1.2.0-rc04 dirilis. Versi 1.2.0-rc04 berisi commit ini.
Perbaikan bug
- Menyesuaikan animasi untuk
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, danTRANSIT_FRAGMENT_FADEguna menghindari masalah visual. (b/145468417)
Versi 1.2.0-rc03
4 Desember 2019
androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03, dan androidx.fragment:fragment-testing:1.2.0-rc03 dirilis. Versi 1.2.0-rc03 berisi commit ini.
Perbaikan bug
- Memperbaiki perubahan perilaku yang tidak disengaja ketika Fragmen yang telah dihapus masih ditampilkan oleh
findFragmentById()/findFragmentByTag()saat animasi/transisi keluar berjalan. (b/143982969, aosp/1167585) - Fragmen turunan kini dihentikan dengan benar sebelum induknya saat aktivitas yang memuatnya memanggil
onSaveInstanceState(). (b/144380645) - Memperbaiki masalah ketika Views salah ditandai dengan
INVISIBLEsetelah Fragment tersembunyi muncul. (b/70793925) - Transisi elemen bersama fragmen kini menangani Views yang telah diputar, diskalakan, dll. (b/142835261)
Pembaruan Dokumentasi
- Mengklarifikasi dokumentasi penghentian di sekitar
setUserVisibleHint(). (b/143897055) - Meningkatkan dokumentasi pada
setFragmentFactory()dangetFragmentFactory()untuk menunjukkan dengan lebih baik bahwa dengan menetapkanFragmentFactoryjuga akan memengaruhi FragmentManagers turunan. (aosp/1170095)
Perubahan dependensi
- Fragmen kini bergantung pada Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, dan Activity1.1.0-rc03.
Versi 1.2.0-rc02
7 November 2019
androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02, dan androidx.fragment:fragment-testing:1.2.0-rc02 dirilis. Versi 1.2.0-rc02 berisi commit ini.
Perbaikan bug
- Saat menggunakan Kotlin, LintFix untuk menggunakan
getViewLifecycleOwner()saat mengamatiLiveDatadarionCreateView(),onViewCreated(), atauonActivityCreated()(diperkenalkan dalam Fragmen1.2.0-rc01) sekarang menggunakan sintaksis akses properti KotlinviewLifecycleOwner, bukangetViewLifecycleOwner(). (aosp/1143821)
Versi 1.2.0-rc01
23 Oktober 2019
androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01, dan androidx.fragment:fragment-testing:1.2.0-rc01 dirilis. Versi 1.2.0-rc01 berisi commit ini.
Fitur baru
FragmentContainerViewkini mendukung atributclassselainandroid:name, mencerminkan fungsi tag<fragment>. (b/142722242)- Menambahkan pemeriksaan Lint baru yang memastikan Anda menggunakan
getViewLifecycleOwner()saat mengamatiLiveDatadarionCreateView(),onViewCreated(), atauonActivityCreated(). (b/137122478)
Perbaikan bug
- Callback
onDismissdanonCancelpadaDialogFragmentsekarang menjamin bahwaDialogInterfaceyang diteruskan ke callback tersebut bukanlah null dan bahwagetDialog()menampilkan non-null saat dijalankan. (b/141974033) FragmentContainerViewkini menambahkan Fragment yang ditentukan olehclassatauandroid:namesebagai bagian dari perluasan, memastikan bahwafindFragmentById()danfindFragmentByTag()bekerja secara langsung setelahnya. (b/142520327)- Memperbaiki
IllegalStateExceptiondalamFragmentContainerViewdikarenakan status sedang disimpan. (b/142580713) - Memperbaiki
UnsupportedOperationExceptiondalamFragmentContainerViewketika obfuscation dilakukan pada classFragmentContainerView. (b/142657034)
Masalah umum
- Fragmen yang hanya direferensikan melalui atribut
classatauandroid:namepadaFragmentContainerViewtidak otomatis disimpan oleh ProGuard, sehingga Anda harus menambahkan aturan secara manual untuk mempertahankan setiap class fragmen. Kami telah menonaktifkan aturan Lint dan menyarankan Anda untuk beralih keFragmentContainerViewsampai hal ini diperbaiki melaluiaapt2. (b/142601969)
Versi 1.2.0-beta02
11 Oktober 2019
androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02, dan androidx.fragment:fragment-testing:1.2.0-beta02 dirilis. Versi 1.2.0-beta02 berisi commit ini.
Perbaikan bug
- Memperbaiki masalah yang menyebabkan
onInflate()Fragmen tidak menerima atribut yang tepat dariFragmentContainerView, melanggar kasus sepertiNavHostFragment. (b/142421837)
Versi 1.2.0-beta01
9 Oktober 2019
androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01, dan androidx.fragment:fragment-testing:1.2.0-beta01 dirilis. Versi 1.2.0-beta01 berisi commit ini.
Fitur baru
FragmentContainerViewmenambahkan dukungan untuk menambahkan fragmen awal dengan dukungan tambahan bagiandroid:namedan atribut XMLandroid:tagopsional. Tidak seperti tag<fragment>,FragmentContainerViewmenggunakanFragmentTransactionnormal di balik layar untuk menambahkan fragmen awal, memungkinkan operasiFragmentTransactionlebih lanjut padaFragmentContainerViewdan memungkinkan penggunaan View Binding untuk tata letak. (b/139830628, b/141177981)- Fragmen kini berisi peringatan Lint yang menawarkan perbaikan cepat untuk mengganti
<fragment>denganFragmentContainerView. (b/139830056)
Perbaikan bug
- Memperbaiki
ClassCastExceptionsaat menggunakanandroidx.transition. (b/140680619) - Saat menggunakan Transition
1.3.0-beta01, Fragment kini akan menunggu transisiandroidx.transition(selain transisi framework dan animasi, yang masing-masing telah diperbaiki dalam Fragment1.2.0-alpha03dan Fragment1.2.0-alpha02) selesai sebelum mengirimonDestroyView(). (aosp/1119841) - Saat menggunakan Transition
1.3.0-beta01, Fragmen kini membatalkan transisiandroidx.transitiondengan benar sebelum memulai transisi/animasi baru pada penampung yang sama. (aosp/1119841) - Memperbaiki masalah pada API 17 dan yang lebih lama saat menggunakan transisi
androidx.transitionpada tampilan root Fragmen ketika menggunakanFragmentContainerView. (b/140361893) - Artefak
fragment-testingkini bergantung pada AndroidX Test1.2.0, yang memperbaiki inkompatibilitas dengan Espresso 3.2.0 terbaru. (b/139100149) - Menghapus penggunaan
Log.wdalam FragmentManager. (aosp/1126468)
Masalah umum
onInflate()Fragmen tidak menerima atribut yang sesuai dariFragmentContainerView, sehingga melanggar kasus sepertiNavHostFragment. (b/142421837)
Versi 1.2.0-alpha04
18 September 2019
androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04, dan androidx.fragment:fragment-testing:1.2.0-alpha04 dirilis. Versi 1.2.0-alpha04 berisi commit ini.
Perubahan API
- Metode
getFragmentManager()danrequireFragmentManager()padaFragmentsudah tidak digunakan lagi dan diganti dengan metodegetParentFragmentManager()tunggal, yang menampilkanFragmentManagernon-null tempat Fragment ditambahkan (Anda dapat menggunakanisAdded()untuk menentukan apakah metode tersebut aman untuk dipanggil). (b/140574496) - Metode
FragmentManager.enableDebugLoggingstatis kini sudah tidak digunakan lagi. FragmentManager sekarang mengikutiLog.isLoggable()untuk tagFragmentManager, yang memungkinkan Anda mengaktifkan loggingDEBUGatauVERBOSEtanpa mengompilasi ulang aplikasi. (aosp/1116591)
Perbaikan bug
- Fragmen kini dihancurkan dengan benar saat animasi keluar pada fragmen lainnya sedang berjalan. (b/140574199)
- Memperbaiki masalah Fragmen yang memanggil
Activity.findViewById(), padahal sebelumnya tidak. (aosp/1116431)
Versi 1.2.0-alpha03
5 September 2019
androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03, dan androidx.fragment:fragment-testing:1.2.0-alpha03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
FragmentContainerViewsekarang menjadifinal. (b/140133091)
Perbaikan bug
FragmentContainerViewkini membalik urutan penggambaran dengan benar saat memunculkan fragmen dari data sebelumnya. (b/139104187)- Memperbaiki masalah ketika animasi yang salah dijalankan saat memunculkan fragmen dan menambahkan fragmen baru dilakukan secara bersamaan. (b/111659726)
- Fragmen kini akan menunggu hingga transisi (selain animasi, yang telah diperbaiki dalam Fragmen
1.2.0-alpha02) selesai sebelum mengirimkanonDestroyView(). (b/138741697)
Versi 1.2.0-alpha02
7 Agustus 2019
androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02, dan androidx.fragment:fragment-testing:11.2.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
SavedStateViewModelFactorykini menjadi setelan pabrik default saat menggunakanby viewModels(),by activityViewModels(), konstruktorViewModelProvider, atauViewModelProviders.of()denganFragment. (b/135716331)- Animasi default saat menggunakan
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEdengansetTransitiondiFragmentTransactiontelah diupdate agar sesuai dengan animasi yang digunakan oleh aktivitas di perangkat Android 10. (aosp/1012812, aosp/1014730)
Perubahan API
- Memperkenalkan
FragmentContainerViewsebagai penampung yang sangat direkomendasikan untuk Fragmen yang ditambahkan secara dinamis, menggantikan penggunaanFrameLayout, dll. karena dapat memperbaiki masalah pengurutan-z animasi dan inset jendela yang dikirim ke Fragmen. (b/37036000, aosp/985243, b/136494650) - Menambahkan metode
FragmentManager.findFragment(View)statis untuk mengambil Fragmen yang memuatnya dari tampilan yang diperluas oleh suatu fragmen. Ekstensi Kotlin juga tersedia difragment-ktx. (aosp/1090757) - Menambahkan overload baru dari
add()danreplace()padaFragmentTransactionyang menggunakanClass<? extends Fragment>danBundleopsional argumen. Metode ini menggunakanFragmentFactoryAnda untuk membuat instance Fragment yang akan ditambahkan. Ekstensi Kotlin yang menggunakan jenis reified (yaitufragmentTransaction.replace<YourFragment>(R.id.container)) juga telah ditambahkan kefragment-ktx. (b/126124987) - Anotasi
@MainThreadtelah ditambahkan ke callback siklus prosesFragment. (b/127272564) - API yang terkait dengan judul breadcrumb pada
FragmentTransactiondanFragmentManager.BackStackEntrykini sudah tidak digunakan lagi. (b/138252944) - Metode
setTransitionStylepadaFragmentTransactiontidak digunakan lagi. (aosp/1011537) - Banyak metode dalam
FragmentManagerkini sudah tidak lagiabstract.FragmentManagersendiri tetapabstractdan tidak boleh langsung dipakai atau diperluas; Anda hanya boleh melanjutkan untuk mendapatkan instance yang sudah ada darigetSupportFragmentManager(),getChildFragmentManager(), dll.
Perbaikan bug
- Dari Fragmen
1.1.0-rc04: Fragmen sekarang membatalkan dengan benar transisi yang ditunda pada Fragmen yang telah ditampilkan. (b/138251858) - Dari Fragmen
1.1.0-rc03: Memperbaiki masalah ketika memanggilpostponeEnterTransition()dengan waktu tunggu lebih dari sekali tidak membatalkan waktu tunggu sebelumnya. (b/137797118) - Dari Fragmen
1.1.0-rc02: Memperbaiki error diFragmentPagerAdapterdanFragmentStatePagerAdaptersaat menghapus item saat ini. (b/137209870) - Fragmen kini akan menunggu hingga animasi selesai sebelum mengirim
onDestroyView(). (b/136110528) - Animasi Fragmen dari fragmen turunan dan turunannya kini ditangani dengan benar saat menganimasikan Fragmen induk. (b/116675313)
- Memperbaiki
NullPointerExceptionsaat menggunakan transisi elemen bersama dan menggabungkan operasi pop dan add. (b/120507394) - Menambahkan solusi ke
IllegalStateExceptionsaat menggunakanFragmentPagerAdapterdanFragmentStatePagerAdapterdalam pengujian Robolectric. (b/137201343)
Versi 1.2.0-alpha01
2 Juli 2019
androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01, dan androidx.fragment:fragment-testing:1.2.0-alpha01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- FragmentManager kini akan memanggil
requestApplyInsets()setelah mengaitkan tampilan Fragmen dan secara langsung sebelum memanggilonViewCreated(), memastikan bahwa tampilan Anda selalu memiliki inset yang benar. (b/135945162)
Perbaikan bug
- Memperbaiki
NullPointerExceptionsaat memunculkanFragmentTransactionyang menggunakansetPrimaryNavigationFragment()sebelumreplace(). (b/134673465)
Versi 1.1.0
Versi 1.1.0
5 September 2019
androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0, dan androidx.fragment:fragment-testing:1.1.0 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan Penting sejak versi 1.0.0
- fragment-testing: Artefak
fragment-testingmenyediakan classFragmentScenariountuk menguji fragmen dalam isolasi. Lihat dokumentasi Menguji fragmen aplikasi Anda untuk detail selengkapnya. - FragmentFactory: Anda kini dapat menetapkan
FragmentFactorypadaFragmentManageruntuk mengelola pembuatan instance fragmen, menghapus persyaratan ketat untuk memiliki konstruktor tanpa argumen. - Delegasi Properti Kotlin untuk ViewModels: Artefak
fragment-ktxsekarang berisi dua delegasi properti Kotlin:by viewModels()untuk mengakses ViewModels yang terkait dengan fragmen individual, danby activityViewModels()untuk mengakses ViewModels yang disesuaikan cakupannya dengan aktivitas. - Siklus Proses Maks: Anda kini dapat menetapkan status Siklus Proses maksimum untuk sebuah Fragment dengan memanggil
setMaxLifecycle()padaFragmentTransaction. Siklus proses ini menggantikansetUserVisibleHint()yang sudah tidak digunakan lagi.FragmentPagerAdapterdanFragmentStatePagerAdaptermemiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru. - Konstruktor LayoutId FragmentActivity: Subclass
FragmentActivitykini dapat secara opsional memanggil konstruktor padaFragmentActivityyang membutuhkan IDR.layout, dan menunjukkan tata letak yang harus ditetapkan sebagai tampilan konten, sebagai alternatif untuk memanggilsetContentView()dionCreate(). Perubahan ini tidak mengubah persyaratan bahwa subclass Anda memiliki konstruktor tanpa argumen. - Konstruktor LayoutId Fragment: Subclass
Fragmentkini dapat secara opsional memanggil konstruktor padaFragmentyang menggunakan IDR.layout, dan menunjukkan tata letak yang harus digunakan untuk fragmen ini sebagai alternatif untuk menggantikanonCreateView(). Tata letak yang diperluas dapat dikonfigurasi dionViewCreated(). - Menunda dengan waktu tunggu: Overload baru dari
postponeEnterTransition()telah ditambahkan, yang akan memerlukan waktu tunggu.
Versi 1.1.0-rc04
7 Agustus 2019
androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04, dan androidx.fragment:fragment-testing:1.1.0-rc04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Sekarang Fragment membatalkan dengan benar transisi yang ditunda pada Fragment yang dimunculkan. (b/138251858)
Versi 1.1.0-rc03
19 Juli 2019
androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03, dan androidx.fragment:fragment-testing:1.1.0-rc03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Memperbaiki masalah ketika memanggil
postponeEnterTransition()dengan waktu tunggu lebih dari sekali tidak membatalkan waktu tunggu sebelumnya. (b/137797118)
Versi 1.1.0-rc02
17 Juli 2019
androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02, dan androidx.fragment-testing:fragment:1.1.0-rc02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Memperbaiki error dalam
FragmentPagerAdapterdanFragmentStatePagerAdaptersaat menghapus item saat ini. (b/137209870)
Versi 1.1.0-rc01
2 Juli 2019
androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01, dan androidx.fragment:fragment-testing:1.1.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Fragmen kini diupdate visibilitasnya dengan benar ketika menggunakan operasi
show()atauhide()saat transisi berjalan. (b/133385058) - Memperbaiki
NullPointerExceptionsaat memunculkanFragmentTransactionyang menggunakansetPrimaryNavigationFragment()sebelumreplace(). (b/134673465)
Versi 1.1.0-beta01
5 Juni 2019
androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01, dan androidx.fragment:fragment-testing:1.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Callback
androidx.lifecycle.Lifecycle(khususnya yang terkait denganSTARTED,RESUMED,PAUSED,STOPPED, danDESTROYED) untuk Fragmen bertingkat kini disarangkan dengan benar. (b/133497591) - Instance
OnBackPressedCallbackyang terdaftar dalamonCreate()Fragmen sekarang diutamakan secara lebih baik dari FragmentManager turunan. (b/133175997) - Fragmen turunan tidak lagi dianimasikan saat fragmen induknya sedang diganti. (b/121017790)
- Animasi dan transisi Fragmen kini diabaikan saat menggunakan
animateLayoutChanges="true", memperbaiki masalah ketika Fragmen tidak dihancurkan dengan semestinya. (b/116257087)
Versi 1.1.0-alpha09
16 Mei 2019
androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09, dan androidx.fragment:fragment-testing:1.1.0-alpha09 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
- Fragmen kini menerima callback ke metode
onPrimaryNavigationFragmentChanged(boolean)baru ketika fragmen navigasi utama berubah. aosp/960857
Perbaikan bug
- Item Menu yang diluaskan oleh Fragment turunan sekarang dihapus dengan benar ketika Fragment Induk dihapus. b/131581013
Versi 1.1.0-alpha08
7 Mei 2019
androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08, dan androidx.fragment:fragment-testing:1.1.0-alpha08 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Rilis ini tidak kompatibel dengan Preferences 1.1.0-alpha01 hingga 1.1.0-alpha04. Lakukan upgrade ke Preferences 1.1.0-alpha05 saat menggunakan Fragment versi ini.
Fitur baru
- Menambahkan overload baru
postponeEnterTransition()yang memerlukan waktu tunggu, yang setelahnya Fragmen akan memanggilstartPostponedEnterTransition()secara otomatis b/120803208
Perubahan API
- Perubahan yang dapat menyebabkan gangguan: metode
FragmentFactoryinstantiateyang sebelumnya tidak digunakan lagi yang menggunakanBundletelah dihapus. aosp/953856 - Perubahan yang dapat menyebabkan gangguan: Konstanta
RESUME_ONLY_CURRENT_FRAGMENTdanUSE_SET_USER_VISIBLE_HINTdalamFragmentPagerAdapterdanFragmentStatePagerAdaptermasing-masing telah diganti namanya menjadiBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTdanBEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782
Perbaikan bug
- Fragmen yang siklus prosesnya telah dibatasi melalui
setMaxLifecycle()tidak lagi dilanjutkan sebelum mencapai status akhirnya. b/131557151 - Saat menggunakan
setMaxLifecycle(Lifecycle.State.CREATED), tampilan Fragmen akan dihancurkan dengan benar. aosp/954180
Versi 1.1.0-alpha07
25 April 2019
androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07, dan androidx.fragment:fragment-testing:1.1.0-alpha07 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Anda kini dapat menetapkan status Siklus Proses maksimal untuk sebuah Fragmen dengan memanggil
setMaxLifecycle()padaFragmentTransaction. Siklus proses ini menggantikansetUserVisibleHint()yang sudah tidak digunakan lagi.FragmentPagerAdapterdanFragmentStatePagerAdaptermemiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru. (b/129780800)
Perubahan API
moveToState(STARTED)padaFragmentScenariosekarang hanya dapat dipanggil di perangkat API 24+. (b/129880016)
Perubahan Perilaku
- Sebagai akibat dari (b/129907905), fragmen pada data sebelumnya tidak akan mendapatkan callback ke
onCreateView()saat aktivitas yang menghosting dibuat kembali.onCreateView()sekarang hanya akan dipanggil ketika fragmen dapat dilihat (yaitu, data sebelumnya dimunculkan).
Perbaikan bug
- Memperbaiki masalah saat menggunakan tag
<fragment>dalam XML dan konstruktorcontentLayoutIddariFragmentActivityatauAppCompatActivity. (b/129907905) - Memperbaiki masalah ketika fragmen pada data sebelumnya tidak dialihkan setidaknya ke
CREATEDsetelah perubahan konfigurasi, menyebabkan ViewModels dan fragmen yang dipertahankan turunan tidak dapat dihapus dengan benar. (b/129593351) - Memperbaiki error dalam
restoreSaveStateyang disebabkan oleh pembatalan sinkronisasi fragmen yang dipertahankan setelah status instance disimpan. (b/130433793) (aosp/947824) - Memperbaiki masalah yang menyebabkan
OnBackPressedCallbackyang ditambahkan dengan siklus proses fragmen tidak dipanggil jikaFragmentManagermemiliki data sebelumnya. Lihat androidx.activity 1.0.0-alpha07 untuk detail selengkapnya. (aosp/948209) - Fragment tidak lagi memberlakukan
LAYER_TYPE_HARDWAREuntuk animasi. Tetapkan sebagai bagian dari animasi jika Anda secara khusus memerlukan animasi lapisan hardware. (b/129486478)
Versi 1.1.0-alpha06
3 April 2019
androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06, dan androidx.fragment:fragment-testing:1.1.0-alpha06 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Pengecualian yang dimunculkan oleh FragmentManager sekarang mencakup nama Fragment dalam pesan. (b/67759402)
Perubahan API
FragmentdanFragmentActivitykini memuat konstruktor kedua yang menggunakan@LayoutRes int, yang menggantikan perilaku sebelumnya untuk menganotasi class Anda dengan@ContentView. Pendekatan ini bekerja dalam modul aplikasi dan library. (b/128352521)onActivityResult()FragmentActivity sekarang ditandai dengan benar sebagai@CallSuper. (b/127971684)- Metode
instantiateFragmentFactory yang menggunakan Paket argumen kini sudah tidak digunakan lagi dan aplikasi harus menggunakan overloadinstantiatebaru yang tidak menggunakan Paket. (b/128836103) - Metode
FragmentScenariokini dianotasikan dengan benar menggunakan@StyleRes. (aosp/924193) FragmentTabHosttidak digunakan lagi. (b/127971835)getThemedContext()FragmentActivity telah dihapus. (aosp/934078)
Perbaikan bug
- Memperbaiki regresi pada 1.1.0-alpha05 yang menyebabkan Fragmen yang masuk tampak berkedip di layar. (b/129405432)
- Memperbaiki masalah saat fragmen navigasi utama akan hilang setelah serangkaian operasi popBackStack+replace+popBackStack. (b/124332597)
- Memperbaiki masalah saat menggunakan konstruktor
@ContentViewpada Aktivitas ketika memulihkan status Fragmen. (b/127313094) - Membetulkan logika
setTargetFragment()saat mengganti Fragmen target yang ada dengan Fragmen yang belum dikaitkan ke FragmentManager. (aosp/932156)
Versi 1.1.0-alpha05
13 Maret 2019
androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05, dan androidx.fragment:fragment-testing:1.1.0-alpha05 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Penelusuran anotasi
@ContentViewkini disimpan dalam cache (b/123709449)
Perubahan perilaku
- Memanggil
remove(),hide(),show(),detach(), dansetPrimaryNavigationFragment()dengan Fragmen yang dikaitkan ke FragmentManager lain kini akan menampilkanIllegalStateException, bukan gagal tanpa tanda apa pun (aosp/904301)
Perbaikan bug
onNewIntentuntukFragmentActivitysekarang ditandai dengan benar menggunakan@CallSuper(b/124120586)- Memperbaiki masalah ketika
onDismiss()dariDialogFragmentdipanggil dua kali saat menggunakangetDialog().dismiss()ataugetDialog().cancel()(b/126563750)
Versi 1.1.0-alpha04
7 Februari 2019
androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04, dan androidx.fragment:fragment-testing 1.1.0-alpha04 dirilis.
Fitur baru
- Menambahkan dukungan untuk anotasi class
@ContentViewyang memungkinkan Anda menunjukkan file XML tata letak yang harus diperluas sebagai alternatif untuk menggantikanonCreateView(). Sebaiknya lakukan pekerjaan terkait tampilan dalamonViewCreated(). (aosp/837619) fragment-testingkini bergantung padaandroidx.test:core-ktx1.1.0 stabil (b/121209673)- Anda kini dapat menggunakan
openActionBarOverflowOrOptionsMenudenganFragmentScenariountuk menguji menu opsi yang dihosting Fragmen (b/121126668)
Perubahan API
- Menambahkan metode
requireArguments()yang menampilkan@NonNull BundleatauIllegalStateException(b/121196360) - Menambahkan catatan bahwa
getLifecycle(),getViewLifecycleOwner(), dangetViewLifecycleOwnerLiveData()tidak boleh diganti dan akan dijadikan versi final dalam rilis mendatang. Silakan ajukan permintaan fitur jika saat ini Anda mengganti metode ini. (aosp/880714) - Menambahkan catatan bahwa
getViewModelStore()tidak boleh diganti dan akan dijadikan versi final dalam rilis mendatang. Silakan ajukan permintaan fitur jika saat ini Anda mengganti metode ini. (aosp/880713) - Memperbaiki masalah terkait kompatibilitas biner dalam rilis Fragmen sebelumnya. (aosp/887877) (aosp/889834)
Perbaikan bug
- Fragmen target dihapus dengan benar saat Anda meneruskan
nullkesetTargetFragment(). (aosp/849969) - Memperbaiki masalah ketika Fragmen target terkadang tidak tersedia pada saat atau setelah
onDestroy(). (b/122312935) - onDismiss() dari DialogFragment sekarang akan dipanggil sebelum
onDestroy(). (aosp/874133) (aosp/890734)
Versi 1.1.0-alpha03
17 Desember 2018
Fitur baru
- Fragmen kini akan menerapkan
BundleSavedStateRegistryOwnerdan bergantung pada library SavedState yang baru dirilis [aosp/824380] - Delegasi properti Kotlin
by activityViewModelstelah ditambahkan untuk mengambil ViewModels yang terkait dengan Aktivitas yang memuatnya [b/119050253] - Delegasi properti Kotlin
by viewModelstelah diperluas untuk menggunakan metode lambda opsional guna mendapatkanViewModelStoreOwner, yang memungkinkan Anda meneruskan Fragmen induk atauViewModelStoreOwnerkustom lainnya dengan kode sepertival viewModel: MyViewModel by viewModels(::requireParentFragment)[b/119050253]
Perubahan API
FragmentScenariokini memungkinkan Anda menentukan tema sepertiTheme.AppCompat[b/119054431]. Ini adalah perubahan yang dapat menyebabkan gangguan.- Menambahkan metode
requireView()yang menampilkan@NonNull ViewatauIllegalStateException[b/120241368] - Menambahkan metode
requireParentFragment()yang menampilkan@NonNull FragmentatauIllegalStateException[b/112103783]
Perbaikan bug
- Memperbaiki status penyimpanan IllegalStateException: Failure b/120814739
- Fragmen yang sedang dipulihkan dari status instance tersimpan sekarang akan selalu menerima
Bundlenon-null [b/119794496] - Fragment yang dihapus tidak lagi menggunakan kembali objek
Lifecyclemiliknya jika ditambahkan kembali [b/118880674]
Versi 1.1.0-alpha02
3 Desember 2018
Fitur baru
- Ekstensi Kotlin dari FragmentScenario sekarang memungkinkan Anda menggunakan lambda untuk konstruksi Fragmen sebagai alternatif dari meneruskan instance
FragmentFactory. (aosp/812913)
Perbaikan bug
- Memperbaiki IllegalStateException saat menggunakan Fragmen bertingkat pada data sebelumnya (b/119256498)
- Memperbaiki error saat menggunakan
FragmentScenario.recreate()denganFragmentFactory(aosp/820540) - Memperbaiki masalah ketika Fragmen target tidak dapat diakses setelah Fragmen dihapus (aosp/807634)
Versi 1.1.0-alpha01
5 November 2018
Rilis ini merupakan rilis pertama artefak fragment-testing dan FragmentScenario yang dibuat berdasarkan androidx.test:core API. Lihat dokumentasi Pengujian Fragment untuk detail selengkapnya.
Fitur baru
- Class FragmentScenario baru untuk pengujian Fragmen secara terpisah.
- Anda kini dapat menetapkan
FragmentFactorypadaFragmentManagerapa pun untuk mengontrol cara instance Fragment baru dipakai. - Menambahkan delegasi properti Kotlin
by viewModels()baru untuk mengambil ViewModels dari Fragment. - Peristiwa input yang tertunda (seperti klik) kini dibatalkan dalam
onStop()Fragment.
Perubahan API
- Secara signifikan memperluas anotasi nullability ke seluruh permukaan Fragment API.
Perbaikan bug
- Memperbaiki masalah yang menyebabkan operasi Fragmen gagal dari dalam LiveData (b/77944637)
Masalah umum
- Fragment target tidak dapat diakses setelah sebuah Fragment dihapus dari FragmentManager.
fragment-testingbergantung padaandroidx.test:core:1.0.0-beta01, bukanandroidx.test:core:1.0.0yang benar.