Fragmen
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
30 Oktober 2024 | 1.8.5 | - | - | - |
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.5" // 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.5" // 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.5
30 Oktober 2024
androidx.fragment:fragment-*:1.8.5
dirilis. Versi 1.8.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki
IllegalStateException
yang dipicu olehsaveBackStack
hanya 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 gestur kembali dengan cepat akan menyebabkan Fragment error saat menggunakan Androidx Transitions. (Ibc038, b/364804225)
- Memperbaiki masalah pada fragmen saat mengganggu gestur kembali prediktif akan mengirim pengelola fragmen ke status tidak ditentukan dan bahkan menampilkan fragmen yang salah. (If82e2, b/338624457)
- Memperbaiki
UninitializedPropertyAccessException
dalamAndroidFragment
saat menukar Class yang digunakan instanceAndroidFragment
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
FragmentManager
kini mempertimbangkan operasi yang tertunda dengan benar saat menangani gestur Kembali Prediktif. Tindakan ini akan memastikan bahwa melakukan kembali sistem tidak lagi menyebabkanIndexOutOfBoundsException
. (I9ba32, b/342316801)AndroidFragment
tidak lagi error jika ditambahkan ke komposisi saat status aktivitas/fragmen yang memuatnya 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
AndroidFragment
kini menangani kasus dengan benar saat fragmen induk ditempatkan di data sebelumnya Fragment, sehingga menghindari masalah 'No view found for id' saat kembali ke fragmen tersebut. (I94608)- Fragmen yang ditambahkan melalui metode
FragmentTransaction.add
yang menggunakanViewGroup
kini menungguonContainerAvailable
sebelum melanjutkan keonStart()
. Hal ini memengaruhi pengguna API tersebut, sepertiAndroidFragment
, yang sekarang menungguAndroidFragment
memasukkan kembali 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
DESTROYED
saat memulai gestur kembali prediktif. Sekarang, keduanya disimpan dalam statusCREATED
hingga 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-compose
kini berisiAndroidFragment
Composable
yang memungkinkan penambahan fragmen ke hierarki Compose melalui nama class fragmen. Metode ini secara otomatis menangani penyimpanan dan pemulihan status Fragment. Ini harus digunakan sebagai pengganti langsung untuk pendekatan yang direkomendasikan sebelumnya menggunakanAndroidViewBinding
untuk meng-inflate Fragment. - Callback
onBackStackChangeCancelled
di antarmukaOnBackStackChangedListener
FragmentManager
kini diaktifkan sebagai bagian dari eksekusi operasi 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
onBackStackChangeCancelled
di antarmukaFragmentManagers OnBackStackChangedListener
kini diaktifkan sebagai bagian dari eksekusi operasi 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. Tindakan ini memperbaiki 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 setelansharedElement
tanpa transisi lain akan gagal dijalankan. (Iec48e) - Dari Fragmen
1.7.0-rc02
: 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.8.0-alpha01
3 April 2024
androidx.fragment:fragment-*:1.8.0-alpha01
dirilis. Versi 1.8.0-alpha01 berisi commit ini.
Fitur Baru
AndroidFragment
Composable
baru memungkinkan penambahan fragmen ke hierarki Compose melalui nama class fragmen. Metode ini secara otomatis menangani penyimpanan dan pemulihan status Fragment. Ini dapat digunakan sebagai pengganti langsung untuk AndroidViewBindingComposable
.(b/312895363, Icf841)
Perubahan Dokumentasi
- Memperbarui dokumentasi untuk
OnBackStackChangedListener
API untuk 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. Tindakan ini memperbaiki 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
- Fragment kini menyediakan dukungan untuk kembali dalam aplikasi Prediktif saat menggunakan
Animator
atau 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 melalui penyelesaian gestur atau pembatalan.
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 rendah |
R.transition |
Tidak |
AndroidX Transition dengan Transition 1.5.0 |
R.transition |
Ya |
Jika Anda melihat masalah terkait dukungan Kembali Prediktif di Fragment setelah memilih untuk menggunakan gestur kembali prediktif, harap laporkan masalah terkait 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 aplikasi pendukung yang sedang dalam proses perpindahan dari arsitektur berbasis Fragmen ke arsitektur berbasis Compose yang sepenuhnya.
Fitur pertama yang tersedia di artefak baru ini adalah metode ekstensi content
di Fragment
yang berupaya mempermudah penggunaan Compose untuk UI setiap Fragmen dengan membuat ComposeView
untuk Anda dan menetapkan 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 setelan
sharedElement
tanpa transisi lain akan gagal dijalankan. (Iec48e) - Memperbaiki bug yang menyebabkan error jika elemen bersama yang tidak dapat dicari ditambahkan ke transaksi dengan semua transisi lainnya yang 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
FragmentHostCallback
kini ditulis dalam Kotlin sehingga nullability jenis generik Host cocok dengan nullability jenis returnonGetHost()
. (I40af5)
Perbaikan Bug
- Memperbaiki masalah saat melakukan gestur Kembali Prediktif pada fragmen yang tidak ada dalam penampung, fragmen tersebut tidak akan pernah dihancurkan. Fragmen sekarang akan segera dipindahkan ke status akhir. (Ida0d9)
- Memperbaiki masalah di Fragment saat mengganggu transisi masuk dengan gestur kembali Prediktif akan menghancurkan tampilan yang masuk, dan meninggalkan 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 Fragment sebelumnya saat menggunakan dukungan Kembali Prediktif Fragment untuk
Animator
atau Transisi AndroidX, Fragment akan menampilkanNullPointerException
darihandleOnBackProgressed
jika tidak adaFragmentManager.OnBackStackChangedListener
yang 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.
Artifact Compose Fragmen
Artefak fragment-compose
baru telah dibuat, yang berfokus pada aplikasi pendukung yang sedang dalam proses perpindahan dari arsitektur berbasis Fragmen ke arsitektur berbasis Compose yang sepenuhnya.
Fitur pertama yang tersedia dalam artefak baru ini adalah metode ekstensi content
di Fragment
yang berupaya mempermudah penggunaan Compose untuk UI setiap Fragment dengan membuat ComposeView
untuk Anda dan menetapkan 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 masing-masing progres kembali prediktif dan peristiwa yang dibatalkan. (214b87)
Masalah Umum
- Saat menggunakan dukungan Kembali Prediktif Fragment untuk
Animator
atau Transisi AndroidX, Fragment akan menampilkanNullPointerException
darihandleOnBackProgressed
jika tidak adaFragmentManager.OnBackStackChangedListener
yang pernah ditambahkan melaluiaddOnBackStackChangedListener
. Menambahkan pemroses akan mengatasi error tersebut secara manual. Perbaikan akan tersedia untuk hal ini dalam rilis Fragments 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
NullPointerException
yang disebabkan oleh penetapan transisi elemen bersama dan juga gagal menetapkan transisi masuk/keluar. (I8472b) - Dari Fragment
1.6.2
: Saat FragmentFragmentContainerView
di-inflate, statusnya sepertiFragmentManager
, Host, dan ID kini dapat diakses di callbackonInflate
. (I1e44c, b/307427423) - Dari Fragment
1.6.2
: Saat menggunakanclearBackStack
untuk menghapus sekumpulan fragmen, semuaViewModel
Fragment bertingkat kini akan dihapus saatViewModels
fragmen 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 agar bergantung pada
animateToStart
API baru yang ditambahkan di Transisi1.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
- Fragment 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 commit atau membatalkan transaksi melalui gestur yang telah selesai. Anda harus bergantung pada rilis Transisi
1.5.0-alpha03
untuk mengaktifkan fitur ini. (Ib49b4, b/285175724)
Masalah Umum
- Saat ini ada masalah saat Anda membatalkan gestur kembali dengan transisi satu kali, saat berikutnya Anda memulai gestur kembali, gestur tersebut akan gagal menjalankan transisi, sehingga menyebabkan layar kosong. Hal ini dapat disebabkan oleh masalah di library Transisi. (b/300157785). Jika Anda melihat masalah ini, harap laporkan masalah terkait 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 saat fragmen gagal mencapai status Siklus Proses yang benar. (I7cffe, b/297379023)
- Memperbaiki regresi saat Animasi diizinkan untuk berjalan dengan Transisi. (I59f36)
- Memperbaiki masalah saat menggunakan Kembali Prediktif dengan fragmen saat mencoba kembali dua kali secara berurutan pada fragmen kedua hingga terakhir di data sebelumnya 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 Fragment saat menggunakan kembali prediktif yang menyebabkan fragmen pertama di data sebelumnya di pengelola fragmen dilewati dan Aktivitas selesai saat menggunakan sistem kembali melalui navigasi tombol 3 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 menjalankan 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 menyediakan 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 commit 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 Fragmen
FragmentContainerView
di-inflate, statusnya sepertiFragmentManager
, Host, dan ID kini dapat diakses di callbackonInflate
. (I1e44c, b/307427423) - Saat menggunakan
clearBackStack
untuk menghapus sekumpulan fragmen, setiapViewModel
Fragmen bertingkat kini akan dihapus saatViewModels
fragmen 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 salah di-cache bahkan setelah instance fragmen dipindahkan kembali ke status
RESUMED
. Hal ini akan menyebabkan status yang di-cache tersebut digunakan kembali jika instance fragmen tersebut berada 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. Tindakan ini memperbaiki masalah saat pengguna Kotlin tidak dapat memperluas
ComponentDialog
tanpa dependensi eksplisit pada Aktivitas. (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
Fragment
telah dibagi sepenuhnya antara status library pribadi (classParcelable
khusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalamBundle
yang memungkinkan penentuan tempat asal fragmen dengan tepat. - Antarmuka
FragmentManager.OnBackStackChangedListener
telah diperluas dengan dua callback tambahanonBackStackChangeStarted
danonBackStackChangeCommitted
yang dipanggil dengan setiapFragment
tepat sebelum ditambahkan/dihapus dari data sebelumnya fragmen dan tepat setelah transaksi di-commit. FragmentStrictMode
menambahkanWrongNestedHierarchyViolation
baru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan kechildFragmentManager
induk.- API
Fragment
danFragmentManager
yang menggunakanIntent
atauIntentSender
kini dianotasi dengan benar menggunakan@NonNull
untuk mencegah penerusan nilai null karena nilai null akan selalu membuat error pada masing-masing API framework Android yang dipanggil metode ini. DialogFragment
kini menyediakan akses keComponentDialog
yang 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-manifest
memisahkan 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
danandroidx.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
ActivityResult
dikirim dengan kode permintaan yang salah saat beberapa permintaanstartActivityForResult
telah dibuat secara berurutan. (If0b9d, b/249519359) - Memperbaiki masalah saat callback
onBackStackChangeListener
dikirim untuk transaksi yang tidak benar-benar mengubah data sebelumnya jika digabungkan dengan transaksi yang mengubahnya. (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
- Menggunakan
postponeEnterTransition
dengan waktu tunggu, lalu mengganti fragmen yang ditunda tidak lagi menyebabkan membocorkan fragmen yang ditunda. (I2ec7d, b/276375110) - Callback
onBackStackChangeStarted
danonBackStackChangeCommitted
baru kini hanya akan mengirim 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
DialogFragment
kini menyediakan akses keComponentDialog
yang mendasarinya melaluirequireComponentDialog()
API. (I022e3, b/234274777)- API fragmen
commitNow()
,executePendingTransactions()
, danpopBackStackImmediate()
telah dianotasi dengan@MainThread
yang berarti semuanya kini akan menampilkan error build saat tidak dipanggil dari thread utama, bukan menunggu untuk gagal saat runtime. (Ic9665, b/236538905)
Perbaikan Bug
- Memperbaiki bug di
FragmentManager
saat penyimpanan dan pemulihan di frame yang sama dapat menyebabkan error. (Ib36af, b/246519668) - Callback
OnBackStackChangedListener
onBackStackChangeStarted
danonBackStackChangeCommitted
kini hanya dieksekusi saat data sebelumnyaFragmentManager
diubah. (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.onBackStackChangeCommited
telah disesuaikan untuk dijalankan sebelum operasi fragmen dijalankan. Hal ini memastikan bahwa callback tidak akan pernah meneruskan fragmen yang dilepas. (I66a76, b/273568280)
Perbaikan Bug
- Dari Fragmen
1.5.6
: Memperbaiki masalah saat memanggilclearFragmentResultListener
di dalamsetFragmentResultListener
tidak akan berfungsi jikaLifecycle
sudahSTARTED
dan hasilnya sudah tersedia. (If7458)
Update Dependensi
- Fragment sekarang bergantung pada Lifecycle
2.6.1
. (586fe7) - Fragment kini bergantung pada SavedState
1.2.1
. (078e4e) - Fragment sekarang 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, baik 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
onBackStackChangedStarted
baru padaonBackStackChangedListener
FragmentManager
sekarang 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.OnBackStackChagnedListener
kini menawarkan dua callback tambahan,onBackStackChangeStarted
danonBackStackChangeCommitted
, yang memungkinkan informasi tambahan dan kontrol saat perubahan data sebelumnya terjadi diFragmentManager
. (Ib7ce5, b/238686802)
Perubahan API
Fragment
API danFragmentManager
API yang menggunakanIntent
atauIntentSender
sekarang dianotasi dengan benar menggunakan@NonNull
untuk 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
FragmentStrictMode
menambahkanWrongNestedHierarchyViolation
baru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan kechildFragmentManager
induk. (I72521, b/249299268)
Perubahan Perilaku
- Fragment kini memulihkan status
SavedStateRegistry
sebelumonAttach()
, memastikan bahwa fragmen tersedia dari semua metode siklus proses ke atas. (I1e2b1)
Perubahan API
- Artefak
fragment-testing-manifest
memisahkan 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 statusViewModel
sebagai 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
DialogFragment
kini 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
/Animator
yang 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
Fragment
telah dibagi sepenuhnya antara status library pribadi (classParcelable
khusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalamBundle
yang memungkinkan penentuan tempat asal fragmen dengan tepat. (b/207158202)
Perbaikan Bug
- Dari Fragment
1.5.1
: Memperbaiki regresi diDialogFragmentCallbacksDetector
saat 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
- Menggunakan
postponeEnterTransition
dengan waktu tunggu, lalu mengganti fragmen yang ditunda tidak lagi menyebabkan membocorkan 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 Fragmen, baik telah menambahkan item Menu atau tidak, akan membatalkan menu aktivitas. (50f098, b/244336571)
- Memperbaiki masalah saat memanggil
clearFragmentResultListener
di dalamsetFragmentResultListener
tidak akan berfungsi jikaLifecycle
sudahSTARTED
dan hasilnya 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
ViewModel
sebagai 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
FragmentController
kustom 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
/Animator
yang 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
DialogFragmentCallbacksDetector
saat 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 -
Fragment
kini memiliki kemampuan untuk menyediakanViewModelProvider.Factory
stateless melaluiCreationExtras
Lifecycle2.5.0
. - Integrasi Dialog Komponen -
DialogFragment
kini menggunakanComponentDialog
melalui Activity1.5.0
sebagai 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:
FragmentManager
kini menyimpan status instance tersimpannya ke dalamBundle
, bukan langsung diParcelable
kustom.- Hasil yang ditetapkan melalui
Fragment Result APIs
yang 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
FragmentStrictMode
kini menawarkan kemampuan bagi fragmen pihak ketiga pribadi untuk mengabaikan penalti pelanggaran tertentu menggunakanallowViolation()
dengan nama class.- Fragment API untuk menyediakan menu ke
ActionBar
aktivitas Anda tidak digunakan lagi.MenuHost
API danMenuProvider
API yang ditambahkan di Activity1.4.0
menyediakan 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
DialogFragment
telah menambahkan metodedismissNow
baru yang menggunakancommitNow
untuk paritas dengan fungsishowNow
. Perhatikan bahwa tindakan ini tidak akan membuatDialog
langsung ditutup. Tindakan ini hanya akan memperbarui statusFragmentManager
secara sinkron. (I15c36, b/72644830)
Pemfaktoran Ulang Status Instance Tersimpan
FragmentManager
kini menyimpan status instance tersimpannya ke dalamBundle
, bukan langsung diParcelable
kustom. 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()
Fragment
sudah 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
ActionBar
aktivitas Anda tidak digunakan lagi karena mengaitkan fragmen Anda secara erat ke aktivitas Anda dan tidak dapat diuji secara terpisah.MenuHost
API danMenuProvider
API yang ditambahkan di Activity1.4.0-alpha01
menyediakan antarmuka API setara yang dapat diuji dan berbasis siklus proses yang harus digunakan fragmen. (I50a59, I20758)
Perbaikan Bug
SavedStateViewFactory
sekarang mendukung penggunaanCreationExtras
meskipun 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
CreationExtras
ke fungsiby viewModels()
danby activityViewModels()
. (Ibefe7, b/217601110)
Perubahan Perilaku
DialogFragment
kini menggunakanComponentDialog
sebagai 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
FragmentStrictMode
kini 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
Fragment
kini terintegrasi dengan ViewModel CreationExtras, yang diperkenalkan sebagai bagian dari Lifecycle2.5.0-alpha01
. (I3060b, b/207012585)
Perbaikan Bug
- Dari Fragment
1.4.1
:FragmentContainerView
tidak 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 lambdaownerProducer
kustom dengan fungsi lambatby viewModels()
, lambda ini sekarang akan menggunakandefaultViewModelProviderFactory
dari pemilik tersebut jikaViewModelProvider.Factory
kustom tidak disediakan, bukan selalu menggunakan factory fragmen. (I56170, b/214106513) - Memperbaiki error saat mengakses
ViewModel
untuk 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
FragmentContainerView
tidak lagi melemparkan pengecualian status ilegal saat ID tampilan yang dihasilkan dari XML memiliki nilai negatif. (Ic185b, b/213086140)- Jika menggunakan lambda
ownerProducer
kustom dengan fungsi lambatby viewModels()
, lambda ini sekarang akan menggunakandefaultViewModelProviderFactory
dari pemilik tersebut jikaViewModelProvider.Factory
kustom 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
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 padaFragmentManager
melalui metodesetStrictModePolicy()
baru. Kebijakan tersebut berlaku untukFragmentManager
tersebut dan secara transitif untuk semua pengelola fragmen turunan yang tidak menetapkan kebijakan uniknya sendiri. Lihat StrictMode untuk fragmen.FragmentContainerView
kini 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>().navController
FragmentScenario
kini mengimplementasikanCloseable
sehingga Anda dapat menggunakannya dengan metodeuse
atau 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 instanceViewModel
yang 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
FragmentManager
tidak 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)
DialogFragment
sekarang menggunakansetReorderingAllowed(true)
untuk semua transaksi yang dibuatnya saat Anda memanggilshow()
,showNow()
, ataudismiss()
. (Ie2c14)- Peringatan Lint
DetachAndAttachFragmentInSameFragmentTransaction
yang 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
DetachAndAttachFragmentInSameFragmentTransaction
untuk mendeteksi panggilandetach()
danattach()
padaFragment
yang sama diFragmentTransaction
yang 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
FragmentAddMenuProvider
untuk mengoreksi penggunaan Siklus Proses Fragmen ke Siklus proses tampilan Fragmen saat menggunakanaddMenuProvider
API 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()
untukFragment
danDialogFragment
telah 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
FragmentContainerView
telah ditulis ulang di Kotlin yang memastikan bahwa fungsigetFragment
akan 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
UseRequireInsteadOfGet
untuk menangani tanda kurung yang redundan dengan lebih baik. (I2d865) - Meningkatkan pemeriksaan Lint
UseGetLayoutInflater
untuk 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
IllegalStateException
saat memulihkanFragmentTransaction
atau sebagai salinan kedua fragmen yang muncul. (I9039f) - Memperbaiki masalah yang menyebabkan
FragmentManager
menyimpan salinan status yang sebelumnya disimpan melaluisaveBackStack()
bahkan setelah status tersebut dipulihkan. (Ied212) - Metode
dismissAllowingStateLoss()
dariDialogFragment
tidak 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 keGONE
saat menggunakanhide()
saat tampilan root menyeteltransitionGroup=”true”
. (aosp/1766655, b/193603427) - Dari Fragment
1.3.6
:FragmentActivity
sekarang 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
FragmentManager
sekarang menggunakanSavedStateRegistry
di balik layar untuk menyimpan statusnya. MetodesaveAllState()
danrestoreSavedState()
juga tidak digunakan lagi diFragmentController
. Jika Anda menggunakanFragmentController
untuk menghosting fragmen di luarFragmentActivity
, Anda harus memintaFragmentHostCallbacks
mengimplementasikanSavedStateRegistryOwner
. (Iba68e, b/188734238)
Perbaikan Bug
- Memperbaiki masalah saat panggilan ke
saveBackStack()
sebagai bagian dari dukungan beberapa data sebelumnya akan gagal jika dilakukan bersamaan dengan menjalankanFragmentTransaction
yang menggunakanreplace()
. (I73137) - Memperbaiki
NullPointerException
yang 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
FragmentManager
salah 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
Violation
telah diupdate dengan pesan error yang lebih terperinci yang menjelaskan detail pelanggaran. (b/187871638)FragmentTagUsageViolation
sekarang berisi pesan error yang lebih terperinci yang menampung penampung induk tempat fragmen ditambahkan. (Ic33a7)WrongFragmentContainerViolation
sekarang memiliki pesan error yang lebih terperinci yang menyertakan penampung tempat fragmen ditambahkan. (Ib55f8)- Class kasus penggunaan untuk
TargetFragmentUsageViolation
kini memiliki pesan error yang lebih terperinci untuk menyertakan fragmen yang menyebabkan pelanggaran dan informasi lain yang ada di dalamnya. (Icc6ac) - Class yang memperluas
RetainInstanceUsageViolation
kini memiliki pesan error lebih terperinci yang menyertakan fragmen yang menyebabkan pelanggaran. (I6bd55) FragmentReuseViolation
sekarang memiliki pesan error yang lebih mendetail yang menyertakan ID fragmen sebelumnya. (I28ce2)SetUserVisibleHintViolation
kini memiliki pesan error yang lebih mendetail yang menyertakan petunjuk yang dapat dilihat oleh pengguna. (Ib2d5f)
Perubahan Perilaku
- Mengembalikan batasan pemanggilan
fitsSystemWindows
padaFragmentContainerView
- 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.4
oleh aosp/1679887. Fragmen kini menangani grup transisi dengan benar (baik disetel langsung melaluitransitionGroup="true"
maupun secara tidak langsung melaluitransitionName
ataubackground
) dan elemen bersama tidak akan lagi membuangIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304) FragmentManager
tidak akan lagi error saat Anda mencoba menyembunyikan fragmen yang menghapus. (I573dd, b/183634730)- Pemeriksaan lint
OnCreateDialogIncorrectCallback
tidak 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
FragmentStrictMode
kini akan selalu mencatat pelanggaran saat logging diaktifkan melaluiFragmentManager
, terlepas dari kebijakan mode ketat yang saat ini digunakan. (I02df6, b/187872638)FragmentStrictMode
kini mendukung pengecualian classFragment
tertentu dariViolation
mode ketat yang memungkinkan class tersebut mengabaikan masalah apa pun. (Ib4e5d, b/184786736)Class
Violation
FragmentStrictMode
telah diperluas untuk menambahkan informasi struktur berdasarkan setiap pelanggaran. Hal ini memungkinkan Anda memverifikasi penyebab pelanggaran beserta fragmen yang melanggar (If5118, b/187871150), setiapViolation
berisi hal berikut:WrongFragmentContainerViolation
kini berisiViewGroup
yang berusaha ditambahkanFragment
. (I83c75, b/187871150)TargetFragmentUsageViolation
telah diperluas menjadiSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
, danGetTargetFragmentRequestCodeUsageViolation
, denganSetTargetFragmentUsageViolation
yang berisi fragmen target dan kode permintaan. (I741b4, b/187871150)SetUserVisibleHintViolation
kini berisi nilai boolean yang diteruskan kesetUserVisibleHint()
. (I00585, b/187871150)FragmentTagUsageViolation
kini berisi ViewGroup yang berusaha di-inflate fragmen oleh tag<fragment>
. (I5dbbc, b/187871150)FragmentReuseViolation
kini berisi ID unik instanceFragment
sebelumnya yang menyebabkan pelanggaran. (I0544d, b/187871150)RetainInstanceUsageViolation
kini bersifat abstrak dan memiliki dua subclass,SetRetainInstanceUsageViolation
danGetRetainInstanceUsageViolation
, yang mewakili dua kasus untuk jenis pelanggaran. (Ic81e5, b/187871150)
Perubahan Perilaku
FragmentContainerView
kini menampilkan pengecualian saat mencoba mengubah atributfitsSystemWindow
secara 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
FragmentContainerView
kini 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>().navController
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. (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 instanceViewModel
yang 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
FragmentManager
tidak 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 instanceFragment
yang sebelumnya dihapus ditambahkan kembali keFragmentManager
. Anda tidak boleh berinteraksi dengan atau menyimpan referensi ke instanceFragment
setelah referensi dihancurkan dan dihapus dariFragmentManager
. (#142, b/153738653)detectFragmentTagUsage()
mendeteksi saat Anda menggunakan tag<fragment>
dalam XML tata letak. Anda harus selalu menggunakanFragmentContainerView
saat meng-inflate fragmen sebagai bagian dari tata letak. (#141, b/153738235)detectWrongFragmentContainer()
mendeteksi saat Anda menambahkan fragmen ke penampung yang bukanFragmentContainerView
. Anda harus selalu menggunakanFragmentContainerView
sebagai 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) FragmentScenario
kini mengimplementasikanCloseable
sehingga Anda dapat menggunakannya dengan metodeuse
atau try-with-resources Kotlin. (#121, b/143774122)
Pemeriksaan Lint baru
- Pemeriksaan Lint
UseGetLayoutInflater
kini memperingatkan saat menggunakanLayoutInflater.from(Context)
dalamDialogFragment
. Anda harus selalu menggunakan metodegetLayoutInflater()
fragmen dialog agar sesuai untukLayoutInflater
. (#156, b/170781346) - Pemeriksaan Lint
DialogFragmentCallbacksDetector
kini memperingatkan saat memanggilsetOnCancelListener
atausetOnDismissListener
dalam metodeonCreateDialog()
DialogFragment
. Pemroses ini dimiliki olehDialogFragment
dan 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.3
saat menggunakan APIViewTreeViewModelStoreOwner.get()
denganViewModelProvider
atau metode Jetpack ComposeviewModel()
di dalam Fragment. Kasus penggunaan ini kini menggunakan dengan benarViewModelProvider.Factory
yang disediakan oleh Fragment jika menggantikangetDefaultViewModelProviderFactory()
(seperti yang dilakukan oleh Fragment yang diberi anotasi@AndroidEntryPoint
saat menggunakan Hilt). Jika Anda tidak mengganti metode tersebut,SavedStateViewModelFactory
yang menyimpan dan memulihkan statusnya bersama tampilan Fragment akan dibuat sebagai factory default. (I5cbfa, b/186097368) - Dari Fragment 1.3.4: Saat menggunakan
FragmentContainerView
di API 29, inset tidak akan lagi dikirim tanpa batas waktu, sehingga memperbaiki masalah terkait instanceBottomNavigationBar
danFloatingActionButton
. (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
transitionGroup
yang disetel ke false, kini transisinya dilakukan dengan benar. (I99675)
Kontribusi Eksternal
- Terima kasih simonschiller yang telah membuat
FragmentScenario
mengimplementasikanCloseable
. (#121, b/143774122) - Terima kasih simonschiller yang telah menambahkan keseluruhan API
FragmentStrictMode
untuk 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
:FragmentManager
tidak akan lagi mengalami error saat Anda mencoba menyembunyikan fragmen yang menghapus. (I573dd, b/183634730) - Tampilan Fragment kini disetel dengan benar ke
GONE
saat menggunakanhide()
saat tampilan root menyeteltransitionGroup=”true”
. (aosp/1766655, b/193603427) FragmentActivity
kini 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.4
oleh aosp/1679887. Fragmen kini menangani grup transisi dengan benar (baik disetel langsung melaluitransitionGroup="true"
maupun secara tidak langsung melaluitransitionName
ataubackground
) 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.3
saat menggunakan APIViewTreeViewModelStoreOwner.get()
denganViewModelProvider
atau metode Jetpack ComposeviewModel()
di dalam Fragment saat menggunakan Hilt. Kasus penggunaan ini kini menggunakan dengan benarViewModelProvider.Factory
yang disediakan oleh Fragment jika menggantikangetDefaultViewModelProviderFactory()
(seperti@AndroidEntryPoint
Fragment yang diberi anotasi). Jika Anda tidak mengganti metode tersebut,SavedStateViewModelFactory
yang menyimpan dan memulihkan statusnya bersama tampilan Fragment akan dibuat sebagai factory default. (I5cbfa, b/186097368) - Saat menggunakan
FragmentContainerView
di API 29, inset tidak akan lagi dikirim tanpa batas waktu, sehingga memperbaiki masalah terkait instanceBottomNavigationBar
danFloatingActionButton
. (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
transitionGroup
yang 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
SavedStateViewModelFactory
kini berfungsi saat digunakan denganSavedStateRegistryOwner
yang ditampilkan menggunakanViewTreeSavedStateRegistryOwner.get()
dengan Tampilan Fragmen. (I21acf, b/181577191)
Perbaikan Bug
- Memperbaiki regresi yang diperkenalkan pada Fragment
1.3.2
yang akan menyebabkan animasipopEnter
tidak berjalan saat memunculkanFragmentTransaction
yang menyertakan operasisetPrimaryNavFragment
, seperti yang digunakan olehNavHostFragment
. (I38c87, b/183877426) FragmentContainerView
kini memastikan bahwa setiapFragment
dikirim ke kumpulanWindowInsets
baru, yang memastikan bahwa setiap fragmen sekarang dapat menggunakan inset secara independen. (I63f68, b/172153900)DialogFragment
kini menangani kasus dengan benar saat fragmen turunan ditambahkan ke penampung yang memiliki ID yang sama dengan penampung dalam classDialog
khusus, 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
InvalidFragmentVersionForActivityResult
Activity 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
DialogFragment
kini dapat memperoleh akses ke pemilik ViewTree melalui DekorasiView-nya, memastikan bahwaDialogFragment
dapat digunakan denganComposeView
. (Ib9290, b/180691023)
Perbaikan Bug
- Fragment yang di-inflate ke dalam aktivitas
RESUMED
yang 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
setFragmentResult
dansetFragmentResultListener
telah 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
onCreateOptionsMenu
dengan benar saat menggunakan transaksi tampilkan/sembunyikan (I8bce8, b/180255554) - Fragmen turunan dengan transisi yang dimulai sebelum fragmen ditata akan mencapai
RESUMED
dengan 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
FragmentManager
yang 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
ActivityResultRegistry
API yang diperkenalkan di Activity1.2.0
untuk 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
FragmentActivity
sebelumnya. Anda harus mengupgrade ke Fragment 1.3.0 untuk menggunakan Activity Result API dalamFragmentActivity
atauAppCompatActivity
.
- 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()
diFragmentActivity
danFragment
tidak digunakan lagi.FragmentOnAttachListener
baru 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
: ClassFragmentScenario
dari artefakfragment-testing
telah ditulis ulang dalam Kotlin dan telah menerima sejumlah peningkatan:FragmentScenario
sekarang menggunakansetMaxLifecycle()
untuk mengimplementasikanmoveToState()
, memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya.FragmentScenario
sekarang mendukung penyetelanLifecycle.State
awal untuk mendukung pernyataan status fragmen sebelum berpindah ke setiapLifecycle.State
untuk pertama kalinya.- Sekarang ada alternatif ke
FragmentScenario
API darionFragment
dalam bentuk reifikasi metode ekstensi KotlinwithFragment
yang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu.
Dukungan
ViewTree
:Fragment
sekarang mendukung APIViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
, danViewTreeSavedStateRegistryOwner
yang ditambahkan di Lifecycle2.3.0
dan SavedState1.1.0
sehingga API tersebut akan menampilkan Fragment sebagaiViewModelStoreOwner
, danSavedStateRegistryOwner
sertaLifecycleOwner
terikat ke Lifecycle tampilan fragmen saat menggunakanView
dalamFragment
.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, konstruktorViewModel
dan callbackonCleared()
yang diterimanya).Penghentian penggunaan adaptor ViewPager 1: Dengan dirilisnya ViewPager2
1.0.0
, classFragmentPagerAdapter
danFragmentStatePagerAdapter
untuk berinteraksi denganViewPager
tidak 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
DialogFragment
akan muncul di atas turunanDialogFragment
setelah perubahan konfigurasi; fragmen dialog turunan kini selalu muncul di atas fragmen dialog induk. (I30806, b/177439520) - Memperbaiki masalah saat melakukan operasi
hide
denganAnimation
akan menyebabkan fragmen tersembunyi berkedip di akhir animasi. (I57e22, b/175417675) - Fragmen dengan transisi yang ditambahkan sebelum hierarki tampilan
yang terpasang sekarang menjangkau
RESUMED
dengan benar. (I1fc1d, b/177154873)
Perbaikan Bug Pengelola Status Baru
- Tampilan
Lifecycle
Fragmen kini menangani dengan benar kasus saat tampilan Fragmen dihancurkan sebelumLifecycle
menjangkauCREATED
, menghindari pengecualian yang menyatakan “tidak ada peristiwa yang tidak diinginkan dari INITIALIZED”. (eda2bd, b/176138645) - Fragmen yang menggunakan
Animator
kini 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
Animation
keFragmentContainerView
, 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
FragmentScenario
telah 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
class
atauandroid:name
kini dapat digunakan di luarFragmentActivity
. (Id4397, b/172266337) - Mencoba menetapkan siklus proses maksimum fragmen ke
DESTROYED
kini akan menampilkanIllegalArgumentException
(Ie7651, b/170765622) - Menginisialisasi FragmentScenario dengan status
DESTROYED
kini 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
Animator
atau salah satu dari opsiTRANSIT_FRAGMENT_
. (I92426, b/169874632) - Mengatasi masalah yang mencegah fragmen dengan
Animation
yang 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
Animator
keluarhide()
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
FragmentFactory
kini men-cache class fragmen secara terpisah untuk instanceClassLoader
berbeda. 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 statusLifecycle
keINITIALIZING
selama 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()
hinggaCREATED
sekarang 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
FragmentManager
non-null dan fragment denganFragmentManager
non-null akan selalu dianggap aktif. (aosp/1422346) - Efek default fragmen,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, danTRANSIT_FRAGMENT_FADE
, kini menggunakanAnimator
bukanAnimation
. (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
INVISIBLE
sebelum animasi dimulai, tampilan fragmen tersebut akan tetap tidak terlihat. (b/164481490) - Fragmen kini memprioritaskan
Animators
daripadaAnimations
, yang berarti fragmen dengan keduanya hanya akan menjalankanAnimator
dan 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
replace
sebelumnya kini dihentikan dengan benar sebelum fragmen baru dimulai. (b/161654580) - Fragmen kini mencegah beberapa animasi yang bersaing pada fragmen yang sama, menghindari kasus ketika
Animation
akan mengganti semua efekTransition
atauAnimator
danTransition
pada fragmen individual akan berjalan. (b/149569323) enterTransition
danexitTranstion
dari 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 keSTARTED
dengan fragmen lain. (b/129035555) - Memperbaiki masalah ketika
FragmentManager
yang 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)
FragmentManager
kini 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
Transition
dan AndroidXTransition
kini menyebutkan fragmen dengan transisi yang tidak valid. (b/155574969)
Perubahan Perilaku
- Anda sekarang dapat memanggil
launch()
diActivityResultLauncher
dalam 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) FragmentActivity
sekarang menggunakanOnContextAvailableListener
API yang diperkenalkan di Activity1.2.0-alpha08
untuk memulihkan statusFragmentManager
. Setiap pemroses yang ditambahkan ke subclassFragmentActivity
akan berjalan setelah pemroses ini. (I513da)
Perbaikan Bug
ActivityOptions
yang 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
FragmentScenario
sekarang mendukung penyetelan status Siklus proses awalCREATED
,STARTED
, atauRESUMED
daripada selalu memindahkan Fragmen keRESUMED
. (b/159662750)- Menambahkan alternatif ke API
FragmentScenario
darionFragment
dalam bentuk metode ekstensi reifikasi KotlinwithFragment
yang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu. (b/158697631)
Perubahan Perilaku
FragmentScenario
sekarang menggunakansetMaxLifecycle()
untuk mengimplementasikanmoveToState()
, memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya. (b/156527405)SavedStateRegistryOwner
yang dikembalikan olehViewTreeSavedStateRegistryOwner
sekarang 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
clearFragmentResultListener
akan 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()
padaFragmentActivity
danFragment
tidak digunakan lagi.FragmentOnAttachListener
baru 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
DialogFragment
menampilkanDialogFragment
lainnya sebagai fragmen turunan. (b/157195715) - Memperbaiki masalah yang menyebabkan pemeriksaan Lint
UseRequireInsteadOfGet
tidak 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
ViewTreeViewModelStoreOwner
dari Lifecycle2.3.0-alpha03
, danViewTreeSavedStateRegistryOwner
dari SavedState1.1.0-alpha01
saat menggunakanView
dalamFragment
. (aosp/1297993, aosp/1300264)
Perubahan API
- API
setFragmentResult()
dansetFragmentResultListener()
kini menggunakanFragmentResultListener
danBundle
non-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()
, danrequestPermissions
yang sebelumnya tidak digunakan lagi diFragment
kini menggunakanActivityResultRegistry
secara 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 menggunakanFragmentFactory
default. (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
illegalStateException
saat menambahkan fragmen ke hierarki tampilanDialogFragment
denganFragmentContainerView
. (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
prepareCall
diFragment
kini menjadifinal
. (b/152439361)
Perbaikan Bug
- Memperbaiki regresi yang diperkenalkan di Fragment
1.3.0-alpha02
saat menggunakanBottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - Memperbaiki error saat menggunakan
prepareCall
dari 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 LintFragmentLiveDataObserve
pada classDialogFragment
karena siklus proses dan siklus proses tampilan mereka selalu sinkron, sehingga membuatthis
atauviewLifecycleOwner
aman 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
ActivityResultRegistry
API yang diperkenalkan di Activity1.2.0-alpha02
untuk 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
DialogFragment
kini menyediakan konstruktor yang mengambil@LayoutRes
yang 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,LifeCycleObserver
harus terdaftar diLifecycle
aktivitas dionAttach()
, dan dihapus setelah callbackonCreate()
diterima. (b/144309266)
Perbaikan Bug
- Dari Fragmen
1.2.3
: Memperbaiki bug diDialogFragment
yang menyebabkanStackOverflowError
saat 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 LintUseRequireInsteadOfGet
saat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163) - Dari Fragmen
1.2.3
:FragmentContainerView
tidak lagi melemparkanUnsupportedOperationException
untuk menggunakan konstruktor yang salah dalam pratinjau tata letak. (b/149707833)
Masalah Umum
BottomSheetDialogFragment
tidak 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-alpha01
sehingga API menampilkanviewLifecycleOwner
Fragmen sebagaiLifecycleOwner
untuk 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, konstruktorViewModel
dan callbackonCleared()
yang diterimanya). (b/143911815) - Dengan dirilisnya ViewPager2
1.0.0
, classFragmentPagerAdapter
danFragmentStatePagerAdapter
untuk berinteraksi denganViewPager
tidak digunakan lagi. Baca Bermigrasi dari ViewPager ke ViewPager2. (b/145132715)
Perbaikan Bug
- Aturan Fragment ProGuard kini hanya mempertahankan class
Fragment
konstruktor 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.2
tidak lagi positif palsu (PP) pada variabel lokal yang menggunakan nama yang sama seperti nama properti Kotlin yang dibayangi (yakni,view
). (b/149891163) FragmentContainerView
tidak lagi melemparkanUnsupportedOperationException
ketika 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
FragmentLiveDataObserve
pada classDialogFragment
karena siklus proses dan siklus proses tampilannya selalu disinkronkan, sehinggathis
maupunviewLifecycleOwner
aman 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
DialogFragment
yang menyebabkanStackOverflowError
saat 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
UseRequireInsteadOfGet
saat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163) FragmentContainerView
tidak lagi melemparkanUnsupportedOperationException
untuk 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
viewLifecycleOwner
sebagaiLifecycleOwner
untuk memanggilOnBackPressedDispatcher
dalamonCreateView()
,onViewCreated()
, danonActivityCreated()
. (b/142117657) - Menambahkan pemeriksaan Lint baru yang mengonfirmasi bahwa Anda menggunakan
debugImplementation
yang 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 menyertakanget
danrequire
yang setara. (aosp/1202883)
Perbaikan Bug
- Memperbaiki file Fragment ProGuard untuk menghindari peringatan R8 (b/148963981)
- Meningkatkan pemeriksaan Lint yang ada yang menyarankan penggunaan
viewLifecycleOwner
saat menggunakanobserve
untuk menangani versi metode ekstensilivedata-ktx
dariobserve
. (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
add
danreplace
yang menggunakan instanceClass
(atau versi reifikasi Kotlin) kini memiliki konstruktor default yang dipertahankan oleh ProGuard. (b/148181315) FragmentStatePagerAdapter
danFragmentPagerAdapter
tidak lagi mengambil pengecualian yang dilemparkan olehFragmentManager
saat 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 instanceFragmentManager
tidak lagi melemparkanNullPointerException
saat Activity telah dihapus. (b/148189412)
Perubahan dependensi
- Fragmen
1.2.1
kini 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:
FragmentContainerView
adalah container yang sangat disarankan untuk Fragmen yang ditambahkan secara dinamis, menggantikan penggunaanFrameLayout
atau tata letak lainnya. Penampung ini juga mendukungclass
,android:name
yang sama, danandroid:tag
opsional sebagai tag<fragment>
, tetapi menggunakanFragmentTransaction
normal 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 diFragmentTransaction
yang menggunakanClass<? extends Fragment>
danBundle
argumen opsional. Metode ini menggunakanFragmentFactory
Anda 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:
SavedStateViewModelFactory
sekarang 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 mengamatiLiveData
darionCreateView()
,onViewCreated()
, atauonActivityCreated()
. - Penghentian
getFragmentManager()
: MetodegetFragmentManager()
danrequireFragmentManager()
di Fragment sudah tidak digunakan lagi dan diganti dengan metodegetParentFragmentManager()
tunggal, yang menampilkanFragmentManager
non-null tempat Fragment ditambahkan (Anda dapat menggunakanisAdded()
untuk menentukan apakah metode tersebut aman untuk dipanggil). - Penghentian
FragmentManager.enableDebugLogging()
: MetodeFragmentManager.enableDebugLogging
statis sudah tidak digunakan lagi. FragmentManager sekarang mengikutiLog.isLoggable()
untuk tagFragmentManager
, memungkinkan Anda mengaktifkan loggingDEBUG
atauVERBOSE
tanpa mengompilasi ulang aplikasi.
Masalah Umum
- Fragmen yang hanya direferensikan melalui atribut
class
atauandroid:name
padaFragmentContainerView
tidak otomatis disimpan oleh ProGuard, sehingga Anda harus menambahkan aturan secara manual untuk mempertahankan setiap class fragmen. (b/142601969) - Saat menambahkan
NavHostFragment
menggunakanclass
atauandroid:name
dalam 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-rc04
saat 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 keCREATED
dengan 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_FADE
guna 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
INVISIBLE
setelah 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 menetapkanFragmentFactory
juga 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 mengamatiLiveData
darionCreateView()
,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
FragmentContainerView
kini mendukung atributclass
selainandroid:name
, mencerminkan fungsi tag<fragment>
. (b/142722242)- Menambahkan pemeriksaan Lint baru yang memastikan Anda menggunakan
getViewLifecycleOwner()
saat mengamatiLiveData
darionCreateView()
,onViewCreated()
, atauonActivityCreated()
. (b/137122478)
Perbaikan bug
- Callback
onDismiss
danonCancel
padaDialogFragment
sekarang menjamin bahwaDialogInterface
yang diteruskan ke callback tersebut bukanlah null dan bahwagetDialog()
menampilkan non-null saat dijalankan. (b/141974033) FragmentContainerView
kini menambahkan Fragment yang ditentukan olehclass
atauandroid:name
sebagai bagian dari perluasan, memastikan bahwafindFragmentById()
danfindFragmentByTag()
bekerja secara langsung setelahnya. (b/142520327)- Memperbaiki
IllegalStateException
dalamFragmentContainerView
dikarenakan status sedang disimpan. (b/142580713) - Memperbaiki
UnsupportedOperationException
dalamFragmentContainerView
ketika obfuscation dilakukan pada classFragmentContainerView
. (b/142657034)
Masalah umum
- Fragmen yang hanya direferensikan melalui atribut
class
atauandroid:name
padaFragmentContainerView
tidak 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 keFragmentContainerView
sampai 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
FragmentContainerView
menambahkan dukungan untuk menambahkan fragmen awal dengan dukungan tambahan bagiandroid:name
dan atribut XMLandroid:tag
opsional. Tidak seperti tag<fragment>
,FragmentContainerView
menggunakanFragmentTransaction
normal di balik layar untuk menambahkan fragmen awal, memungkinkan operasiFragmentTransaction
lebih lanjut padaFragmentContainerView
dan 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
ClassCastException
saat 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-alpha03
dan Fragment1.2.0-alpha02
) selesai sebelum mengirimonDestroyView()
. (aosp/1119841) - Saat menggunakan Transition
1.3.0-beta01
, Fragmen kini membatalkan transisiandroidx.transition
dengan 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.transition
pada tampilan root Fragmen ketika menggunakanFragmentContainerView
. (b/140361893) - Artefak
fragment-testing
kini bergantung pada AndroidX Test1.2.0
, yang memperbaiki inkompatibilitas dengan Espresso 3.2.0 terbaru. (b/139100149) - Menghapus penggunaan
Log.w
dalam 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()
padaFragment
sudah tidak digunakan lagi dan diganti dengan metodegetParentFragmentManager()
tunggal, yang menampilkanFragmentManager
non-null tempat Fragment ditambahkan (Anda dapat menggunakanisAdded()
untuk menentukan apakah metode tersebut aman untuk dipanggil). (b/140574496) - Metode
FragmentManager.enableDebugLogging
statis kini sudah tidak digunakan lagi. FragmentManager sekarang mengikutiLog.isLoggable()
untuk tagFragmentManager
, yang memungkinkan Anda mengaktifkan loggingDEBUG
atauVERBOSE
tanpa 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
FragmentContainerView
sekarang menjadifinal
. (b/140133091)
Perbaikan bug
FragmentContainerView
kini 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
SavedStateViewModelFactory
kini 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_FADE
dengansetTransition
diFragmentTransaction
telah diupdate agar sesuai dengan animasi yang digunakan oleh aktivitas di perangkat Android 10. (aosp/1012812, aosp/1014730)
Perubahan API
- Memperkenalkan
FragmentContainerView
sebagai 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()
padaFragmentTransaction
yang menggunakanClass<? extends Fragment>
danBundle
opsional argumen. Metode ini menggunakanFragmentFactory
Anda 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
@MainThread
telah ditambahkan ke callback siklus prosesFragment
. (b/127272564) - API yang terkait dengan judul breadcrumb pada
FragmentTransaction
danFragmentManager.BackStackEntry
kini sudah tidak digunakan lagi. (b/138252944) - Metode
setTransitionStyle
padaFragmentTransaction
tidak digunakan lagi. (aosp/1011537) - Banyak metode dalam
FragmentManager
kini sudah tidak lagiabstract
.FragmentManager
sendiri tetapabstract
dan 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 diFragmentPagerAdapter
danFragmentStatePagerAdapter
saat 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
NullPointerException
saat menggunakan transisi elemen bersama dan menggabungkan operasi pop dan add. (b/120507394) - Menambahkan solusi ke
IllegalStateException
saat menggunakanFragmentPagerAdapter
danFragmentStatePagerAdapter
dalam 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
NullPointerException
saat memunculkanFragmentTransaction
yang 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-testing
menyediakan classFragmentScenario
untuk menguji fragmen dalam isolasi. Lihat dokumentasi Menguji fragmen aplikasi Anda untuk detail selengkapnya. - FragmentFactory: Anda kini dapat menetapkan
FragmentFactory
padaFragmentManager
untuk mengelola pembuatan instance fragmen, menghapus persyaratan ketat untuk memiliki konstruktor tanpa argumen. - Delegasi Properti Kotlin untuk ViewModels: Artefak
fragment-ktx
sekarang 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.FragmentPagerAdapter
danFragmentStatePagerAdapter
memiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru. - Konstruktor LayoutId FragmentActivity: Subclass
FragmentActivity
kini dapat secara opsional memanggil konstruktor padaFragmentActivity
yang 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
Fragment
kini dapat secara opsional memanggil konstruktor padaFragment
yang 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
FragmentPagerAdapter
danFragmentStatePagerAdapter
saat 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
NullPointerException
saat memunculkanFragmentTransaction
yang 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
OnBackPressedCallback
yang 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
FragmentFactory
instantiate
yang sebelumnya tidak digunakan lagi yang menggunakanBundle
telah dihapus. aosp/953856 - Perubahan yang dapat menyebabkan gangguan: Konstanta
RESUME_ONLY_CURRENT_FRAGMENT
danUSE_SET_USER_VISIBLE_HINT
dalamFragmentPagerAdapter
danFragmentStatePagerAdapter
masing-masing telah diganti namanya menjadiBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
danBEHAVIOR_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.FragmentPagerAdapter
danFragmentStatePagerAdapter
memiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru. (b/129780800)
Perubahan API
moveToState(STARTED)
padaFragmentScenario
sekarang 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 konstruktorcontentLayoutId
dariFragmentActivity
atauAppCompatActivity
. (b/129907905) - Memperbaiki masalah ketika fragmen pada data sebelumnya tidak dialihkan setidaknya ke
CREATED
setelah perubahan konfigurasi, menyebabkan ViewModels dan fragmen yang dipertahankan turunan tidak dapat dihapus dengan benar. (b/129593351) - Memperbaiki error dalam
restoreSaveState
yang disebabkan oleh pembatalan sinkronisasi fragmen yang dipertahankan setelah status instance disimpan. (b/130433793) (aosp/947824) - Memperbaiki masalah yang menyebabkan
OnBackPressedCallback
yang ditambahkan dengan siklus proses fragmen tidak dipanggil jikaFragmentManager
memiliki data sebelumnya. Lihat androidx.activity 1.0.0-alpha07 untuk detail selengkapnya. (aosp/948209) - Fragment tidak lagi memberlakukan
LAYER_TYPE_HARDWARE
untuk 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
Fragment
danFragmentActivity
kini 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
instantiate
FragmentFactory yang menggunakan Paket argumen kini sudah tidak digunakan lagi dan aplikasi harus menggunakan overloadinstantiate
baru yang tidak menggunakan Paket. (b/128836103) - Metode
FragmentScenario
kini dianotasikan dengan benar menggunakan@StyleRes
. (aosp/924193) FragmentTabHost
tidak 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
@ContentView
pada 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
@ContentView
kini 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
onNewIntent
untukFragmentActivity
sekarang ditandai dengan benar menggunakan@CallSuper
(b/124120586)- Memperbaiki masalah ketika
onDismiss()
dariDialogFragment
dipanggil 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
@ContentView
yang memungkinkan Anda menunjukkan file XML tata letak yang harus diperluas sebagai alternatif untuk menggantikanonCreateView()
. Sebaiknya lakukan pekerjaan terkait tampilan dalamonViewCreated()
. (aosp/837619) fragment-testing
kini bergantung padaandroidx.test:core-ktx
1.1.0 stabil (b/121209673)- Anda kini dapat menggunakan
openActionBarOverflowOrOptionsMenu
denganFragmentScenario
untuk menguji menu opsi yang dihosting Fragmen (b/121126668)
Perubahan API
- Menambahkan metode
requireArguments()
yang menampilkan@NonNull Bundle
atauIllegalStateException
(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
null
kesetTargetFragment()
. (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
BundleSavedStateRegistryOwner
dan bergantung pada library SavedState yang baru dirilis [aosp/824380] - Delegasi properti Kotlin
by activityViewModels
telah ditambahkan untuk mengambil ViewModels yang terkait dengan Aktivitas yang memuatnya [b/119050253] - Delegasi properti Kotlin
by viewModels
telah diperluas untuk menggunakan metode lambda opsional guna mendapatkanViewModelStoreOwner
, yang memungkinkan Anda meneruskan Fragmen induk atauViewModelStoreOwner
kustom lainnya dengan kode sepertival viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
Perubahan API
FragmentScenario
kini memungkinkan Anda menentukan tema sepertiTheme.AppCompat
[b/119054431]. Ini adalah perubahan yang dapat menyebabkan gangguan.- Menambahkan metode
requireView()
yang menampilkan@NonNull View
atauIllegalStateException
[b/120241368] - Menambahkan metode
requireParentFragment()
yang menampilkan@NonNull Fragment
atauIllegalStateException
[b/112103783]
Perbaikan bug
- Memperbaiki status penyimpanan IllegalStateException: Failure b/120814739
- Fragmen yang sedang dipulihkan dari status instance tersimpan sekarang akan selalu menerima
Bundle
non-null [b/119794496] - Fragment yang dihapus tidak lagi menggunakan kembali objek
Lifecycle
miliknya 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
FragmentFactory
padaFragmentManager
apa 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-testing
bergantung padaandroidx.test:core:1.0.0-beta01
, bukanandroidx.test:core:1.0.0
yang benar.