Back to Pengembangan Android dengan Kotlin

UI Navigation Components Implementation

Questions/Cues

  • Bagaimana mengimplementasikan menu options di Activity?
  • Apa peran DrawerLayout dalam navigasi UI?
  • Bagaimana menghubungkan NavigationView dengan NavController?
  • Mengapa perlu menangani back stack navigasi?
  • Bagaimana struktur XML untuk menu navigation drawer?

Reference Points

  • Android Development with Kotlin (Slides 10-17, 44-48)
  • Android Development with Kotlin (Slides 45-46)

Implementasi App Bar dan Menu Options

App Bar (juga disebut Action Bar) merupakan komponen UI di bagian atas layar yang menampilkan judul aplikasi dan menu aksi. Untuk menambahkan menu, developer perlu membuat file XML di direktori res/menu yang mendefinisikan struktur menu. Setiap item menu memiliki properti seperti ID, ikon, dan judul yang dapat dikustomisasi.

Contoh struktur XML menu sederhana:

 
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
<item
 
android:id="@+id/action_settings"
 
android:title="Pengaturan"
 
android:orderInCategory="100"
 
app:showAsAction="never"/>
 
</menu>
 

Untuk menampilkan menu di Activity, gunakan metode onCreateOptionsMenu dengan memanggil menuInflater.inflate(). Penanganan seleksi item menu dilakukan melalui onOptionsItemSelected dengan mencocokkan item.itemId. Analoginya mirip dengan membuat daftar tombol interaktif di toolbar aplikasi.

Navigation Drawer merupakan panel geser yang menampilkan opsi navigasi utama aplikasi. Komponen ini diimplementasikan menggunakan DrawerLayout sebagai kontainer utama yang berisi dua child: konten utama (biasanya NavHostFragment) dan NavigationView untuk menu drawer.

Struktur XML dasar:

 
<androidx.drawerlayout.widget.DrawerLayout>
 
<fragment
 
android:id="@+id/nav_host_fragment"
 
... />
 
<com.google.android.material.navigation.NavigationView
 
android:id="@+id/nav_view"
 
app:menu="@menu/drawer_menu" />
 
</androidx.drawerlayout.widget.DrawerLayout>
 

Untuk menghubungkan drawer dengan mekanisme navigasi, gunakan setupWithNavController() yang mengaitkan NavigationView dengan NavController. Ini memungkinkan seleksi item menu secara otomatis men-trigger navigasi ke destination yang sesuai dalam grafik navigasi.

Manajemen Back Stack

Back stack merupakan mekanisme penyimpanan riwayat navigasi dimana setiap destination baru ditumpuk di atas destination sebelumnya. Pada implementasi berbasis Fragment, sistem otomatis mengelola back stack saat melakukan transisi antar destination.

Contoh visual back stack:


Aktivitas 1

Fragment A → Fragment B → Fragment C

Ketika pengguna menekan tombol back, Fragment C akan di-pop dari stack dan tampilan kembali ke Fragment B. Developer dapat mengkustomisasi perilaku ini melalui popUpTo dan popUpToInclusive dalam definisi action di navigation graph.

Summary

Implementasi komponen navigasi UI melibatkan integrasi App Bar, Navigation Drawer, dan sistem menu dengan mekanisme navigasi inti. DrawerLayout berfungsi sebagai kontainer utama untuk navigation drawer yang berisi NavigationView dan NavHostFragment. Menu options diimplementasikan melalui file XML dan dihubungkan dengan logika navigasi melalui onOptionsItemSelected. Manajemen back stack yang efektif penting untuk memastikan pengalaman navigasi yang intuitif, dimana setiap destination baru ditambahkan ke tumpukan navigasi.