Diskusi Muchammad Saifurrijaal

Muchammad Saifurrijaal
Ditanyakan pada: Membuat Halaman Sell Activity-UI

Perbedaan inisiasi binding pada fragment dan activity

Izin bertanya, mengapa saat inisiasi binding pada activity dan fragment berbeda? Jika pada activity kita menggunakan lateinit var, sementara pada fragment menggunakan encapsulasi, padahal pada fragment juga bisa menggunakan lateinit var. Apakah ada alasan tertentu mengapa saat di fragment tidak menggunakan lateinit var juga untuk inisiasi binding? Terima kasih

3 Jawaban

Avatar
Muhammad Fakhry Burhanuddin

13 hari yang lalu

Itu karena activity dan fragment mempunyai beberapa perbedaan salah satunya adalah lifecycle. Fragment memiliki lifecycle sendiri dan bergantung penuh pada lifecycle Activity di mana ia ditanamkan. Cara untuk inflate view pun beda. Inisiasi binding juga beda. Dan cara memakai view binding sudah didokumentasikan oleh Google untuk kita pakai. Berikut dokumentasinya [https://developer.android.com/topic/libraries/view-binding?hl=id](https://developer.android.com/topic/libraries/view-binding?hl=id)

Avatar
BroKoding

11 hari yang lalu

Halo kak, inisialisasi binding dalam activity dan fragment berbeda karena siklus hidup kedua komponen yang berbeda. Dalam Activity, metode 'onCreate()' dipanggil saat activity dibuat, dan ini biasanya tempat kita menginisialisasi binding. Hal ini karena activity memiliki daur hidup tunggal dan bertanggung jawab untuk mengelola daur hidup komponen turunannya. Di sisi lain, fragment memiliki daur hidup terpisah dari activity induknya. Saat fragment ditambahkan ke activity, metode 'onAttach()'-nya akan dipanggil terlebih dahulu, diikuti oleh 'onCreate()', 'onCreateView()', dan metode daur hidup lainnya. Dalam sebuah fragment, kita biasanya menginisialisasi binding dalam metode 'onCreateView()', yang dipanggil saat UI fragment sedang dibuat.

Avatar
Faisal Hanafi

2 hari yang lalu

kedua teknik, yaitu menggunakan lateinit var dan encapsulasi, sebenarnya dapat digunakan pada kedua Activity dan Fragment. Namun, beberapa developer memilih untuk menggunakan cara yang berbeda-beda tergantung pada preferensi mereka atau kebiasaan dalam coding. Menggunakan lateinit var biasanya digunakan pada inisiasi view binding di dalam Activity, karena view binding pada Activity dapat diinisialisasi di dalam method ```onCreate()``` dan lateinit var memungkinkan kita untuk menunda inisiasi variabel hingga nilainya siap digunakan. Selain itu, inisiasi menggunakan lateinit var cenderung lebih sederhana dan mudah dipahami. Sementara itu, penggunaan encapsulasi biasanya digunakan pada inisiasi view binding di dalam Fragment karena pada Fragment, view binding tidak dapat diinisialisasi di dalam method ``` onCreate()``` seperti pada Activity. View binding pada Fragment harus diinisialisasi di dalam method ```onCreateView()```. Encapsulasi dapat mempermudah inisiasi view binding di dalam method ini dan memastikan bahwa view binding hanya diakses pada saat view sudah dibuat. Namun, seperti yang sudah disebutkan sebelumnya, keduanya dapat digunakan pada keduanya Activity dan Fragment. Terlepas dari teknik yang digunakan, penting untuk memastikan bahwa view binding diinisialisasi dengan benar dan tidak menyebabkan memory leak.