Membuat Context Menu

Latihan sebelumnya kita sudah tahu bagaimana cara membuat 'options menu' ketika user menekan tombol 'MENU'. Selain 'options menu', kita juga bisa menampilkan suatu 'context menu'. Suatu 'context menu' biasanya dikaitkan dengan suatu 'view' pada 'activity' kita, dan ditampilkan bila user men-tap dan menahan suatu item. Misalnya, bila user men-tap suatu tombol dan menahannya selama beberapa detik, 'context menu' bisa ditampilkan.

Bila kita ingin mengaitkan suatu 'context view' dengan suatu 'view' tertentu pada 'activity' kita, kita harus memanggil method 'setOnCreateContextMenuListener()' dari 'view' tertentu. Berikut di bawah ini adalah contoh kode untuk mengaitkan 'context menu' dengan suatu view tombol/button dengan memodifikasi kode file dari latihan sebelumnya.

file layout xml: activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hallo" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Klik dan tahan" />
</LinearLayout>

file java: MainActivity.java: (modifikasi lihat kode yang ditulis dengan huruf tebal)
package com.example.menus; 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; 
public class MainActivity extends AppCompatActivity { 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnCreateContextMenuListener(this);

@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, view, menuInfo);
createMenu(menu);
@Override
public boolean onContextItemSelected(MenuItem item) {
return menuChoice(item);
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");
{
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: 
Bila kita menggunakan minimum SDK dengan nilai 10 atau sebelumnya, pastikan untuk diubah ke nilai 14 atau yang lebih tinggi.
Kemudian jalankan kode di atas di Android Studio
Tampilan Context Menu

Penjelasan:

Dalam contoh di atas, kita memanggil method 'setOnCreateContextMenuListener()' dari 'Button' untuk mengaitkannya dengan 'context menu'.

Bila user men-tap dan menahan 'Button', maka method 'onCreateContextMenu()' dipanggil. Dengan cara yang sama dengan latihan sebelumnya, bila suatu item di dalam 'context menu' dipilih, maka method 'onContextItemSelected()' dipanggil, dimana di dalam method tersebut kita memanggil method 'menuChoice()' untuk menampilkan pesan ke user.
Catatan:
Bila kita menambahkan tombol 'shortcut' ke item menu, ini tidak akan berjalan. Untuk membuat tombol 'shortcut', kita perlu memanggil method 'setQuertyMode()' dari object 'Menu', seperti berikut:
private void createMenu (Menu menu)
{
menu.setQwertyMode(true);
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1");
{
mnu1.setAlphabeticShortcut('a');
mnu1.setIcon(R.drawable.ic_launcher);
}
}

No comments: