Fragment
Bangun UI modular dengan Fragment. Pelajari siklus hidup fragment, ViewBinding dalam fragment, penerusan argumen, pengelolaan tumpukan kembali, dan komunikasi fragment-Activity.
Fragment adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 6 dari 7. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 7 pelajaran total.
Apa Itu Fragmen?
Fragmen adalah modul UI yang dapat digunakan kembali dan berada di dalam Aktivitas. Anggaplah fragmen sebagai sub-Aktivitas dengan tata letak, siklus hidup, dan logikanya sendiri.
Mengapa menggunakan Fragmen?
- Menggunakan kembali UI di beberapa Aktivitas
- Menangani tata letak yang berbeda untuk ponsel dan tablet
- Membangun alur multi-layar tanpa banyak Aktivitas
- Bekerja secara alami dengan Navigation Component
Siklus Hidup Fragmen
Fragmen memiliki siklus hidupnya sendiri yang berjalan bersamaan dengan siklus hidup Aktivitas. Callback utama:
onAttach— fragmen terpasang pada AktivitasonCreate— fragmen dibuat (belum ada tampilan)onCreateView— mengembangkan tata letakonViewCreated— tampilan siap, siapkan UI di sinionDestroyView— tampilan dihancurkan (hapus referensi tampilan)onDetach— fragmen dilepas
Membuat Fragmen
Buat kelas yang mewarisi Fragment dan ganti onCreateView untuk mengembangkan tata letak:
import androidx.fragment.app.Fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class HomeFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_home, container, false)
}
}ViewBinding dalam Fragmen
Gunakan ViewBinding dalam fragmen — tetapi lepaskan binding di onDestroyView untuk mencegah kebocoran memori:
class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.tvTitle.text = "Welcome!"
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null // prevent memory leak
}
}XML Tata Letak Fragmen
Buat res/layout/fragment_home.xml seperti tata letak Aktivitas. Tampilan akar menjadi tampilan Fragmen:
<!-- res/layout/fragment_home.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:text="Home" />
</LinearLayout>Menambahkan Fragmen ke Aktivitas
Ada dua cara untuk menambahkan Fragmen ke Aktivitas:
- Statis (XML) — nyatakan dalam tata letak dengan tag
<fragment>. Tetap pada runtime. - Dinamis (kode) — gunakan
FragmentManagerdan transaksi. Dapat ditukar saat runtime.
<!-- Static: in activity_main.xml -->
<fragment
android:id="@+id/homeFragment"
android:name="com.example.HomeFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />Transaksi Fragmen Dinamis
Gunakan supportFragmentManager untuk menambahkan, mengganti, atau menghapus fragmen saat runtime:
// In Activity:
class MainActivity : AppCompatActivity(R.layout.activity_main) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.add(R.id.fragmentContainer, HomeFragment())
.commit()
}
}
fun showDetail(id: Int) {
supportFragmentManager.beginTransaction()
.replace(R.id.fragmentContainer, DetailFragment.newInstance(id))
.addToBackStack(null) // allow back navigation
.commit()
}
}Meneruskan Argumen ke Fragmen
Teruskan data melalui Bundle menggunakan pola pabrik objek pendamping. Jangan pernah menggunakan konstruktor Fragmen dengan parameter — Android membuat ulang fragmen dengan konstruktor tanpa argumen setelah perubahan konfigurasi:
class DetailFragment : Fragment() {
companion object {
private const val ARG_ID = "item_id"
fun newInstance(itemId: Int): DetailFragment {
return DetailFragment().apply {
arguments = Bundle().apply {
putInt(ARG_ID, itemId)
}
}
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val itemId = requireArguments().getInt(ARG_ID)
// use itemId to load data
}
}Komunikasi Fragmen → Aktivitas
Gunakan antarmuka yang ditentukan dalam Fragmen dan diimplementasikan oleh Aktivitas. Fragmen mendapatkan referensi melalui onAttach:
class ListFragment : Fragment() {
interface OnItemSelected {
fun onItemSelected(id: Int)
}
private var listener: OnItemSelected? = null
override fun onAttach(context: Context) {
super.onAttach(context)
listener = context as? OnItemSelected
}
private fun handleClick(id: Int) {
listener?.onItemSelected(id)
}
override fun onDetach() {
super.onDetach()
listener = null
}
}Tumpukan Kembali
Saat Anda memanggil addToBackStack(null) dalam transaksi, menekan Kembali akan mengeluarkan fragmen dari tumpukan:
- Tanpa
addToBackStack— Kembali keluar dari Aktivitas - Dengan
addToBackStack— Kembali ke fragmen sebelumnya - Gunakan
popBackStack()secara terprogram untuk kembali
Fragmen dalam Kontainer
Tata letak Aktivitas hanya memerlukan tampilan kontainer — biasanya FrameLayout dengan ID. Fragmen mengisi kontainer tersebut:
<!-- activity_main.xml -->
<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />Pemeriksaan Cepat
Mengapa Anda tidak boleh meneruskan argumen konstruktor ke Fragmen dan sebaiknya menggunakan Bundle melalui pabrik pendamping?
Ringkasan: Fragmen
Fragmen adalah blok penyusun UI Android modern:
- Mewarisi
Fragment, kembangkan tata letak dalamonCreateView - Siapkan UI dalam
onViewCreated - Lepaskan ViewBinding dalam
onDestroyView - Teruskan data melalui
Bundle+ pabrik pendamping (newInstance) - Gunakan
addToBackStackuntuk navigasi kembali - Berkomunikasi dengan Aktivitas melalui antarmuka
Berikutnya: minta izin berbahaya saat runtime.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fragment” gratis?
Ya — teks lengkap “Fragment” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 7 pelajaran total.
Apa yang akan aku pelajari di “Fragment”?
Bangun UI modular dengan Fragment. Pelajari siklus hidup fragment, ViewBinding dalam fragment, penerusan argumen, pengelolaan tumpukan kembali, dan komunikasi fragment-Activity. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 6 dari 7.
Berapa lama pelajaran “Fragment” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Struktur Proyek & Manifest
- Activity & Siklus Hidup
- Tata Letak & Tampilan
- Menangani Masukan Pengguna
- Intent & Navigasi
- Fragment
- Izin & Permintaan Saat Runtime