Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

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
1 Oktober 2020 1.2.5 - 1.3.0-beta01 -

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Fragment, Anda harus menambahkan repositori Google Maven ke project Anda. Baca repositori Google Maven untuk informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

dependencies {
    def fragment_version = "1.2.5"

    // 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 punya 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 ada dengan mengklik tombol bintang.

Membuat terbitan baru

Lihat dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 1.3.0

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 container 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 container 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 Kotler reifikasi Kotlin withFragment yang memungkinkan Anda mengembalikan nilai. Khususnya, ini akan memunculkan kembali pengecualian yang dimunculkan dalam blok yang diberikan. (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 pengamat 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

  • Fragment induk memiliki status tampilan yang dipulihkan sebelum fragment turunannya, memperbaiki masalah pengurutan visual setelah perubahan konfigurasi saat DialogFragment menampilkan DialogFragment lainnya sebagai fragment 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 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 atau setidaknya 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 Fragment 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 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 Fragment 1.2.4: Memperbarui aturan Fragment ProGuard untuk memungkinkan obfuscation fragmen yang dipertahankan. (b/151605338)
  • Dari Fragment 1.2.4: Menonaktifkan aturan Lint FragmentLiveDataObserve pada kelas 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 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 Fragment 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 Fragment 1.2.3: Memperbaiki bug di DialogFragment yang menyebabkan StackOverflowError saat memanggil getLayoutInflater() dari dalam onCreateDialog(). (b/117894767, aosp/1258664)
  • Dari Fragment 1.2.3: Mengurangi cakupan aturan ProGuard yang disertakan dalam Fragment untuk memastikan bahwa class Fragment yang tidak digunakan dapat dihilangkan. (b/149665169)
  • Dari Fragment 1.2.3: Memperbaiki positif palsu pada pemeriksaan Lint UseRequireInsteadOfGet saat menggunakan nama variabel lokal yang membayangi nama properti Kotlin. (b/149891163)
  • Dari Fragment 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 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 perusakan status yang dipertahankan (yaitu, konstruktor callback ViewModel dan onCleared() yang diterima). (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 Fragment 1.2.2 tidak lagi positif palsu pada variabel lokal yang menggunakan nama yang sama seperti nama properti Kotlin yang dibayangi (misalnya, 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 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 reified 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. Container 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 Tampilan 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 Fragment 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 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 berikut.

Perbaikan bug

  • Memperbaiki masalah yang menyebabkan onInflate() Fragment 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)
  • Fragment 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 hingga 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, Fragment kini membatalkan transisi androidx.transition dengan benar sebelum memulai transisi/animasi baru pada container yang sama. (aosp/1119841)
  • Memperbaiki masalah pada API 17 dan yang lebih rendah saat menggunakan transisi androidx.transition pada tampilan utama Fragment 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() Fragment tidak menerima atribut yang sesuai dari FragmentContainerView, 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 Fragment 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)
  • Fragment kini akan menunggu hingga transisi (selain animasi, yang telah diperbaiki dalam Fragment 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 container yang sangat direkomendasikan untuk Fragment yang ditambahkan secara dinamis, menggantikan penggunaan FrameLayout, dll. karena dapat memperbaiki masalah pengurutan-z animasi dan sisipan jendela yang dikirim ke Fragment. (b/37036000, aosp/985243, b/136494650)
  • Menambahkan metode FragmentManager.findFragment(View) statis untuk mengambil Fragment 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 Fragment 1.1.0-rc04: Fragment sekarang membatalkan dengan benar transisi yang ditunda pada Fragment yang telah ditampilkan. (b/138251858)
  • Dari Fragment 1.1.0-rc03: Memperbaiki masalah ketika memanggil postponeEnterTransition() dengan waktu tunggu lebih dari sekali tidak membatalkan waktu tunggu sebelumnya. (b/137797118)
  • Dari Fragment 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 kini akan memanggil requestApplyInsets() setelah mengaitkan tampilan Fragment dan secara langsung sebelum memanggil onViewCreated(), memastikan bahwa tampilan Anda selalu memiliki sisipan 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

  • Fragment 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 Fragment bertingkat kini disarangkan dengan benar. (b/133497591)
  • Instance OnBackPressedCallback yang terdaftar dalam onCreate() Fragment sekarang diutamakan secara lebih baik dari FragmentManager turunan. (b/133175997)
  • Fragment turunan tidak lagi dianimasikan saat fragment induknya sedang diganti. (b/121017790)
  • Animasi dan transisi Fragment kini diabaikan saat menggunakan animateLayoutChanges="true", memperbaiki masalah ketika Fragment 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

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

Perbaikan bug

  • Item Menu yang diperluas 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 Fragment 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

  • Fragment yang siklus prosesnya telah dibatasi melalui setMaxLifecycle() tidak lagi dilanjutkan sebelum mencapai status akhirnya. b/131557151
  • Saat menggunakan setMaxLifecycle(Lifecycle.State.CREATED), tampilan Fragment 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 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. (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)
  • 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 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 kini sudah tidak digunakan lagi. (b/127971835)
  • getThemedContext() FragmentActivity telah dihapus. (aosp/934078)

Perbaikan bug

  • Memperbaiki regresi pada 1.1.0-alpha05 yang menyebabkan Fragment yang masuk tampak 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 ketika memulihkan status Fragment. (b/127313094)
  • Membetulkan logika setTargetFragment() saat mengganti Fragment target yang ada dengan Fragment 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 Fragment 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 mana 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 Fragment (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 Fragment sebelumnya. (aosp/887877) (aosp/889834)

Perbaikan bug

  • Fragmen target dihapus dengan benar saat Anda meneruskan null ke setTargetFragment(). (aosp/849969)
  • Memperbaiki masalah ketika Fragment 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

  • Fragment 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 Fragment 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]. Perubahan ini 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 IllegalStateException: Failure saving state b/120814739
  • Fragment yang sedang dipulihkan dari status instance tersimpan sekarang akan selalu menerima Bundle non-null [b/119794496]
  • Fragment yang dihapus tidak lagi menggunakan kembali objek Lifecycle miliknya jika ditambahkan kembali [b/118880674]

Versi 1.1.0-alpha02

3 Desember 2018

Fitur baru

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

Perbaikan bug

  • Memperbaiki IllegalStateException saat menggunakan Fragment bertingkat pada data sebelumnya (b/119256498)
  • Memperbaiki error saat menggunakan FragmentScenario.recreate() dengan FragmentFactory (aosp/820540)
  • Memperbaiki masalah ketika Fragment target tidak dapat diakses setelah Fragment dihapus (aosp/807634)

Versi 1.1.0-alpha01

5 November 2018

Rilis ini merupakan rilis pertama artefak fragment-testing dan FragmentScenario yang dibuat berdasarkan API androidx.test:core. 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 Fragment 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.