Back to Pengembangan Android dengan Kotlin

Fragment Architecture and Lifecycle

Questions/Cues

  • Mengapa Fragment disebut “microactivity”?
  • Bagaimana hubungan lifecycle Fragment dengan Activity?
  • Langkah implementasi dasar Fragment AndroidX
  • Perbedaan Fragment dengan Activity dalam UI
  • Kapan harus menggunakan Fragment vs Activity?

Reference Points

  • Android Development with Kotlin (Pages 18-22, 28)

Definisi dan Konsep Dasar Fragment

Fragment merupakan komponen UI yang merepresentasikan sebagian antarmuka pengguna atau perilaku dalam sebuah Activity. Istilah “microactivity” digunakan karena Fragment memiliki lifecycle sendiri namun harus selalu berada dalam konteks Activity sebagai host-nya. Tidak seperti Activity yang berdiri sendiri, Fragment dirancang untuk modularitas dan reuseabilitas antarmuka pengguna.

Contoh penggunaan umum Fragment termasuk:

  • Membuat tampilan responsif untuk perangkat tablet (misal: menampilkan daftar item dan detail bersebelahan)
  • Mengelola bagian UI yang kompleks secara terpisah
  • Membuat antarmuka dinamis yang dapat diubah saat runtime

Siklus Hidup Fragment

Lifecycle Fragment terkait erat dengan Activity host-nya namun memiliki beberapa tahapan tambahan:

  1. onAttach(): Fragment terhubung ke Activity
  2. onCreate(): Inisialisasi komponen esensial
  3. onCreateView(): Menginflate layout UI
  4. onViewCreated(): Setup tampilan setelah inflate
  5. onStart(): Fragment menjadi terlihat
  6. onResume(): Fragment aktif berinteraksi
  7. onPause(): Fragment mulai tidak aktif
  8. onStop(): Fragment tidak terlihat
  9. onDestroyView(): View dihancurkan
  10. onDestroy(): Fragment dihancurkan
  11. onDetach(): Fragment terlepas dari Activity

Analogi: Bayangkan Fragment sebagai tanaman dalam pot (Activity). Saat pot dipindahkan (Activity pause/stop), tanaman juga terpengaruh, tetapi memiliki siklus hidup sendiri.

Implementasi Fragment dengan AndroidX

Gunakan AndroidX Fragment (androidx.fragment.app.Fragment) bukan versi platform yang sudah deprecated. Implementasi dasar:

 
class DetailFragment : Fragment() {
 
override fun onCreateView(
 
inflater: LayoutInflater,
 
container: ViewGroup?,
 
savedInstanceState: Bundle?
 
): View? {
 
// Inflate layout XML
 
return inflater.inflate(R.layout.detail_fragment, container, false)
 
}
 
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
 
super.onViewCreated(view, savedInstanceState)
 
// Setup UI components here
 
}
 
}
 

Penting untuk menggunakan onViewCreated() daripada onCreateView() untuk inisialisasi komponen UI karena view sudah diinflate sepenuhnya.

Fragment dan Manajemen UI

Fragment mengelola bagian UI sendiri melalui metode onCreateView() yang mengembalikan root view. Keunggulan dibanding Activity:

  • Reusabilitas: Fragment yang sama dapat digunakan di multiple Activity
  • Modularitas: Tiap bagian UI dikelola secara terpisah
  • Dinamis: Dapat ditambah/dihapus saat runtime dengan FragmentTransaction

Contoh praktis: Aplikasi e-commerce menggunakan Fragment terpisah untuk kategori produk, keranjang belanja, dan detail produk yang dapat dikombinasi berbeda di handphone vs tablet.

Summary

Fragment merupakan komponen UI modular yang berperan sebagai “microactivity” dengan lifecycle terkait Activity host-nya. Lifecycle Fragment memiliki tahapan khusus seperti onAttach() dan onDetach() yang mengatur hubungan dengan Activity. Implementasi wajib menggunakan AndroidX Fragment (androidx.fragment.app.Fragment) untuk kompatibilitas jangka panjang. Fragment ideal untuk membuat UI responsif yang dapat dikombinasikan ulang dan diubah saat runtime, berbeda dengan Activity yang lebih cocok untuk layar penuh independen.