Ngoding jadi pusing karena lupa.

Breaking

Thursday, February 14

February 14, 2019

Belajar Fragment

Udah lama gak nulis, kali ini entah kenapa ingin nulis lagi. Tulisan kali ini adalah tulisan tentang ilmu baru yang saya terima ketika mengikuti suatu acara. Iya acara yang pembicaranya adalah salah satu pemecah rekor DICODING, dengan menyelsaikan kelas KADE hanya 5 hari. Nah dia ini memberikan materi tentang Mengendalikan Fragment.

Ok, sebelumnya saya akan mencoba berbicara tentang Fragment. Pada umumnya ketika baru - baru belajar membuat Aplikasi Android, akan terbiasa dengan yang namanya Intent untuk berpindah dari satu Activity ke Activity lain.

Kenapa harus berpindah ?
Karena satu activity hanya memiliki sebuah layout. Yang artinya jika ingin ke tampilan lain, harus berpindah ke activity lain.

Ok, kembali ke Fragment.
Hal yang harus benar - benar di ingat adalah, FRAGMENT berjalan diatas Activity.
Karena Fragment berada diatas activity, dan sebuah activity bisa menjalankan banyak fragment maka hal ini memungkinkan kita hanya memerlukan sebuah activity untuk membuat banyak tampilan. Selain itu, perpindahan antar fragment terasa lebih smooth dibandingkan perpindahan antara Activity.

Ilustrasi Aplikasi yang akan dibuat

Ok, seperti yang terlihat pada gambar diatas. Ada sebuah activity yang diatasanya ada beberapa fragment (fragment 1, fragment 2 dan fragment 3).

Ok, ayo kita coba buat terlebih dahulu, sebuah project dengan empty activity dan 3 buah fragment.

Memilih template project

Menentukan nama project

Ok, jika sudah, maka akan otomatis muncul MainActivity.java dan xml nya. Ayo lanjutkan dengan membuat 1 buah package dan 3 buah fragment.

Membuat package

Saya membuat package dengan tujuan, supaya lebih rapi saja.
Caranya ? : kalau dari gambar diatas, klik kanan dizcoding.com.belajarfragment->new->packages.

Ok, di dalam package tadi, ayo kita buat 3 buah fragmentnya.
Cara yang saya lakukan adalah seperti ini
Klik kanan packages yang barusaja dibuat -> new -> Fragment -> Fragment(Blank).

sisanya ikuti gambar berikut.

Membuat Fragment baru

Jika sudah sesuai, silahkan klik finish.
dan lanjutkan dengan membuat FragmentDua dan FragmentTiga dengan cara yang sama seperti saat membuat FragmentSatu.
Berikut penampakannya setelah tiga buah fragment terbuat.

Setelah Fragment satu,dua, dan tiga terbuat

Ok, kita kembali sejenak ke layout MainActivity.
kita ubah isinya. Untuk contoh bisa mengikuti yang saya lakukan seperti berikut.

Membuat container di dalam activity_main.xml

Saya membuat sebuah Linear layout dengan id container. Tujuannya adalah, nantinya container ini akan di replace / di gantikan dengan layout yang ada di fragment, sehingga nantinya layout dari fragment bisa muncul di dalam Activity.

Selanjutnya,  ayo kita atur terlebih dahulu FragmentSatu. Di dalamnya saya ingin menambahkan Button. Lihat contoh berikut.

Mengatur layout fragment_satu

Ayo lakukan hal yang sama dengan layout FragmentDua. Ubah menjadi seperti berikut.

Mengatur layout fragment_dua

Dan Terakhir, ayo ubah layout FragmentTiga.
Cukup rubah textviewnya saja, supaya kita tau jika itu adalah fragmentTiga.

Mengatur layout fragment_tiga

Ok, selanjutnya ayo kita ke MainActivity.java

Membuat method commitFragment

Saya membuat sebuah method dengan nama commitFragment(Dengan parameter fragment).
Method ini saya buat untuk menghandle proses replace fragment atau proses untuk mengganti fragment yang sebelumnya dengan yang baru. Dimana fragment nanti akan menggantikan tempat R.id.container yang ada di dalam .xml main activity.

Selain itu juga saya membuat method dengan nama openFragmentSatu().
Method ini saya buat untuk mendefenisikan fragmentSatu, supaya nantinya jika ingin menampilkan fragmentSatu hanya tinggal memanggil fragment ini saja. Seperti contoh di dalam method oncreate, untuk menampilkan fragmentSatu, saya hanya memanggil method  openFragmentSatu di dalam method oncreate.


Test running openFragmentSatu
Jika aplikasi dicoba untuk di jalankan, maka akan menampilkan tampilan seperti gambar diatas.

Ok, kita lanjutkan dengan aksi, yaitu aksi untuk menampilkan fragmentdua jika tombol Show Fragment Dua di klik.

Untuk itu, mari kita lanjutkan dengan membuat listener terlebih dahulu. Tetapi sebelum itu, mari kita buat package dengan nama listeners. Lalu baru buat sebuah java class baru.

Membuat listener

Yup, seperti itulah listenernya jika sudah di buat. Disitu saya menggunakan int untuk nilai yang akan dikirim, nilai ini nantinya adalah nomor dari fragment. Untuk lebih jelasnya ayo lanjutkan dulu.

Kembali ke Main activity, dan implement listener yang baru saja dibuat ke dalam Mainactivity, Ini saya lakukan karena nantinya MainActivity akan menjadi pendengar, ketika ada yang mengirim atau memberikan aksi ke listener yang sudah dibuat.

Implementasi listener ke mainActivity

Ketika sudah di implement, maka nanti akan muncul method baru yang mengoverride method yang ada di dalam listener seperti pada gambar diatas.


Menambahkan method openFragmentDua dan Tiga

Masih di MainActivity, saya menambahkan beberapa method dan juga menambahkan kondisi di dalam override yang sebelumnya, dapat dilihat pada gambar diatas.

Ok, next ayo pindah ke FragmentSatu, karena didalamnya ada tombol yang akan menjalankan aksi, untuk berpindah ke fragmentDua. Untuk itu, saya merubah FragmentDua.java menjadi seperti berikut.

Membuat fragment supaya bisa memanggil listener

Yang perlu di perhatikan. karena untuk membuka FragmentDua kita perlu berbisik terlebih dahulu ke MainActivity, maka kita harus mengetahui jika ternyata MainActivity ingin mendengarkan bisikan dari FragmentDua. caranya adalah dengan cara, MainActivity mengirimkan object listener ke dalam fragmentSatu (untuk itulah kenapa saya membuat method setFragment). Lalu di dalam override onclick. saya membuat fragment untuk berbisik kepada MainActivity melalui object listener, dan membisikkan angka 2. yang artinya nanti ketika MainActivity mendengar, akan mengeksekusi angka 2 (yaitu membuka fragmentDua).

Ayo kembali terlebih dahulu ke MainActivity, karena kita perlu membuat MainActivity mengirimkan object listener kedalam FragmentSatu.

Meminta Activity mengirimkan object listener ke fragmentSatu

Saya mengirimkan parameter listener kedalam method setFragment yang ada di fragmentSatu. Jika anda bertanya kenapa parameternya this ?, karena class MainActivity sudah implemen object FragmentNavigationListener.

Ok, sampai disini jika di coba untuk di jalankan, seharusnya sudah berjalan. (tapi hanya sampai menampilkan fragmentDua saja).

Ok, lanjutkan ke FragmentDua, kita lakukan hal yang sama seperti pada fragmentSatu.

Membuat fragment supaya bisa memanggil listener

Sama seperti FragmentSatu, di FragmentDua juga saya melakukan hal yang sama. bisa dilihat pada gambar diatas.
Dan kita kembali ke MainActivity, untuk membuat MainActivity mengirimkan object listener ke dalam fragmentDua. seperti berikut.

Meminta Activity mengirimkan object listener ke fragmentSatu

Ok, berikut preview dari semua kodingannya jika di jalankan.




Selesai, yey, project kecil ini akhirnya selesai.
Silahkan tinggalkan kritik dan sarannya pada kolom komentar dibawah.

Oh iya, ini saya lampirkan link git dari project yang baru saja dibuat. Link Project

TERIMAKASIH BANYAK