Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Fragment adalah bagian UI
aplikasi Anda yang dapat digunakan kembali. Sebuah fragmen menentukan dan mengelola tata letaknya
sendiri, memiliki siklus proses sendiri, serta dapat menangani peristiwa inputnya sendiri. Fragmen
tidak dapat berjalan sendiri. Fragmen harus dihosting oleh aktivitas atau fragmen
lain. Hierarki tampilan fragmen menjadi bagian dari, atau dilampirkan ke,
hierarki tampilan host.
Modularitas
Fragmen menghadirkan modularitas dan kemampuan penggunaan kembali
ke dalam UI aktivitas dengan memungkinkan Anda membagi UI menjadi bagian yang terpisah. Aktivitas merupakan
tempat ideal untuk menempatkan elemen global di sekitar antarmuka pengguna
aplikasi Anda, seperti panel navigasi. Sebaliknya, fragmen lebih cocok untuk menentukan dan mengelola UI dari satu atau sebagian layar.
Bayangkan sebuah aplikasi yang merespons ke berbagai ukuran layar. Pada layar yang berukuran lebih besar, Anda
mungkin ingin agar aplikasi menampilkan panel navigasi statis dan daftar dalam tata letak
petak. Pada layar yang berukuran lebih kecil, Anda mungkin ingin agar aplikasi menampilkan menu
navigasi bawah dan daftar dalam tata letak linear.
Mengelola variasi ini dalam aktivitas
merupakan tugas yang sulit. Memisahkan elemen navigasi dari konten dapat
mempermudah proses pengelolaan ini. Aktivitas tersebut kemudian bertugas untuk
menampilkan UI navigasi yang benar saat fragmen menampilkan daftar
dengan tata letak yang tepat.
Gambar 1. Dua versi layar yang sama di ukuran layar
yang berbeda. Di sebelah kiri, sebuah layar besar berisi panel navigasi yang dikontrol oleh aktivitas dan daftar petak yang dikontrol oleh fragmen. Di sebelah kanan, sebuah layar kecil berisi menu navigasi bawah yang dikontrol oleh aktivitas dan daftar linear yang dikontrol oleh fragmen.
Membagi UI menjadi beberapa fragmen akan memudahkan
Anda dalam mengubah tampilan aktivitas saat runtime. Saat aktivitas dalam STARTEDstatus siklus proses atau lebih tinggi, Anda dapat menambahkan, mengganti, atau menghapus fragmen. Anda dapat menyimpan catatan
perubahan ini di data sebelumnya yang dikelola oleh aktivitas, sehingga
perubahan tersebut dapat dibatalkan.
Anda dapat menggunakan beberapa instance dari class fragmen yang
sama dalam aktivitas yang sama, di beberapa aktivitas, atau bahkan
sebagai turunan dari fragmen lain. Dengan memperhatikan hal ini, hanya sediakan fragmen dengan
logika yang diperlukan untuk mengelola UI-nya sendiri. Hindari dependensi atau
manipulasi antara fragmen.
Langkah berikutnya
Untuk dokumentasi dan referensi lain terkait fragmen, lihat yang berikut ini.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Fragments\n\nA [`Fragment`](/reference/androidx/fragment/app/Fragment) represents a\nreusable portion of your app's UI. A fragment defines and manages its own\nlayout, has its own lifecycle, and can handle its own input events. Fragments\ncan't live on their own. They must be *hosted* by an activity or another\nfragment. The fragment's view hierarchy becomes part of, or *attaches to*,\nthe host's view hierarchy.\n| **Note:** Some [Android Jetpack](/jetpack/androidx/versions) libraries, such as [Navigation](/guide/navigation), [`BottomNavigationView`](/reference/com/google/android/material/bottomnavigation/BottomNavigationView), and [`ViewPager2`](/jetpack/androidx/releases/viewpager2), are designed to work with fragments.\n\nModularity\n----------\n\nFragments introduce modularity and reusability into your activity's UI by\nletting you divide the UI into discrete chunks. Activities are an ideal\nplace to put global elements around your app's user interface, such as a\nnavigation drawer. Conversely, fragments are better suited to define and\nmanage the UI of a single screen or portion of a screen.\n\nConsider an app that responds to various screen sizes. On larger screens, you\nmight want the app to display a static navigation drawer and a list in a grid\nlayout. On smaller screens, you might want the app to display a bottom\nnavigation bar and a list in a linear layout.\n\nManaging these variations in the activity is\nunwieldy. Separating the navigation elements from the content can make this\nprocess more manageable. The activity is then responsible for displaying\nthe correct navigation UI, while the fragment displays the list with the proper\nlayout.\n**Figure 1.** Two versions of the same screen on different screen sizes. On the left, a large screen contains a navigation drawer that is controlled by the activity and a grid list that is controlled by the fragment. On the right, a small screen contains a bottom navigation bar that is controlled by the activity and a linear list that is controlled by the fragment.\n\nDividing your UI into fragments makes it easier to modify your activity's\nappearance at runtime. While your activity is in the `STARTED`\n[lifecycle state](/guide/components/activities/activity-lifecycle) or\nhigher, fragments can be added, replaced, or removed. And you can keep a record\nof these changes in a back stack that is managed by the activity, so that\nthe changes can be reversed.\n\nYou can use multiple instances of the same fragment class within the\nsame activity, in multiple activities, or even as a child of another\nfragment. With this in mind, only provide a fragment with\nthe logic necessary to manage its own UI. Avoid depending on or\nmanipulating one fragment from another.\n\nNext steps\n----------\n\nFor more documentation and resources related to fragments, see the following.\n\n### Getting Started\n\n- [Create a fragment](/guide/fragments/create)\n\n### Further topics\n\n- [Fragment manager](/guide/fragments/fragmentmanager)\n- [Fragment transactions](/guide/fragments/transactions)\n- [Navigate between fragments using animations](/guide/fragments/animate)\n- [Fragment lifecycle](/guide/fragments/lifecycle)\n- [Saving state with fragments](/guide/fragments/saving-state)\n- [Communicate with fragments](/guide/fragments/communicate)\n- [Working with the AppBar](/guide/fragments/appbar)\n- [Display dialogs with DialogFragment](/guide/fragments/dialogs)\n- [Debug your fragments](/guide/fragments/debugging)\n- [Test your fragments](/guide/fragments/test)\n\n### Samples\n\n### Videos\n\n- [Single Activity: Why, when, and how (Android Dev Summit '18)](https://www.youtube.com/watch?v=2k8x8V77CrU)\n- [Fragments: Past, present, and future (Android Dev Summit '19)](https://www.youtube.com/watch?v=RS1IACnZLy4)"]]