0Pricing
Android Academy · Pelajaran

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 Aktivitas
  • onCreate — fragmen dibuat (belum ada tampilan)
  • onCreateView — mengembangkan tata letak
  • onViewCreated — tampilan siap, siapkan UI di sini
  • onDestroyView — 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 FragmentManager dan 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 dalam onCreateView
  • Siapkan UI dalam onViewCreated
  • Lepaskan ViewBinding dalam onDestroyView
  • Teruskan data melalui Bundle + pabrik pendamping (newInstance)
  • Gunakan addToBackStack untuk 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

  1. Struktur Proyek & Manifest
  2. Activity & Siklus Hidup
  3. Tata Letak & Tampilan
  4. Menangani Masukan Pengguna
  5. Intent & Navigasi
  6. Fragment
  7. Izin & Permintaan Saat Runtime
← Kembali ke Android Academy