Diskusi Muchammad Saifurrijaal

Selesai
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

4 Jawaban

Avatar
Muhammad Fakhry Burhanuddin

setahun 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

Avatar
BroKoding

setahun 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

setahun 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.

Avatar
Levianth

setahun yang lalu

Heyoo kak~!

Mungkin penjelasan dari saya adalah seperti ini ya kak secara umum ada beberapa alasan mengapa inisiasi binding pada activity dan fragment berbeda:

  • Perbedaan pada lifecycle: Activity dan Fragment memiliki lifecycle yang berbeda-beda, sehingga cara inisiasi binding juga harus disesuaikan agar sesuai dengan tahap-tahap dalam lifecycle tersebut.

  • Perbedaan pada struktur kode: Biasanya, kode pada Fragment dibagi ke dalam beberapa file kotlin, seperti file kotlin untuk Fragment itu sendiri, dan file kotlin lainnya untuk menangani logic yang terkait dengan Fragment tersebut, misalnya adapter atau view model. Oleh karena itu, penggunaan encapsulation pada Fragment memudahkan kita dalam mengatur struktur kode, memisahkan responsabilitas, dan menghindari kode yang sulit dipelihara.

  • Keluaran dari Library: Library binding yang umum digunakan di Android Studio, seperti View Binding dan Data Binding, menawarkan cara inisiasi binding yang berbeda-beda untuk activity dan fragment. View Binding pada umumnya digunakan untuk activity dan dapat diinisiasi dengan menggunakan setContentView(). Sementara Data Binding lebih sering digunakan pada fragment dan membutuhkan layout sebagai input.

Meskipun beberapa pengembang Android masih menggunakan lateinit var untuk inisiasi binding pada Fragment, namun dengan memanfaatkan encapsulation, pengembang dapat memanfaatkan keuntungan lain yang ditawarkan oleh Library binding seperti kemampuan compile-time type safety, menghilangkan penggunaan findViewById, dan banyak lagi.

Terima kasih juga ya kak karena telah bertanya di codepolitan dan dengan senang hati kami akan selalu membantu kakak untuk setiap masalah yang kakak alami di setiap courses yang kakak pelajari ya :D

Maka dari itu izinkan saya untuk menutup pertanyaan ini ya kakak dan jika ada pertanyaan lain silahkan tanyakan lagi ya kak :D

Terima kasih~!