Fragment

Membagi aplikasi Anda menjadi beberapa layar mandiri yang dihosting dalam Activity.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
20 Maret 2024 1.6.2 - 1.7.0-beta01 -

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.6.2"

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

Kotlin

dependencies {
    val fragment_version = "1.6.2"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$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.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.7

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 di Kotlin sehingga nullability jenis Host generik cocok dengan nullability jenis nilai yang ditampilkan onGetHost(). (I40af5)

Perbaikan Bug

  • Memperbaiki masalah saat melakukan gestur Kembali Prediktif pada fragmen yang tidak ada dalam penampung, fragmen tersebut tidak akan pernah dihancurkan. Fragment sekarang akan segera dipindahkan ke status akhir. Ida0d9
  • Memperbaiki masalah di Fragment yang mengganggu transisi masuk dengan gestur kembali Prediktif akan menghancurkan tampilan 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 AndroidX Transition, Fragment akan menampilkan NullPointerException dari handleOnBackProgressed jika tidak ada FragmentManager.OnBackStackChangedListener yang ditambahkan melalui addOnBackStackChangedListener. (I7c835)

Versi 1.7.0-alpha09

24 Januari 2024

androidx.fragment:fragment-*:1.7.0-alpha09 dirilis. Versi 1.7.0-alpha09 berisi commit ini.

Artefak Compose Fragment

Artefak fragment-compose baru telah dibuat yang berfokus pada aplikasi pendukung yang sedang dalam proses berpindah dari arsitektur berbasis Fragment ke arsitektur berbasis Compose 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 menyetel ViewCompositionStrategy yang benar. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

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

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

Fitur Baru

  • FragmentManager.OnBackStackChangedListener() kini menyediakan onBackStackChangeProgressed() dan onBackStackChangeCancelled() untuk menerima masing-masing progres kembali prediktif dan peristiwa yang dibatalkan. (214b87)

Masalah Umum

  • Saat menggunakan dukungan Kembali Prediktif Fragment untuk Animator atau AndroidX Transition, Fragment akan menampilkan NullPointerException dari handleOnBackProgressed jika tidak ada FragmentManager.OnBackStackChangedListener yang ditambahkan melalui addOnBackStackChangedListener. Menambahkan pemroses secara manual akan mengatasi error tersebut. Perbaikan akan tersedia untuk masalah ini dalam rilis Fragment berikutnya.

Versi 1.7.0-alpha08

10 Januari 2024

androidx.fragment:fragment-*:1.7.0-alpha08 dirilis. Versi 1.7.0-alpha08 berisi commit ini.

Pembersihan

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 menyetel transisi elemen bersama dan juga gagal menetapkan enter/exitTransition. (I8472b)
  • Dari Fragment 1.6.2: Saat Fragment FragmentContainerView di-inflate, statusnya seperti FragmentManager, Host, dan ID kini dapat diakses di callback onInflate. (I1e44c, b/307427423)
  • Dari Fragment 1.6.2: Saat menggunakan clearBackStack untuk menghapus kumpulan fragmen, ViewModel Fragment bertingkat apa pun kini akan dihapus saat ViewModels 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

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 menyediakan dukungan untuk kembali Prediktif saat menggunakan Androidx Transitions. Hal ini memungkinkan Anda menggunakan gestur kembali untuk mencari fragmen sebelumnya dengan Androidx Transition kustom sebelum memutuskan untuk melakukan atau membatalkan transaksi melalui gestur yang telah selesai. Anda harus bergantung pada rilis Transition 1.5.0-alpha03 untuk mengaktifkan fitur ini. (Ib49b4, b/285175724)

Masalah Umum

  • Saat ini ada masalah. Setelah Anda membatalkan gestur kembali dengan transisi sekali, saat berikutnya Anda memulai gestur kembali, gestur tersebut akan gagal menjalankan transisi dan menyebabkan layar kosong. Hal ini mungkin disebabkan oleh masalah di library Transition. (b/300157785). Jika Anda melihat masalah ini, ajukan masalah terhadap Fragmen dengan project contoh yang mereproduksi masalah Anda. Anda dapat menonaktifkan kembali prediktif menggunakan FragmentManager.enabledPredictiveBack(false) di onCreate() 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 berjalan dengan Transitions. (I59f36)
  • Memperbaiki masalah saat menggunakan Kembali Prediktif dengan fragmen saat mencoba kembali dua kali berturut-turut 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 Fragment saat menggunakan kembali prediktif yang menyebabkan fragmen pertama di data sebelumnya pengelola fragmen dilewati dan Aktivitas selesai saat menggunakan kembali sistem melalui 3 navigasi tombol atau gestur kembali prediktif. (I0664b, b/295231788)

Versi 1.7.0-alpha02

9 Agustus 2023

androidx.fragment:fragment-*:1.7.0-alpha02 dirilis. Versi 1.7.0-alpha02 berisi commit ini.

Perbaikan Bug

  • Saat menggunakan Fragment dengan Gestur Kembali Prediktif dari API 34, jika Anda menggunakan sistem transisi yang tidak mendukung pencarian (Animations, Transitions) atau tanpa 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 meng-commit transaksi melalui gestur yang telah selesai atau membatalkan. Anda juga dapat menonaktifkan perilaku baru ini menggunakan enablePredictiveBack() eksperimental dan meneruskan false.

Versi 1.6

Versi 1.6.2

1 November 2023

androidx.fragment:fragment-*:1.6.2 dirilis. Versi 1.6.2 berisi commit ini.

Perbaikan Bug

  • Saat Fragment FragmentContainerView di-inflate, statusnya seperti FragmentManager, Host, dan ID kini dapat diakses di callback onInflate. (I1e44c, b/307427423)
  • Saat menggunakan clearBackStack untuk menghapus kumpulan fragmen, semua ViewModel Fragmen bertingkat sekarang akan dihapus saat ViewModels 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 ada di data sebelumnya saat menggunakan beberapa API data sebelumnya untuk menyimpan dan memulihkan fragmen tersebut. (I71288, b/246289075)

Pembaruan Dependensi

  • Fragment sekarang bergantung pada Activity 1.7.2. Perubahan ini memperbaiki masalah saat pengguna Kotlin tidak dapat memperluas ComponentDialog tanpa dependensi eksplisit pada Activity. (b/287509323)

Versi 1.6.0

7 Juni 2023

androidx.fragment:fragment-*:1.6.0 dirilis. Versi 1.6.0 berisi commit ini.

Perubahan penting sejak versi 1.5.0

  • Status tersimpan Fragment telah dibagi sepenuhnya antara status library pribadi (class Parcelable khusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalam Bundle yang memungkinkan penentuan tempat asal fragmen dengan tepat.
  • Antarmuka FragmentManager.OnBackStackChangedListener telah diperluas dengan dua callback tambahan onBackStackChangeStarted dan onBackStackChangeCommitted yang dipanggil dengan masing-masing Fragment tepat sebelum ditambahkan/dihapus dari data fragmen sebelumnya dan tepat setelah transaksi di-commit.
  • FragmentStrictMode menambahkan WrongNestedHierarchyViolation baru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan ke childFragmentManager induk.
  • Fragment API dan FragmentManager API yang menggunakan Intent atau IntentSender 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.
  • DialogFragment kini menyediakan akses ke ComponentDialog yang mendasarinya melalui requireComponentDialog() API.
  • Fragment kini bergantung pada Lifecycle 2.6.1.
  • Fragment kini bergantung pada SavedState 1.2.1.
  • Fragment sekarang 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")
    

    Tindakan ini menghindari konflik karena perbedaan versi antara fragment-testing dan androidx.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

  • Diperbaiki sebagai masalah yang menyebabkan ActivityResult dikirim dengan kode permintaan yang salah saat beberapa permintaan startActivityForResult telah dibuat secara berturut-turut. (If0b9d, b/249519359)
  • Memperbaiki masalah saat callback onBackStackChangeListener dikirim untuk transaksi yang benar-benar tidak mengubah data sebelumnya jika tercampur dengan transaksi yang melakukan transaksi. (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 mengakibatkan kebocoran fragmen yang ditunda. (I2ec7d, b/276375110)
  • Callback onBackStackChangeStarted dan onBackStackChangeCommitted yang 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 ke ComponentDialog yang mendasarinya melalui requireComponentDialog() API. (I022e3, b/234274777)
  • Fragmen commitNow(), executePendingTransactions(), dan popBackStackImmediate() API telah dianotasi dengan @MainThread yang berarti API tersebut kini akan menampilkan error build saat tidak dipanggil dari thread utama, bukan menunggu untuk gagal saat runtime. (Ic9665, b/236538905)

Perbaikan Bug

  • Memperbaiki bug FragmentManager saat menyimpan dan memulihkan dalam frame yang sama dapat menyebabkan error. (Ib36af, b/246519668)
  • Callback OnBackStackChangedListener onBackStackChangeStarted dan onBackStackChangeCommitted sekarang hanya dieksekusi saat data sebelumnya FragmentManager 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 dieksekusi sebelum operasi fragmen dieksekusi. Hal ini memastikan bahwa callback tidak akan pernah menerima fragmen yang terlepas. (I66a76, b/273568280)

Perbaikan Bug

  • Dari Fragment 1.5.6: Memperbaiki masalah saat memanggil clearFragmentResultListener di dalam setFragmentResultListener tidak akan berfungsi jika Lifecycle sudah STARTED dan hasilnya sudah tersedia. (If7458)

Update Dependensi

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 yang telah menambahkan item Menu maupun belum, 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 pada onBackStackChangedListener 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 dan onBackStackChangeCommitted, yang memungkinkan informasi tambahan dan kontrol saat perubahan data sebelumnya terjadi di FragmentManager. (Ib7ce5, b/238686802)

Perubahan API

  • Fragment API dan FragmentManager API yang menggunakan Intent atau IntentSender 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 menambahkan WrongNestedHierarchyViolation baru yang mendeteksi saat fragmen turunan disusun bertingkat dalam hierarki Tampilan induknya, tetapi tidak ditambahkan ke childFragmentManager induk. (I72521, b/249299268)

Perubahan Perilaku

  • Fragment kini memulihkan status SavedStateRegistry sebelum onAttach(), 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 status ViewModel 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 penggantian onDismiss()-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 transaksi popBackStack() dan replace() secara bersamaan dapat menyebabkan keluarnya fragmen untuk menjalankan Animation/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 (class Parcelable khusus) dan status yang disediakan oleh developer, yang kini selalu disimpan dalam Bundle yang memungkinkan penentuan tempat asal fragmen dengan tepat. (b/207158202)

Perbaikan Bug

  • Dari Fragment 1.5.1: Memperbaiki regresi di DialogFragmentCallbacksDetector saat menggunakan versi lint yang dipaketkan dengan AGP 7.4 akan menyebabkan lint mengalami error. (b/237567009)

Pembaruan dependensi

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 mengakibatkan kebocoran fragmen yang ditunda. (I2ec7d, b/276375110)

Versi 1.5.6

22 Maret 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6, dan androidx.fragment:fragment-testing:1.5.6 dirilis. Versi 1.5.6 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah penghapusan Fragment, baik yang menambahkan item Menu maupun yang belum, akan membatalkan menu aktivitas. (50f098, b/244336571)
  • Memperbaiki masalah saat memanggil clearFragmentResultListener di dalam setFragmentResultListener tidak akan berfungsi jika Lifecycle sudah STARTED 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(), dan onConfigurationChanged(). (I34581, I8dfe6, b/242570955)
  • Fragmen turunan bertingkat tidak akan lagi menerima beberapa callback onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory(), atau onConfigurationChanged(). (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() dan replace() secara bersamaan dapat menyebabkan keluarnya fragmen untuk menjalankan Animation/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

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 menyediakan ViewModelProvider.Factory stateless melalui CreationExtras Lifecycle 2.5.0.
  • Integrasi Dialog Komponen - DialogFragment kini menggunakan ComponentDialog melalui Activity 1.5.0 sebagai dialog default yang ditampilkan oleh onCreateDialog().
  • 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 dalam Bundle, bukan langsung di Parcelable kustom.
    • Hasil yang ditetapkan melalui Fragment Result APIs yang belum ditayangkan kini disimpan secara terpisah dari status internal FragmentManager.
    • 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 Fragment.

Perubahan Lainnya

  • FragmentStrictMode kini menawarkan kemampuan bagi fragmen pihak ketiga pribadi untuk mengabaikan penalti pelanggaran tertentu menggunakan allowViolation() dengan nama class.
  • Fragment API untuk menyediakan menu ke ActionBar aktivitas Anda tidak digunakan lagi. MenuHost API dan MenuProvider API yang ditambahkan di Activity 1.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 metode dismissNow baru yang menggunakan commitNow untuk paritas dengan fungsi showNow. Perhatikan bahwa tindakan ini tidak akan membuat Dialog langsung ditutup. Tindakan ini hanya akan memperbarui status FragmentManager secara sinkron. (I15c36, b/72644830)

Pemfaktoran Ulang Status Instance Tersimpan

  • FragmentManager kini menyimpan status instance tersimpannya ke dalam Bundle, bukan langsung di Parcelable 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

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 dan MenuProvider API yang ditambahkan di Activity 1.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 penggunaan CreationExtras meskipun diinisialisasi dengan SavedStateRegistryOwner. 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 fungsi by viewModels() dan by activityViewModels(). (Ibefe7, b/217601110)

Perubahan Perilaku

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 menggunakan allowViolation() 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

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 lambda ownerProducer kustom dengan fungsi lambat by viewModels(), lambda ini sekarang akan menggunakan defaultViewModelProviderFactory dari pemilik tersebut jika ViewModelProvider.Factory kustom tidak disediakan, bukan selalu menggunakan factory fragmen. (I56170, b/214106513)
  • Memperbaiki error saat mengakses ViewModel untuk pertama kalinya dari callback registerForActivityResult() 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 lambat by viewModels(), lambda ini sekarang akan menggunakan defaultViewModelProviderFactory dari pemilik tersebut jika ViewModelProvider.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 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. Lihat StrictMode untuk fragmen.
  • FragmentContainerView kini menyediakan metode getFragment() yang akan menampilkan fragmen yang terakhir ditambahkan ke penampung. Metode ini menggunakan logika yang sama seperti findFragmentById() dengan ID FragmentContainerView, tetapi memungkinkan perantaian panggilan.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario kini mengimplementasikan Closeable sehingga Anda dapat menggunakannya dengan metode use 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 menggunakan addToBackStack() 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 instance ViewModel yang terkait dengan fragmen tersebut akan dipertahankan (dan onCleared() 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 menggunakan setReorderingAllowed(true) untuk semua transaksi yang dibuatnya saat Anda memanggil show(), showNow(), atau dismiss(). (Ie2c14)
  • Peringatan Lint DetachAndAttachFragmentInSameFragmentTransaction yang sangat panjang telah dipersingkat menjadi DetachAndAttachSameFragment. (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 panggilan detach() dan attach() pada Fragment yang sama di FragmentTransaction 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 menggunakan addMenuProvider API dari MenuHost. (aosp/1830457, b/200326272)

Pembaruan Dokumentasi

  • Pesan penghentian penggunaan untuk API yang sekarang ditangani oleh Activity Result API, yaitu startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions, dan onRequestPermissionsResult, semuanya telah diperluas dengan detail selengkapnya. (cce80f)
  • Pesan penghentian untuk onActivityCreated() untuk Fragment dan DialogFragment 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 dengan saveBackStack(name). (I70cd7)

Perubahan API

  • Class FragmentContainerView telah ditulis ulang di Kotlin yang memastikan bahwa fungsi getFragment 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 memulihkan FragmentTransaction atau sebagai salinan kedua fragmen yang muncul. (I9039f)
  • Memperbaiki masalah yang menyebabkan FragmentManager menyimpan salinan status yang sebelumnya disimpan melalui saveBackStack() bahkan setelah status tersebut dipulihkan. (Ied212)
  • Metode dismissAllowingStateLoss() dari DialogFragment tidak lagi error saat Anda memanggilnya setelah status disimpan ketika menambahkan DialogFragment secara khusus melalui metode show(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 ke GONE saat menggunakan hide() saat tampilan root menyetel transitionGroup=”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

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 menggunakan SavedStateRegistry di balik layar untuk menyimpan statusnya. Metode saveAllState() dan restoreSavedState() juga tidak digunakan lagi di FragmentController. Jika Anda menggunakan FragmentController untuk menghosting fragmen di luar FragmentActivity, Anda harus meminta FragmentHostCallbacks mengimplementasikan SavedStateRegistryOwner. (Iba68e, b/188734238)

Perbaikan Bug

  • Memperbaiki masalah saat panggilan ke saveBackStack() sebagai bagian dari dukungan beberapa data sebelumnya akan gagal jika dilakukan bersamaan dengan menjalankan FragmentTransaction yang menggunakan replace(). (I73137)
  • Memperbaiki NullPointerException yang terjadi setelah memulihkan data tersimpan sebelumnya secara manual yang berisi beberapa transaksi saat menggunakan restoreBackStack() API untuk beberapa dukungan data sebelumnya. Ini juga memperbaiki masalah saat setReorderingAllowed(true) tidak diperiksa untuk semua transaksi. (I8c593)
  • Memperbaiki masalah saat FragmentManager salah melanjutkan pemulihan status fragmen yang disimpan sebelumnya bahkan setelah fragmen tersebut dihapus dari FragmentManager, 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 pada FragmentContainerView - 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 Fragmen 1.3.4 oleh aosp/1679887. Fragmen kini menangani grup transisi dengan benar (baik disetel langsung melalui transitionGroup="true" maupun secara tidak langsung melalui transitionName atau background) dan elemen bersama tidak akan lagi membuang IndexOutOfBoundsException. (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 melalui FragmentManager, terlepas dari kebijakan mode ketat yang saat ini digunakan. (I02df6, b/187872638)
  • FragmentStrictMode kini mendukung pengecualian class Fragment tertentu dari Violation 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), setiap Violation berisi hal berikut:

    • WrongFragmentContainerViolation kini berisi ViewGroup yang berusaha ditambahkan Fragment. (I83c75, b/187871150)
    • TargetFragmentUsageViolation telah diperluas menjadi SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation, dan GetTargetFragmentRequestCodeUsageViolation, dengan SetTargetFragmentUsageViolation yang berisi fragmen target dan kode permintaan. (I741b4, b/187871150)
    • SetUserVisibleHintViolation kini berisi nilai boolean yang diteruskan ke setUserVisibleHint(). (I00585, b/187871150)
    • FragmentTagUsageViolation kini berisi ViewGroup yang berusaha di-inflate fragmen oleh tag <fragment>. (I5dbbc, b/187871150)
    • FragmentReuseViolation kini berisi ID unik instance Fragment sebelumnya yang menyebabkan pelanggaran. (I0544d, b/187871150)
    • RetainInstanceUsageViolation kini bersifat abstrak dan memiliki dua subclass, SetRetainInstanceUsageViolation dan GetRetainInstanceUsageViolation, yang mewakili dua kasus untuk jenis pelanggaran. (Ic81e5, b/187871150)

Perubahan Perilaku

  • FragmentContainerView kini menampilkan pengecualian saat mencoba mengubah atribut fitsSystemWindow 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 metode getFragment() yang akan menampilkan fragmen yang terakhir ditambahkan ke penampung. Metode ini menggunakan logika yang sama seperti findFragmentById() dengan ID FragmentContainerView, 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 menggunakan addToBackStack() 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 instance ViewModel yang terkait dengan fragmen tersebut akan dipertahankan (dan onCleared() 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 instance Fragment yang sebelumnya dihapus ditambahkan kembali ke FragmentManager. Anda tidak boleh berinteraksi dengan atau menyimpan referensi ke instance Fragment setelah referensi dihancurkan dan dihapus dari FragmentManager. (#142, b/153738653)
  • detectFragmentTagUsage() mendeteksi saat Anda menggunakan tag <fragment> dalam XML tata letak. Anda harus selalu menggunakan FragmentContainerView saat meng-inflate fragmen sebagai bagian dari tata letak. (#141, b/153738235)
  • detectWrongFragmentContainer() mendeteksi saat Anda menambahkan fragmen ke penampung yang bukan FragmentContainerView. Anda harus selalu menggunakan FragmentContainerView sebagai penampung untuk fragmen dalam tata letak. (#146, b/181137036)
  • detectRetainInstanceUsage() mendeteksi saat Anda menggunakan API setRetainInstance() atau getRetainInstance() yang tidak digunakan lagi. (#140, b/153737954)
  • detectSetUserVisibleHint() mendeteksi saat Anda menggunakan API setUserVisibleHint() yang tidak digunakan lagi. (#136, b/153738974)
  • detectTargetFragmentUsage() mendeteksi saat Anda menggunakan API setTargetFragment(), getTargetFragment(), atau getTargetRequestCode() yang tidak digunakan lagi. (#139, b/153737745)

Perubahan API

Pemeriksaan Lint baru

  • Pemeriksaan Lint UseGetLayoutInflater kini memperingatkan saat menggunakan LayoutInflater.from(Context) dalam DialogFragment. Anda harus selalu menggunakan metode getLayoutInflater() fragmen dialog agar sesuai untuk LayoutInflater. (#156, b/170781346)
  • Pemeriksaan Lint DialogFragmentCallbacksDetector kini memperingatkan saat memanggil setOnCancelListener atau setOnDismissListener dalam metode onCreateDialog() DialogFragment. Pemroses ini dimiliki oleh DialogFragment dan Anda harus menimpa onCancel() dan onDismiss() 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 API ViewTreeViewModelStoreOwner.get() dengan ViewModelProvider atau metode Jetpack Compose viewModel() di dalam Fragment. Kasus penggunaan ini kini menggunakan dengan benar ViewModelProvider.Factory yang disediakan oleh Fragment jika menggantikan getDefaultViewModelProviderFactory() (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 instance BottomNavigationBar dan FloatingActionButton. (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

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 menggunakan hide() saat tampilan root menyetel transitionGroup=”true”. (aosp/1766655, b/193603427)
  • FragmentActivity kini selalu membuka status tersimpan sebagai operasi pertamanya dalam callback siklus proses yang digantikannya. (I6db7a)

Pembaruan dependensi

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 melalui transitionGroup="true" maupun secara tidak langsung melalui transitionName atau background) dan elemen bersama tidak akan lagi membuang IndexOutOfBoundsException. (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 API ViewTreeViewModelStoreOwner.get() dengan ViewModelProvider atau metode Jetpack Compose viewModel() di dalam Fragment saat menggunakan Hilt. Kasus penggunaan ini kini menggunakan dengan benar ViewModelProvider.Factory yang disediakan oleh Fragment jika menggantikan getDefaultViewModelProviderFactory() (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 instance BottomNavigationBar dan FloatingActionButton. (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 dengan SavedStateRegistryOwner yang ditampilkan menggunakan ViewTreeSavedStateRegistryOwner.get() dengan Tampilan Fragmen. (I21acf, b/181577191)

Perbaikan Bug

  • Memperbaiki regresi yang diperkenalkan pada Fragment 1.3.2 yang akan menyebabkan animasi popEnter tidak berjalan saat memunculkan FragmentTransaction yang menyertakan operasi setPrimaryNavFragment, seperti yang digunakan oleh NavHostFragment. (I38c87, b/183877426)
  • FragmentContainerView kini memastikan bahwa setiap Fragment dikirim ke kumpulan WindowInsets 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 class Dialog khusus, memperbaiki masalah hierarki tampilan saat menggunakan kembali ID yang telah digunakan secara internal oleh dialog seperti BottomSheetDialog. (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() dan commit() 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 bahwa DialogFragment dapat digunakan dengan ComposeView. (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 fragmen toString() (I54705, b/177761088)
  • Metode yang diganti di FragmentActivity kini mewarisi metode dasar javaDoc dengan benar (I736ce, b/139548782)
  • Dokumen untuk setFragmentResult dan setFragmentResultListener 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 ke RESUMED (I452ac, (I9fa49)

Update Dependensi

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 Activity 1.2.0 untuk menangani aliran startActivityForResult() + onActivityResult() serta requestPermissions() + 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 dalam FragmentActivity atau AppCompatActivity.
  • 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 sedang STARTED. API fragmen target tidak digunakan lagi dan digantikan dengan API baru ini. Lihat Mendapatkan Hasil menggunakan Fragment Result API.

  • FragmentOnAttachListener: Callback onAttachFragment() di FragmentActivity dan Fragment tidak digunakan lagi. FragmentOnAttachListener baru telah ditambahkan untuk memberikan alternatif yang lebih fleksibel, memungkinkan delegasi onAttachFragment() ke pemroses terpisah yang dapat diuji serta dukungan untuk menambahkan pemroses ke FragmentManager selain FragmentManager turunan langsung Anda.

  • Penyempurnaan FragmentScenario: Class FragmentScenario dari artefak fragment-testing telah ditulis ulang dalam Kotlin dan telah menerima sejumlah peningkatan:

    • FragmentScenario sekarang menggunakan setMaxLifecycle() untuk mengimplementasikan moveToState(), memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya.
    • FragmentScenario sekarang mendukung penyetelan Lifecycle.State awal untuk mendukung pernyataan status fragmen sebelum berpindah ke setiap Lifecycle.State untuk pertama kalinya.
    • Sekarang ada alternatif ke FragmentScenario API dari onFragment dalam bentuk reifikasi metode ekstensi Kotlin withFragment yang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu.
  • Dukungan ViewTree: Fragment sekarang mendukung API ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View), dan ViewTreeSavedStateRegistryOwner yang ditambahkan di Lifecycle 2.3.0 dan SavedState 1.1.0 sehingga API tersebut akan menampilkan Fragment sebagai ViewModelStoreOwner, dan SavedStateRegistryOwner serta LifecycleOwner terikat ke Lifecycle tampilan fragmen saat menggunakan View dalam Fragment.

  • Perubahan animasi TRANSIT_: Efek default fragmen, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, dan TRANSIT_FRAGMENT_FADE, sekarang menggunakan Animator, bukan Animation. Resource yang digunakan untuk membuat animasi ini sekarang bersifat pribadi.

  • Penghentian penggunaan setRetainInstance(): Metode setRetainInstance() 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, konstruktor ViewModel dan callback onCleared() yang diterimanya).

  • Penghentian penggunaan adaptor ViewPager 1: Dengan dirilisnya ViewPager2 1.0.0, class FragmentPagerAdapter dan FragmentStatePagerAdapter untuk berinteraksi dengan ViewPager 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 turunan DialogFragment setelah perubahan konfigurasi; fragmen dialog turunan kini selalu muncul di atas fragmen dialog induk. (I30806, b/177439520)
  • Memperbaiki masalah saat melakukan operasi hide dengan Animation 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 sebelum Lifecycle menjangkau CREATED, 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 menggunakan FragmentContainerView. (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 seperti onCreateOptionsMenu() dan tidak lagi dipanggil saat fragmen induk memanggil setMenuVisibility(false). (Id7de8, b/173203654)

Perbaikan Bug Pengelola Status Baru

  • Memperbaiki kebocoran dan artefak visual saat menambahkan fragmen dengan Animation ke FragmentContainerView, lalu mengganggu penambahan tersebut dengan operasi pop. (I952d8)
  • Memperbaiki masalah tampilan fragmen yang akan tetap berada dalam hierarki tampilan jika diganti selama metode onCreate() atau onViewCreated(). (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 untuk FragmentAction. (I19d31)

Perubahan Perilaku

  • FragmentContainerViews yang tidak meng-inflate fragmen menggunakan atribut class atau android:name kini dapat digunakan di luar FragmentActivity. (Id4397, b/172266337)
  • Mencoba menetapkan siklus proses maksimum fragmen ke DESTROYED kini akan menampilkan IllegalArgumentException (Ie7651, b/170765622)
  • Menginisialisasi FragmentScenario dengan status DESTROYED kini akan memunculkan IllegalArgumentException (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 opsi TRANSIT_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 keluar hide() 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 instance ClassLoader 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 status Lifecycle ke INITIALIZING selama fragmen belum dipindahkan ke CREATED. (b/159662173)

Perubahan API

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() hingga CREATED 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 dengan FragmentManager non-null akan selalu dianggap aktif. (aosp/1422346)
  • Efek default fragmen, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, dan TRANSIT_FRAGMENT_FADE, kini menggunakan Animator bukan Animation. (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 daripada Animations, yang berarti fragmen dengan keduanya hanya akan menjalankan Animator dan mengabaikan Animation. (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 efek Transition atau Animator dan Transition pada fragmen individual akan berjalan. (b/149569323)
  • enterTransition dan exitTranstion 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 ke STARTED 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 memanggil findFragmentById() atau findFragmentByTag() dari dalam callback onAttachFragment(). (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 AndroidX Transition kini menyebutkan fragmen dengan transisi yang tidak valid. (b/155574969)

Perubahan Perilaku

  • Anda sekarang dapat memanggil launch() di ActivityResultLauncher dalam metode siklus proses onCreate() dari sebuah fragmen. (b/161464278)
  • Kini memanggil registerForActivityResult() setelah onCreate() akan menampilkan pengecualian yang menunjukkan bahwa tindakan ini tidak diizinkan dan tidak otomatis memberikan hasil setelah perubahan konfigurasi. (b/162255449)
  • FragmentActivity sekarang menggunakan OnContextAvailableListener API yang diperkenalkan di Activity 1.2.0-alpha08 untuk memulihkan status FragmentManager. Setiap pemroses yang ditambahkan ke subclass FragmentActivity akan berjalan setelah pemroses ini. (I513da)

Perbaikan Bug

  • ActivityOptions yang diteruskan saat menggunakan startIntentSenderForResult() sekarang diterima. (b/162247961)

Masalah Umum

  • Saat menggunakan pengelola status baru, langsung menyetel visibilitas tampilan akar fragmen setelah onViewCreated() dan sebelum onResume() akan menghasilkan visibilitas yang Anda setel agar diganti oleh FragmentManager, yang mengontrol visibilitas tampilan root. Sebagai solusinya, Anda harus selalu menggunakan operasi hide() dan show() 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 awal CREATED, STARTED, atau RESUMED daripada selalu memindahkan Fragmen ke RESUMED. (b/159662750)
  • Menambahkan alternatif ke API FragmentScenario dari onFragment dalam bentuk metode ekstensi reifikasi Kotlin withFragment yang memungkinkan Anda menampilkan nilai. Ini khususnya akan memunculkan kembali pengecualian yang ditampilkan dalam blok tertentu. (b/158697631)

Perubahan Perilaku

  • FragmentScenario sekarang menggunakan setMaxLifecycle() untuk mengimplementasikan moveToState(), memastikan perilaku yang konsisten di semua API level dan memisahkan status Fragment dari Activity yang mendasarinya. (b/156527405)
  • SavedStateRegistryOwner yang dikembalikan oleh ViewTreeSavedStateRegistryOwner 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() pada FragmentActivity dan Fragment tidak digunakan lagi. FragmentOnAttachListener baru telah ditambahkan untuk memberikan alternatif yang lebih fleksibel, memungkinkan delegasi onAttachFragment() 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 menampilkan DialogFragment 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

Perubahan API

  • API setFragmentResult() dan setFragmentResultListener() kini menggunakan FragmentResultListener dan Bundle non-null secara berurutan. Untuk menghapus pemroses atau hasil yang ditetapkan sebelumnya secara eksplisit, gunakan metode clearFragmentResult() dan clearFragmentResultListener() baru. (b/155416778)
  • Ekstensi Kotlin setFragmentResultListener() yang menggunakan lambda kini ditandai sebagai inline. (b/155323404)

Perubahan Perilaku

  • startActivityForResult(), startIntentSenderForResult(), dan requestPermissions yang sebelumnya tidak digunakan lagi di Fragment kini menggunakan ActivityResultRegistry secara internal, sehingga menghapus batasan pada penggunaan khusus bit yang lebih rendah (di bawah 0xFFFF) untuk kode permintaan Anda saat menggunakan API tersebut. (b/155518741)

Pembaruan Dokumentasi

  • Memperluas dokumentasi pada konstruktor Fragment(@LayoutRes int) dan DialogFragment(@LayoutRes int) untuk mengklarifikasi bahwa keduanya harus dipanggil dari konstruktor tanpa argumen subclass Anda saat menggunakan FragmentFactory 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 sedang STARTED. (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 dan requestPermissions()/onRequestPermissionsResult() API pada Fragmen tidak digunakan lagi. Harap gunakan Activity Result API. (aosp/1290887)
  • Perubahan yang dapat menyebabkan gangguan dari Activity1.2.0-alpha04: metode prepareCall() telah diganti namanya menjadi registerForActivityResult(). (aosp/1278717)

Perbaikan Bug

  • getViewLifecycleOwner() fragmen kini dihentikan sebelum onSaveInstanceState() 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 tampilan DialogFragment dengan FragmentContainerView. (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 di Fragment kini menjadi final. (b/152439361)

Perbaikan Bug

  • Memperbaiki regresi yang diperkenalkan di Fragment 1.3.0-alpha02 saat menggunakan BottomSheetDialogFragment. (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 Lint FragmentLiveDataObserve pada class DialogFragment karena siklus proses dan siklus proses tampilan mereka selalu sinkron, sehingga membuat this atau viewLifecycleOwner aman digunakan saat memanggil observe. (b/151765086)

Perubahan Dependensi

  • Fragment bergantung pada Activity 1.2.0-alpha03, yang memiliki peningkatan signifikan pada Activity Result API yang diperkenalkan dalam Activity 1.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 Activity 1.2.0-alpha02 untuk menangani startActivityForResult()+onActivityResult() serta flow requestPermissions()+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 oleh onCreateView(). (b/150327080)
  • Metode onActivityCreated() kini tidak digunakan lagi. Kode yang menyentuh tampilan fragmen harus dilakukan di onViewCreated() (yang dipanggil tepat sebelum onActivityCreated()) dan kode inisialisasi lainnya harus berada di onCreate(). Untuk menerima callback secara khusus saat onCreate() aktivitas selesai, LifeCycleObserver harus terdaftar di Lifecycle aktivitas di onAttach(), dan dihapus setelah callback onCreate() diterima. (b/144309266)

Perbaikan Bug

  • Dari Fragmen 1.2.3: Memperbaiki bug di DialogFragment yang menyebabkan StackOverflowError saat memanggil getLayoutInflater() dari dalam onCreateDialog(). (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 Lint UseRequireInsteadOfGet saat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163)
  • Dari Fragmen 1.2.3: FragmentContainerView tidak lagi melemparkan UnsupportedOperationException 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

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, konstruktor ViewModel dan callback onCleared() yang diterimanya). (b/143911815)
  • Dengan dirilisnya ViewPager2 1.0.0, class FragmentPagerAdapter dan FragmentStatePagerAdapter untuk berinteraksi dengan ViewPager 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 instance Fragment, yang memperbaiki regresi yang diperkenalkan dalam Fragment 1.2.1. (b/149665169
  • Aturan Lint require___() yang ditambahkan dalam Fragmen 1.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 melemparkan UnsupportedOperationException 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 sebelum onSaveInstanceState() dipanggil, yang mencerminkan perilaku siklus proses fragmen tersebut. Ini sebelumnya dirilis di Fragment 1.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 Fragment 1.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 class DialogFragment karena siklus proses dan siklus proses tampilannya selalu disinkronkan, sehingga this maupun viewLifecycleOwner aman untuk digunakan saat memanggil observe. (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 menyebabkan StackOverflowError saat memanggil getLayoutInflater() dari dalam onCreateDialog(). (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 melemparkan UnsupportedOperationException 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 sebagai LifecycleOwner untuk memanggil OnBackPressedDispatcher dalam onCreateView(), onViewCreated(), dan onActivityCreated(). (b/142117657)
  • Menambahkan pemeriksaan Lint baru yang mengonfirmasi bahwa Anda menggunakan debugImplementation yang benar saat menggunakan artefak fragment-testing. (b/141500106)
  • Fragmen kini menyarankan penggunaan metode require___() terkait untuk pesan error yang lebih deskriptif, bukan checkNotNull(get___()), requireNonNull(get___()), atau get___()!! untuk semua Fragment API yang menyertakan get dan require 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 menggunakan observe untuk menangani versi metode ekstensi livedata-ktx dari observe. (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 dan replace yang menggunakan instance Class (atau versi reifikasi Kotlin) kini memiliki konstruktor default yang dipertahankan oleh ProGuard. (b/148181315)
  • FragmentStatePagerAdapter dan FragmentPagerAdapter tidak lagi mengambil pengecualian yang dilemparkan oleh FragmentManager saat menjalankan finishUpdate(). (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 ke onInflate() sebelum onCreate() saat berada di tata letak. (aosp/1215856)
  • Memanggil toString() pada instance FragmentManager tidak lagi melemparkan NullPointerException saat Activity telah dihapus. (b/148189412)

Perubahan dependensi

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 penggunaan FrameLayout atau tata letak lainnya. Penampung ini juga mendukung class, android:name yang sama, dan android:tag opsional sebagai tag <fragment>, tetapi menggunakan FragmentTransaction 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 Transition 1.3.0) sebelum memanggil onDestroyView().
  • add() dan replace() berbasis class: Menambahkan overload add() dan replace() baru di FragmentTransaction yang menggunakan Class<? extends Fragment> dan Bundle argumen opsional. Metode ini menggunakan FragmentFactory Anda untuk membuat instance Fragment yang akan ditambahkan. Ekstensi kotlin yang menggunakan jenis reified (misalnya, fragmentTransaction.replace<YourFragment>(R.id.container)) juga telah ditambahkan ke fragment-ktx.
  • Integrasi Lifecycle ViewModel SavedState: SavedStateViewModelFactory sekarang menjadi setelan pabrik default yang digunakan saat menggunakan by viewModels(), by activityViewModels(), konstruktor ViewModelProvider, atau ViewModelProviders.of() dengan Fragmen.
  • Pemeriksaan Lint baru: Menambahkan pemeriksaan Lint baru yang memastikan Anda menggunakan getViewLifecycleOwner() saat mengamati LiveData dari onCreateView(), onViewCreated(), atau onActivityCreated().
  • Penghentian getFragmentManager(): Metode getFragmentManager() dan requireFragmentManager() di Fragment sudah tidak digunakan lagi dan diganti dengan metode getParentFragmentManager() tunggal, yang menampilkan FragmentManager non-null tempat Fragment ditambahkan (Anda dapat menggunakan isAdded() untuk menentukan apakah metode tersebut aman untuk dipanggil).
  • Penghentian FragmentManager.enableDebugLogging(): Metode FragmentManager.enableDebugLogging statis sudah tidak digunakan lagi. FragmentManager sekarang mengikuti Log.isLoggable() untuk tag FragmentManager, memungkinkan Anda mengaktifkan logging DEBUG atau VERBOSE tanpa mengompilasi ulang aplikasi.

Masalah Umum

  • Fragmen yang hanya direferensikan melalui atribut class atau android:name pada FragmentContainerView tidak otomatis disimpan oleh ProGuard, sehingga Anda harus menambahkan aturan secara manual untuk mempertahankan setiap class fragmen. (b/142601969)
  • Saat menambahkan NavHostFragment menggunakan class atau android:name dalam XML dengan FragmentContainerView, Anda tidak dapat menggunakan findNavController() dalam onCreate() 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 menyebabkan onViewCreated() 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 ke CREATED 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, dan TRANSIT_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() dan getFragmentFactory() untuk menunjukkan dengan lebih baik bahwa dengan menetapkan FragmentFactory juga akan memengaruhi FragmentManagers turunan. (aosp/1170095)

Perubahan dependensi

  • Fragmen kini bergantung pada Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, dan Activity 1.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 mengamati LiveData dari onCreateView(), onViewCreated(), atau onActivityCreated() (diperkenalkan dalam Fragmen 1.2.0-rc01) sekarang menggunakan sintaksis akses properti Kotlin viewLifecycleOwner, bukan getViewLifecycleOwner(). (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 atribut class selain android:name, mencerminkan fungsi tag <fragment>. (b/142722242)
  • Menambahkan pemeriksaan Lint baru yang memastikan Anda menggunakan getViewLifecycleOwner() saat mengamati LiveData dari onCreateView(), onViewCreated(), atau onActivityCreated(). (b/137122478)

Perbaikan bug

  • Callback onDismiss dan onCancel pada DialogFragment sekarang menjamin bahwa DialogInterface yang diteruskan ke callback tersebut bukanlah null dan bahwa getDialog() menampilkan non-null saat dijalankan. (b/141974033)
  • FragmentContainerView kini menambahkan Fragment yang ditentukan oleh class atau android:name sebagai bagian dari perluasan, memastikan bahwa findFragmentById() dan findFragmentByTag() bekerja secara langsung setelahnya. (b/142520327)
  • Memperbaiki IllegalStateException dalam FragmentContainerView dikarenakan status sedang disimpan. (b/142580713)
  • Memperbaiki UnsupportedOperationException dalam FragmentContainerView ketika obfuscation dilakukan pada class FragmentContainerView. (b/142657034)

Masalah umum

  • Fragmen yang hanya direferensikan melalui atribut class atau android:name pada FragmentContainerView 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 ke FragmentContainerView sampai hal ini diperbaiki melalui aapt2. (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 dari FragmentContainerView, melanggar kasus seperti NavHostFragment. (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 bagi android:name dan atribut XML android:tag opsional. Tidak seperti tag <fragment>, FragmentContainerView menggunakan FragmentTransaction normal di balik layar untuk menambahkan fragmen awal, memungkinkan operasi FragmentTransaction lebih lanjut pada FragmentContainerView dan memungkinkan penggunaan View Binding untuk tata letak. (b/139830628, b/141177981)
  • Fragmen kini berisi peringatan Lint yang menawarkan perbaikan cepat untuk mengganti <fragment> dengan FragmentContainerView. (b/139830056)

Perbaikan bug

  • Memperbaiki ClassCastException saat menggunakan androidx.transition. (b/140680619)
  • Saat menggunakan Transition 1.3.0-beta01, Fragment kini akan menunggu transisi androidx.transition (selain transisi framework dan animasi, yang masing-masing telah diperbaiki dalam Fragment 1.2.0-alpha03 dan Fragment 1.2.0-alpha02) selesai sebelum mengirim onDestroyView(). (aosp/1119841)
  • Saat menggunakan Transition 1.3.0-beta01, Fragmen kini membatalkan transisi androidx.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 menggunakan FragmentContainerView. (b/140361893)
  • Artefak fragment-testing kini bergantung pada AndroidX Test 1.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 dari FragmentContainerView, sehingga melanggar kasus seperti NavHostFragment. (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() dan requireFragmentManager() pada Fragment sudah tidak digunakan lagi dan diganti dengan metode getParentFragmentManager() tunggal, yang menampilkan FragmentManager non-null tempat Fragment ditambahkan (Anda dapat menggunakan isAdded() untuk menentukan apakah metode tersebut aman untuk dipanggil). (b/140574496)
  • Metode FragmentManager.enableDebugLogging statis kini sudah tidak digunakan lagi. FragmentManager sekarang mengikuti Log.isLoggable() untuk tag FragmentManager, yang memungkinkan Anda mengaktifkan logging DEBUG atau VERBOSE 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 menjadi final. (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 mengirimkan onDestroyView(). (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 menggunakan by viewModels(), by activityViewModels(), konstruktor ViewModelProvider, atau ViewModelProviders.of() dengan Fragment. (b/135716331)
  • Animasi default saat menggunakan TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE dengan setTransition di FragmentTransaction telah diperbarui agar sesuai dengan animasi yang digunakan oleh aktivitas di perangkat Android 10. (aosp/1012812, aosp/1014730)

Perubahan API

  • Memperkenalkan FragmentContainerView sebagai container yang sangat direkomendasikan untuk Fragment yang ditambahkan secara dinamis, yang menggantikan penggunaan FrameLayout, dll. karena dapat memperbaiki masalah pengurutan z animasi dan inset jendela yang dikirim ke Fragment. (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 di fragment-ktx. (aosp/1090757)
  • Menambahkan overload baru dari add() dan replace() pada FragmentTransaction yang menggunakan Class<? extends Fragment> dan Bundle opsional argumen. Metode ini menggunakan FragmentFactory Anda untuk membuat instance Fragment yang akan ditambahkan. Ekstensi Kotlin yang menggunakan jenis reified (yaitu fragmentTransaction.replace<YourFragment>(R.id.container)) juga telah ditambahkan ke fragment-ktx. (b/126124987)
  • Anotasi @MainThread telah ditambahkan ke callback siklus proses Fragment. (b/127272564)
  • API yang terkait dengan judul breadcrumb pada FragmentTransaction dan FragmentManager.BackStackEntry kini sudah tidak digunakan lagi. (b/138252944)
  • Metode setTransitionStyle pada FragmentTransaction tidak digunakan lagi. (aosp/1011537)
  • Banyak metode dalam FragmentManager kini sudah tidak lagi abstract. FragmentManager sendiri tetap abstract dan tidak boleh langsung dipakai atau diperluas; Anda hanya boleh melanjutkan untuk mendapatkan instance yang sudah ada dari getSupportFragmentManager(), 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 memanggil postponeEnterTransition() dengan waktu tunggu lebih dari sekali tidak membatalkan waktu tunggu sebelumnya. (b/137797118)
  • Dari Fragmen 1.1.0-rc02: Memperbaiki error di FragmentPagerAdapter dan FragmentStatePagerAdapter saat menghapus item saat ini. (b/137209870)
  • Fragment kini akan menunggu hingga animasi selesai sebelum mengirim onDestroyView(). (b/136110528)
  • Animasi Fragment dari fragmen turunan dan turunannya kini ditangani dengan benar saat menganimasikan Fragment induk. (b/116675313)
  • Memperbaiki NullPointerException saat menggunakan transisi elemen bersama dan menggabungkan operasi pop dan add. (b/120507394)
  • Menambahkan solusi ke IllegalStateException saat menggunakan FragmentPagerAdapter dan FragmentStatePagerAdapter 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 sekarang memanggil requestApplyInsets() setelah melampirkan tampilan Fragment dan secara langsung sebelum memanggil onViewCreated(), memastikan bahwa tampilan Anda selalu memiliki inset yang benar. (b/135945162)

Perbaikan bug

  • Memperbaiki NullPointerException saat memunculkan FragmentTransaction yang menggunakan setPrimaryNavigationFragment() sebelum replace(). (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 class FragmentScenario untuk menguji fragmen dalam isolasi. Lihat dokumentasi Menguji fragmen aplikasi Anda untuk detail selengkapnya.
  • FragmentFactory: Anda kini dapat menetapkan FragmentFactory pada FragmentManager 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, dan by 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() pada FragmentTransaction. Siklus proses ini menggantikan setUserVisibleHint() yang sudah tidak digunakan lagi. FragmentPagerAdapter dan FragmentStatePagerAdapter memiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru.
  • Konstruktor LayoutId FragmentActivity: Subclass FragmentActivity kini dapat secara opsional memanggil konstruktor pada FragmentActivity yang membutuhkan ID R.layout, dan menunjukkan tata letak yang harus ditetapkan sebagai tampilan konten, sebagai alternatif untuk memanggil setContentView() di onCreate(). Perubahan ini tidak mengubah persyaratan bahwa subclass Anda memiliki konstruktor tanpa argumen.
  • Konstruktor LayoutId Fragment: Subclass Fragment kini dapat secara opsional memanggil konstruktor pada Fragment yang menggunakan ID R.layout, dan menunjukkan tata letak yang harus digunakan untuk fragmen ini sebagai alternatif untuk menggantikan onCreateView(). Tata letak yang diperluas dapat dikonfigurasi di onViewCreated().
  • 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

  • Fragment kini membatalkan dengan benar transisi yang ditunda pada Fragment yang telah 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 akan 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 dan FragmentStatePagerAdapter 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() atau hide() saat transisi berjalan. (b/133385058)
  • Memperbaiki NullPointerException saat memunculkan FragmentTransaction yang menggunakan setPrimaryNavigationFragment() sebelum replace(). (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 dengan STARTED, RESUMED, PAUSED, STOPPED, dan DESTROYED) untuk Fragmen bertingkat kini disarangkan dengan benar. (b/133497591)
  • Instance OnBackPressedCallback yang terdaftar dalam onCreate() Fragmen sekarang diutamakan secara lebih baik dari FragmentManager turunan. (b/133175997)
  • Fragmen turunan tidak lagi dianimasikan saat fragmen induknya 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 memanggil startPostponedEnterTransition() secara otomatis b/120803208

Perubahan API

  • Perubahan yang dapat menyebabkan gangguan: metode FragmentFactory instantiate yang sebelumnya tidak digunakan lagi yang menggunakan Bundle telah dihapus. aosp/953856
  • Perubahan yang dapat menyebabkan gangguan: Konstanta RESUME_ONLY_CURRENT_FRAGMENT dan USE_SET_USER_VISIBLE_HINT dalam FragmentPagerAdapter dan FragmentStatePagerAdapter masing-masing telah diganti namanya menjadi BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT dan BEHAVIOR_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() pada FragmentTransaction. Siklus proses ini menggantikan setUserVisibleHint() yang sudah tidak digunakan lagi. FragmentPagerAdapter dan FragmentStatePagerAdapter memiliki konstruktor baru yang memungkinkan Anda beralih ke perilaku yang baru. (b/129780800)

Perubahan API

  • moveToState(STARTED) pada FragmentScenario sekarang hanya dapat dipanggil di perangkat API 24+. (b/129880016)

Perubahan Perilaku

  • Akibat (b/129907905), fragmen di data sebelumnya tidak akan mendapatkan callback ke onCreateView() saat aktivitas hosting dibuat ulang. onCreateView() kini hanya akan dipanggil saat fragmen terlihat (yaitu, data sebelumnya muncul).

Perbaikan bug

  • Memperbaiki masalah saat menggunakan tag <fragment> dalam XML dan konstruktor contentLayoutId dari FragmentActivity atau AppCompatActivity. (b/129907905)
  • Memperbaiki masalah saat fragmen pada data sebelumnya tidak akan dipindahkan ke setidaknya 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 jika FragmentManager 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 ditampilkan oleh FragmentManager sekarang menyertakan nama Fragment dalam pesan. (b/67759402)

Perubahan API

  • Fragment dan FragmentActivity 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 Bundle argumen tidak digunakan lagi dan aplikasi harus menggunakan overload instantiate baru yang tidak menggunakan Bundle. (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 dalam 1.1.0-alpha05 yang menyebabkan Fragment yang masuk berkedip di layar. (b/129405432)
  • Memperbaiki masalah yang menyebabkan fragmen navigasi utama hilang setelah serangkaian operasi popBackStack+replace+popBackStack. (b/124332597)
  • Memperbaiki masalah saat menggunakan konstruktor @ContentView pada Aktivitas Anda ketika memulihkan status Fragmen. (b/127313094)
  • Memperbaiki 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(), dan setPrimaryNavigationFragment() dengan Fragmen yang dikaitkan ke FragmentManager lain kini akan menampilkan IllegalStateException, bukan gagal tanpa tanda apa pun (aosp/904301)

Perbaikan bug

  • onNewIntent untuk FragmentActivity sekarang ditandai dengan benar menggunakan @CallSuper (b/124120586)
  • Memperbaiki masalah ketika onDismiss() dari DialogFragment dipanggil dua kali saat menggunakan getDialog().dismiss() atau getDialog().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 menggantikan onCreateView(). Sebaiknya lakukan pekerjaan terkait tampilan dalam onViewCreated(). (aosp/837619)
  • fragment-testing kini bergantung pada androidx.test:core-ktx 1.1.0 stabil (b/121209673)
  • Anda kini dapat menggunakan openActionBarOverflowOrOptionsMenu dengan FragmentScenario untuk menguji menu opsi yang dihosting Fragmen (b/121126668)

Perubahan API

  • Menambahkan metode requireArguments() yang menampilkan @NonNull Bundle atau IllegalStateException (b/121196360)
  • Menambahkan catatan bahwa getLifecycle(), getViewLifecycleOwner(), dan getViewLifecycleOwnerLiveData() 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 ke setTargetFragment(). (aosp/849969)
  • Memperbaiki masalah saat Fragment target terkadang tidak tersedia pada saat atau setelah onDestroy(). (b/122312935)
  • OnDismiss() DialogFragment kini 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 mendapatkan ViewModelStoreOwner, yang memungkinkan Anda meneruskan Fragmen induk atau ViewModelStoreOwner kustom lainnya dengan kode seperti val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

Perubahan API

  • FragmentScenario kini memungkinkan Anda menentukan tema seperti Theme.AppCompat [b/119054431]. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menambahkan metode requireView() yang menampilkan @NonNull View atau IllegalStateException [b/120241368]
  • Menambahkan metode requireParentFragment() yang menampilkan @NonNull Fragment atau IllegalStateException [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 FragmentScenario sekarang memungkinkan Anda menggunakan lambda untuk konstruksi Fragment 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() dengan FragmentFactory (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 pada FragmentManager 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 pada androidx.test:core:1.0.0-beta01, bukan androidx.test:core:1.0.0 yang benar.