Fragment

Membagi aplikasi Anda menjadi beberapa layar mandiri yang dihosting dalam Activity.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
29 September 2021 1.3.6 - - 1.4.0-alpha10

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Fragment, Anda harus menambahkan repositori Google Maven ke project Anda. Baca repositori Google Maven 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.3.6"

    // 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.3.6"

    // 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.4.0

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 berikut.

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)

Version 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 berikut 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 berikut 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 berikut 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 berikut 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 berikut 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 berikut 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 berikut.

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 berikut.

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 berikut 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

API FragmentStrictMode 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.6

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 berikut 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

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 berikut.

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)

Version 1.3.4

Version 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 berikut 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

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 berikut 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

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 berikut 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

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. Version 1.3.1 berisi commit berikut 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

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 berikut 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 berikut 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 berikut.

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 berikut 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 berikut.

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

  • Fragmen 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 berikut 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 berikut.

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 berikut.

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 Anda. (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 berikut.

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 berikut.

Fitur Baru

  • Menambahkan dukungan untuk meneruskan hasil antara dua Fragmen 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 berikut.

Perubahan API

  • Metode prepareCall di Fragment kini menjadi final. (b/152439361)

Perbaikan Bug

  • Memperbaiki regresi yang diperkenalkan di Fragmen 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

  • Fragmen bergantung pada Activity 1.2.0-alpha03, yang memiliki penyempurnaan 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 berikut.

Fitur Baru

  • Menambahkan dukungan untuk API ActivityResultRegistry yang diperkenalkan di Activity 1.2.0-alpha02 untuk menangani startActivityForResult()+onActivityResult() serta alur requestPermissions()+onRequestPermissionsResult() tanpa mengganti metode di Fragmen Anda selain menyediakan hook untuk menguji alur 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 berikut.

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 Fragmen 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 berikut.

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 berikut.

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 berikut.

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 berikut.

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 berikut.

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 berikut.

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 Fragmen sudah tidak digunakan lagi dan diganti dengan metode getParentFragmentManager() tunggal, yang menampilkan FragmentManager non-null tempat Fragmen 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 berikut.

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 berikut.

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 berikut.

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 berikut.

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 berikut.

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 Fragmen 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 berikut.

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 berikut.

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, Fragmen kini akan menunggu hingga transisi androidx.transition (selain transisi framework dan animasi, yang masing-masing telah diperbaiki dalam Fragmen 1.2.0-alpha03 dan Fragmen 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 berikut.

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 diupdate agar sesuai dengan animasi yang digunakan oleh aktivitas di perangkat Android 10. (aosp/1012812, aosp/1014730)

Perubahan API

  • Memperkenalkan FragmentContainerView sebagai penampung yang sangat direkomendasikan untuk Fragmen yang ditambahkan secara dinamis, menggantikan penggunaan FrameLayout, dll. karena dapat memperbaiki masalah pengurutan-z animasi dan inset jendela yang dikirim ke Fragmen. (b/37036000, aosp/985243, b/136494650)
  • Menambahkan metode FragmentManager.findFragment(View) statis untuk mengambil Fragmen yang memuatnya dari tampilan yang diperluas oleh suatu fragmen. Ekstensi Kotlin juga tersedia 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)
  • Fragmen kini akan menunggu hingga animasi selesai sebelum mengirim onDestroyView(). (b/136110528)
  • Animasi Fragmen dari fragmen turunan dan turunannya kini ditangani dengan benar saat menganimasikan Fragmen induk. (b/116675313)
  • Memperbaiki NullPointerException saat menggunakan transisi elemen bersama dan menggabungkan operasi pop dan add. (b/120507394)
  • Menambahkan solusi ke IllegalStateException saat 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 kini akan memanggil requestApplyInsets() setelah mengaitkan tampilan Fragmen 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

  • Sekarang Fragment membatalkan dengan benar transisi yang ditunda pada Fragment yang dimunculkan. (b/138251858)

Versi 1.1.0-rc03

19 Juli 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03, dan androidx.fragment:fragment-testing:1.1.0-rc03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perbaikan bug

  • Memperbaiki masalah ketika memanggil postponeEnterTransition() dengan waktu tunggu lebih dari sekali tidak membatalkan waktu tunggu sebelumnya. (b/137797118)

Versi 1.1.0-rc02

17 Juli 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02, dan androidx.fragment-testing:fragment:1.1.0-rc02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perbaikan bug

  • Memperbaiki error dalam FragmentPagerAdapter 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 sedang diganti. (b/121017790)
  • Animasi dan transisi Fragmen kini diabaikan saat menggunakan animateLayoutChanges="true", memperbaiki masalah ketika Fragmen tidak dihancurkan dengan semestinya. (b/116257087)

Versi 1.1.0-alpha09

16 Mei 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09, dan androidx.fragment:fragment-testing:1.1.0-alpha09 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan API

  • Fragmen kini menerima callback ke metode onPrimaryNavigationFragmentChanged(boolean) baru ketika fragmen navigasi utama berubah. aosp/960857

Perbaikan bug

  • Item Menu yang diluaskan oleh Fragment turunan sekarang dihapus dengan benar ketika Fragment Induk dihapus. b/131581013

Versi 1.1.0-alpha08

7 Mei 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08, dan androidx.fragment:fragment-testing:1.1.0-alpha08 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Rilis ini tidak kompatibel dengan Preferences 1.1.0-alpha01 hingga 1.1.0-alpha04. Lakukan upgrade ke Preferences 1.1.0-alpha05 saat menggunakan Fragment versi ini.

Fitur baru

  • Menambahkan overload baru postponeEnterTransition() yang memerlukan waktu tunggu, yang setelahnya Fragmen akan 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

  • Sebagai akibat dari (b/129907905), fragmen pada data sebelumnya tidak akan mendapatkan callback ke onCreateView() saat aktivitas yang menghosting dibuat kembali. onCreateView() sekarang hanya akan dipanggil ketika fragmen dapat dilihat (yaitu, data sebelumnya dimunculkan).

Perbaikan bug

  • Memperbaiki masalah saat menggunakan tag <fragment> dalam XML dan konstruktor contentLayoutId dari FragmentActivity atau AppCompatActivity. (b/129907905)
  • Memperbaiki masalah ketika fragmen pada data sebelumnya tidak dialihkan setidaknya ke CREATED setelah perubahan konfigurasi, menyebabkan ViewModels dan fragmen yang dipertahankan turunan tidak dapat dihapus dengan benar. (b/129593351)
  • Memperbaiki error dalam restoreSaveState yang disebabkan oleh pembatalan sinkronisasi fragmen yang dipertahankan setelah status instance disimpan. (b/130433793) (aosp/947824)
  • Memperbaiki masalah yang menyebabkan OnBackPressedCallback yang ditambahkan dengan siklus proses fragmen tidak dipanggil jika FragmentManager memiliki data sebelumnya. Lihat androidx.activity 1.0.0-alpha07 untuk detail selengkapnya. (aosp/948209)
  • Fragmen tidak lagi memberlakukan LAYER_TYPE_HARDWARE untuk animasi. Tetapkan sebagai bagian dari animasi jika Anda secara khusus memerlukan animasi lapisan hardware. (b/129486478)

Versi 1.1.0-alpha06

3 April 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06, dan androidx.fragment:fragment-testing:1.1.0-alpha06 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • Pengecualian yang dimunculkan oleh FragmentManager sekarang mencakup nama Fragment dalam pesan. (b/67759402)

Perubahan API

  • Fragment 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 Paket argumen kini sudah tidak digunakan lagi dan aplikasi harus menggunakan overload instantiate baru yang tidak menggunakan Paket. (b/128836103)
  • Metode FragmentScenario kini dianotasikan dengan benar menggunakan @StyleRes. (aosp/924193)
  • FragmentTabHost tidak digunakan lagi. (b/127971835)
  • getThemedContext() FragmentActivity telah dihapus. (aosp/934078)

Perbaikan bug

  • Memperbaiki regresi pada 1.1.0-alpha05 yang menyebabkan Fragmen yang masuk tampak berkedip di layar. (b/129405432)
  • Memperbaiki masalah saat fragmen navigasi utama akan hilang setelah serangkaian operasi popBackStack+replace+popBackStack. (b/124332597)
  • Memperbaiki masalah saat menggunakan konstruktor @ContentView pada Aktivitas ketika memulihkan status Fragmen. (b/127313094)
  • Membetulkan logika setTargetFragment() saat mengganti Fragmen target yang ada dengan Fragmen yang belum dikaitkan ke FragmentManager. (aosp/932156)

Versi 1.1.0-alpha05

13 Maret 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05, dan androidx.fragment:fragment-testing:1.1.0-alpha05 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • Penelusuran anotasi @ContentView kini disimpan dalam cache (b/123709449)

Perubahan perilaku

  • Memanggil remove(), hide(), show(), detach(), 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 ketika Fragmen target terkadang tidak tersedia pada saat atau setelah onDestroy(). (b/122312935)
  • onDismiss() dari DialogFragment sekarang akan dipanggil sebelum onDestroy(). (aosp/874133) (aosp/890734)

Versi 1.1.0-alpha03

17 Desember 2018

Fitur baru

  • Fragmen kini akan menerapkan BundleSavedStateRegistryOwner dan bergantung pada library SavedState yang baru dirilis [aosp/824380]
  • Delegasi properti Kotlin by activityViewModels telah ditambahkan untuk mengambil ViewModels yang terkait dengan Aktivitas yang memuatnya [b/119050253]
  • Delegasi properti Kotlin by viewModels telah diperluas untuk menggunakan metode lambda opsional guna 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]
  • Fragmen yang dihapus tidak lagi menggunakan kembali objek Lifecycle miliknya jika ditambahkan kembali [b/118880674]

Versi 1.1.0-alpha02

3 Desember 2018

Fitur baru

  • Ekstensi Kotlin dari FragmentScenario sekarang memungkinkan Anda menggunakan lambda untuk konstruksi Fragmen sebagai alternatif dari meneruskan instance FragmentFactory. (aosp/812913)

Perbaikan bug

  • Memperbaiki IllegalStateException saat menggunakan Fragmen bertingkat pada data sebelumnya (b/119256498)
  • Memperbaiki error saat menggunakan FragmentScenario.recreate() 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.