Membuat Menu di Android

Menu sangat bermanfaat untuk menampilkan beberapa pilihan tambahan yang tidak secara langsung terlihat di UI utama di suatu app. Ada dua jenis menu utama di Android:
  • Options Menu - akan menampilkan informasi terkait dengan 'activity' yang sedang aktif. Di Android, kita bisa mengaktifkan 'options menu' dengan menekan tombol 'MENU'.
  • Context Menu - akan menampilkan informasi yang terkait dengan tampilan tertentu pada suatu 'activity'. Di Android, untuk mengaktifkan suatu 'context menu' kita bisa men-tap dan menahannya.
Menyiapkan Method-method Sebagai Pembantu

Sebelum kita membuat 'options menu' dan 'context menu', kita perlu membuat dua method pembantu. Yang satu untuk membuat daftar item untuk ditampilkan di dalam menu, dan yang satunya untuk menangani 'event' yang dipicu bila user memilih suatu item di dalam menu tersebut.

Berikut dibawah adalah contoh kode untuk dua method pembantu tersebut:
package com.example.menus; 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast; 
public class MainActivity extends AppCompatActivity { 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
private void createMenu(Menu menu) {
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");
{
mnu1.setAlphabeticShortcut('a');
}
MenuItem mnu2 = menu.add(0, 1, 1, "Item 2");
{
mnu2.setAlphabeticShortcut('b');
}
MenuItem mnu3 = menu.add(0, 2, 2, "Item 3");
mnu1.setIcon(R.drawable.ic_launcher);
{
mnu3.setAlphabeticShortcut('c');
}
MenuItem mnu4 = menu.add(0, 3, 3, "Item 4");
{
mnu4.setAlphabeticShortcut('d');
}
menu.add(0, 4, 4, "Item 5");
menu.add(0, 5, 5, "Item 6");
menu.add(0, 6, 6, "Item 7");
private boolean menuChoice(MenuItem item) {
switch (item.getItemId()) {
case 0:
Toast.makeText(this, "Anda klik Item 1", Toast.LENGTH_LONG).show();
return true;
case 1:
Toast.makeText(this, "Anda klik Item 2", Toast.LENGTH_LONG).show();
return true;
case 2:
Toast.makeText(this, "Anda klik Item 3", Toast.LENGTH_LONG).show();
return true;
case 3:
Toast.makeText(this, "Anda klik Item 4", Toast.LENGTH_LONG).show();
return true;
case 4:
Toast.makeText(this, "Anda klik Item 5", Toast.LENGTH_LONG).show();
return true;
case 5:
Toast.makeText(this, "Anda klik Item 6", Toast.LENGTH_LONG).show();
return true;
case 6:
Toast.makeText(this, "Anda klik Item 7", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
}
Catatan:
Kode di atas bila dijalankan di Android Studio tidak akan tampil item-item menunya, karena method-method yang digunakan di atas memang hanya untuk menyiapkan item menu dan menanganni event nya saja. Untuk menampilkan item-item menu, kita akan memodifikasi dalam latihan selanjutnya tentang 'Options Menu' dan 'Context Menu'
Penjelasan

Contoh di atas kita membuat dua method: 'createMenu()' dan 'menuChoice()' yang mengambil argument 'Menu' dan menambahkan beberapa item menu di dalamnya.

Untuk menambahkan item ke menu, kita perlu membuat instans dari class 'MenuItem' dan menggunakan menggunakan method 'add()' dari object 'Menu':
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");
{
mnu1.setAlphabeticShortcut('a');
}
Penjelasan empat argument dari method 'add()' adalah sebagai berikut:
  • groupId - ini adalah group identifier dimana item menu adalah bagian darinya. Kita akan menggunakan 0 bila suatu item tidak dalam suatu group.
  • itemId - ID dari item yang harus unique
  • order - urutan untuk menampilkan item
  • title - teks yang ditampilkan untuk item menu tersebut
Kita bisa menggunakan method 'setAlphabeticShortcut()' untuk memberi tombol 'shortcut' ke item menu sehingga user bisa memilih suatu item dengan menekan tombol di keyboard. Method 'setIcon()' akan memuat gambar/icon untuk ditampilkan di item menu.

Method 'menuChoice()' menggunakan argument 'MenuItem' dan men-cek ID-nya untuk menentukan item menu yang dipilih. Kemudian method tersebut akan menampilkan pesan 'Toast' supaya user bisa mengetahui item menu yang dipilih.

No comments: