Android: Google Maps Di Fragment
Saya baru terpikir buat ini setelah saya tahu bahwa jadi developer Android benar-benar menguji kesabaran. Sebenarnya saya sudah lama menjadi developer, namun entah kenapa saya baru terpikir untuk mengabadikan juang lelah saya di sebuah diari terbuka.
Objektif: Sematkan Peta Android di Activity
Jika kita lihat aplikasi transportasi online, akan selalu ada sebuah peta yang menjadi bagian dari tampilan tersebut. Entah peta itu menampilkan pengemudi yang available, mencari tujuan, dan lain-lain. Intinya, peta tersebut menyatu dengan sekumpulan objek yang lain. Entah itu tombol, teks, rating, atau input-input yang lain.
Berarti, saya harus menyediakan sebuah ruang untuk saya sematkan sebuah peta.
Permasalahan:
Saya tidak akan membahas bagaimana caranya mendapatkan API untuk Google Mapsnya. Itu sudah sangat banyak dijelaskan di Google dan Youtube, dan itu mudah, bahkan sangat mudah. Setiap API memiliki kuota yang jika kita memanggil APInya melebihi kuota, maka API akan diblokir sebelum kita perpanjang. Beruntung, Google mereset kuota API setiap awal bulan. Kuotanya pun besar hingga ribuan, jadi jangan khawatir jika hanya ditujukan untuk belajar.
Masalahnya, meskipun Android Studio sudah memiliki Activity khusus untuk Google Maps (Google Maps Activity), namun Activity tersebut hanya berupa tampilan full, bukan yang saya inginkan.
Hampir setiap tutorial yang membahas tentang penyematan Google Maps pasti selalu menggunakan Google Maps Activity, yang mana bukan itu tujuan saya. Yang pada akhirnya, saya memutuskan untuk membuat fragmen peta.
Apa sih fragment? Gampangnya, itu sebenarnya sekumpulan kode/objek yang dapat digunakan berulang-ulang dalam Activity yang berbeda-beda. Contoh, jika kita ingin menampilkan sebuah popup yang keluarnya itu-itu lagi, maka daripada harus berlelah-lelah mengkoding ulang popup tersebut di setiap Activity, cukup buat sebuah tampilan popup di fragment, dan kita dapat memanggil menggunakan fragment tersebut di Activity lain.
Mirip sebuah fungsi sih ya, hanya ini memanggil fungsi tampilan saja.
Akhirnya dapat pula tutorial yang membahas bagaimana implementasi Google Maps pada Fragment pada video berikut. Inti dari video:
Setelah itu semua selesai, saya membuat Activity baru (nama bebas) untuk mendrag&drop fragmentnya ke layout editor.
Setelah itu tinggal dijalankan, dan…
What?! Ada error “Error inflating class fragment” di Logcat!
Aduh paling males kalo ngeliat error gak jelas begono.
Butek daku dibuatnya, semua solusi dari stackoverflow sudah dibaca semuanya, tapi tidak ada yang membantu. Akhirnya saya pelan-pelan baca errornya di logcat, bahwa tertulis must implement OnFragmentInteractionListener.
The hell is that?! Setelah saya baca kembali, ternyata Aktivitas yang saya buat barusan harus mengimplementasi OnFragmentInteractionListener karena pada fungsi onAttachnya si Fragment, harus menyertakan itu.
Ya sudah, akhirnya saya tambahkan implements di kelas Activity yang ada Fragmentnya.
Nanti Android Studio menampilkan garis bawah merah khas MS. Word karena ada error. Nah kalian tinggal cari bola lampu merah di samping kiri kodenya dan klik itu, lalu klik yang paling atas hingga tercipta fungsi override berikut (kalian bisa ketik sendiri):
Setelah itu saya jalankan dan… alhamdulillah, petanya tampil di aplikasi, bersama dengan yang objek-objek yang lain.
Bagaimana kemudian saya memanggil fungsi fragment dari Activity? Ternyata cukup mudah hehe… Cukup buat public function di fragment,
Saya beri nama mapUpdate untuk fungsinya. Namun sebenarnya bebas. Boleh hanya fungsi perkalian untuk ditampilkan di logcat jika untuk tes semata, atau apapun. Ini saya juga hanya mencoba-coba untuk interaksinya saja via sebuah tombol yang saya tambahkan di Activity yang memuat fragmentnya.
Setelah itu, tombol tersebut saya beri perintah jika diklik.
Cukup dua baris yang berisikan:
Saya jalankan dan… voila. Fungsinya bekerja. Setiap saya klik tombolnya, petanya membuat marker sendiri di lokasi latitude dan longitude yang telah ditentukan.