Android Dasar

Pertemuan #10: Fragments

Fragments merupakan sebuah komponen mandiri yang memiliki fungsi untuk menampilkan antarmuka pengguna dan perilaku yang dapat ditambahkan ke dalam sebuah Activity dengan layout dan logika yang terpisah. Komponen ini merepresentasikan antarmuka pengguna aplikasi yang lebih fleksibel dan reusable–tata letak (views) dan perilakunya (logic) dapat digunakan kembali di berbagai Activity. Sebuah Activity dapat memiliki lebih dari satu instan Fragment dengan tata letak yang berbeda.

Meskipun sebuah Fragment dapat digunakan dalam berbagai Activity yang berbeda, masing-masing instan dari Fragment secara ekslusif sangat terikat pada Activity inangnya. Sebagai contoh, setiap fragment memiliki siklus hidupnya sendiri, tetapi sangat bergantung pada siklus hidup Activity dimana dia disematkan.

Sebuah Fragment dapat ditambahkan secara statis atau dinamis ke dalam sebuah Activity. Ketika disematkan secara statis, maka Fragment tersebut akan tetap berada dalam layar Activity selama siklus hidup Activity tersebut. Sedangkan jika ditambahkan secara dinamis, Fragment dapat ditambahkan dan dihapus secara fleksibel selama Activity dijalankan.

Manfaat penggunaan Fragment

Manfaat Fragment sangat terlihat ketika Fragment ditambahkan secara dinamis karena dapat ditambahkan dan dihapus selama siklus hidup Activity. Karakter tersebut memungkinkan pengembang untuk:

  • Menggunakan kembali sebuah Fragment. Cukup menulis kode Fragment sekali, dan gunakan instan Fragment dalam berbagai Activity.
  • Menambah dan menghapus secara dinamis. Fragment dapat ditambahkan (add), diganti (replace) dan dihapus (remove) ketika dibutuhkan dalam sebuah Activity.
  • Mengintegrasikan mini-UI di dalam Activity. Tanpa perlu meninggakan Activity, pengguna dapat berinteraksi dengan antarmuka Fragment. Contohnya penggunakan DatePicker UI untuk mengambil input tangga.
  • Menyimpan instan data setelah perubahan konfigurasi. Ketika terjadi perubahan konfigurasi, contohnya rotasi gawai, data instan dapat disimpan karena Fragment memiliki siklus hidup tersendiri.
  • Merepresentasikan tata letak untuk ukuran layar yang berbeda. Contohnya untuk tataletak antarmuka tablet.

Cara menggunakan Fragment

Secara umum terdapat tiga langkah untuk menggunakan Fragment, yaitu:

  1. Buat sebuah subkelas Fragment
  2. Buat layout untuk Fragment
  3. Tambahkan Fragment ke Activity, baik secara statis maupun dinamis

Siklus hidup Fragment

Seperti hanya sebuah Activity, Fragment juga memiliki siklus hidupnya sendiri. Siklus hidup Fragment ini mirip dengan siklus hidup Activity. Hanya terdapat beberapa perbedaan di dalam Callback methods yang disediakannya. Di dalam Fragment setidaknya memiliki tiga buah state dalam siklus hidupnya, yaitu:

  1. Resumed: Fragment terlihat, sementara Activity tetap berjalan
  2. Paused: Activity lain menutupi sebagian dari Activity induk
  3. Stopped: Ketika Fragment tidak terlihat di layar. Bisa jadi karena Activity berhenti atau Fragment sudah dihapus dari Activity. Atau Fragment masih hidup dengan semua informasinya, tetapi tidak kelihatan di layar dan akan dihancurkan.

Callback methods yang sering digunakan di Fragments:

  1. onCreateView: setup komponen view yang digunakan
  2. onCreate: inisialisasi data
  3. onActivityCreated: mengatur hal-hal yang hanya dapat terjadi setelah Activity telah sepenuhnya dibuat

Komunikasi & navigasi antar-Fragment dan Activity

Ketika Fragment digunakan, peran Activity bergeser menjadi sebagai pengontrol navigasi yang bertanggung jawab untuk:

  • Navigasi ke activity lain melalui intent.
  • Menyajikan komponen navigasi seperti panel navigasi atau viewpager.
  • Menyembunyikan dan menunjukkan fragmen yang relevan menggunakan FragmentManager.
  • Menerima data dari intent dan mengirimkan data antar fragment.

Fragmen adalah pengontrol konten dan berisi sebagian besar tampilan, tata letak, dan logika, termasuk:

  • Tata letak dan tampilan yang menampilkan konten aplikasi yang relevan.
  • Logika penanganan event yang terkait dengan tampilan.
  • Lihat logika manajemen state seperti visibilitas atau penanganan kesalahan.
  • Memicu permintaan jaringan melalui objek klien.
  • Pengambilan dan penyimpanan data dari persistensi melalui objek model.

Referensi:

Comments

Related posts