Tutorial Android : Membuat Context Menu di Aplikasi Android

Baru kali ini rasanya saya benar-benar gak punya rumah, gara-gara rumah bukde dimana saya numpang sedang diperbaiki. Yang diperbaiki cuma pintu+kusennya dan kamar saya juga kena imbasnya. Mau nangkring di rumah gak enak, debunya seliweran kemana-mana. Mau ngNet di kampus, tempat cas-cas’an laptop di lantai 2 hilang (fitur baru setelah direnovasi kaleee yaw). Mau ngNet di ITSolution juga gak enak gimana gitu rasanya. Coba saya punya pacar, pasti bisa mengungsi di rumah pacar + sambil kencan (#haha). Jadilah saya keliling naik motor jupiter kesayangan, tujuan akhirnya malah wisata kuliner ke tempat-tempat yang belum pernah saya singgahi. Kebetulan juga duit jurnal dari kampus udah cair, lumayan ada buat hepi-hepi ngisi perut. Nah, malam ini saya mau melanjutkan postingan kemarin tentang membuat options menu di aplikasi android. Ada satu lagi fitur untuk menampilkan menu yang tersembunyai, yaitu context menu. Cara menampilkannya cukup dengan menekan agak lama sebuah objek, hingga muncul sebuah list menu (mirip seperti spinner). Kelebihan context menu ini ialah pilihan yang ditampilkan bisa lebih dari 6, kalau options menu terbatas sampai 6 saja. Berikut cara membuatnya.

1. Buat android project baru seperti gambar di bawah ini :

2. Hampir sama dengan options menu, context menu juga memerlukan sebuah layout terpisah untuk menampilkan menu-menu yang sudah disisipkan di dalamnya. Buat folder menu di dalam folder res. Strukturnya seperti gambar di bawah ini :

3. Buat file xml baru di dalam folder menu dengan nama con_menu.xml. Ketikkan kode layout di bawah ini :

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/mn1"
    android:title="Ubuntu" />
    <item android:id="@+id/mn2"
    android:title="Open Suse" />
    <item android:id="@+id/mn3"
    android:title="Mandriva" />
    <item android:id="@+id/mn4"
    android:title="Linux Mint" />
    <item android:id="@+id/mn5"
    android:title="Red Hat" />
    <item android:id="@+id/mn6"
    android:title="Fedora" />
    <item android:id="@+id/mn7"
    android:title="BlankOn" />
    <item android:id="@+id/mn8"
    android:title="Kubuntu" />
    <item android:id="@+id/mn9"
    android:title="Debian" />
    <item android:id="@+id/mn10"
    android:title="Mandrake" />
</menu>

4. Buka dan edit file main.xml dari folder layout. Disini objeknya saya menggunakan sebuah gambar tux.

<?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"
    android:gravity="center" >
<ImageView android:id="@+id/press"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
	android:src="@drawable/gnome" />
</LinearLayout>

5. Yang terakhir, buka file ContextMenuActivity.java. Kalau dilihat sekilas, kodenya lumayan mirip dengan options menu hanya beda di saat memanggil library-nya. Ketikkan kode untuk activity di bawah ini :

public class ContextMenuActivity extends Activity {
	  public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.main);

	        ImageView tekan = (ImageView)findViewById(R.id.press);

	        registerForContextMenu(tekan);
	    }

	    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
	        super.onCreateContextMenu(menu, v, menuInfo);
	        MenuInflater inflater = getMenuInflater();
	        inflater.inflate(R.menu.con_menu, menu);
	    }

	    public boolean onContextItemSelected(MenuItem item) {
	    	String isi = "Apakah ente pengguna ";
	        isi += item+"?";
	        tampil(isi);
	        return true;
	    }

	    private void tampil(String isi) {
	        Toast.makeText(this, isi, Toast.LENGTH_LONG).show();
	    }

}

6. Jalankan via emulator atau di debug ke hape android rekan-rekan. Hasilnya sama saja, kira-kira seperti ini :

Context Menu ini ternyata tidak mendukung pemakaian icon. Hal itu ternyata bisa di-akali dengan menggabungkannya dengan sebuah listview yang sudah diberikan kustom icon (cuma tau konsepnya doang, belum sempat nyoba :p). Di postingan selanjutnya saya akan mencoba untuk menggabungkan listview dengan context menu. Jadi ketika salah satu pilihan yang terdapat di listview di sentuh agak lama, akan muncul pilihan menu dalam bentuk context menu. Mirip seperti fitur di File Manager atau Root Explorer. OK deh, sekian dulu postingan saya malam ini, semoga bisa bermanfaat untuk rekan-rekan.

Happy Blogging and Keep Coding

Cheerrrsss….!!!!

[to_like]Download Aplikasi[/to_like]

7 comments

  1. widy suhaidy Reply

    gimana ya manggil fungsi context menu nya?
    yang ini?? registerForContextMenu(tekan);

    • widy suhaidy Reply

      import android.os.Bundle;
      import android.app.Activity;
      import android.content.Intent;
      import android.view.Menu;
      import android.widget.ImageButton;
      import android.widget.ImageView;
      import android.widget.Toast;
      import android.view.ContextMenu;
      import android.view.ContextMenu.ContextMenuInfo;
      import android.view.MenuInflater;
      import android.view.MenuItem;
      import android.view.View;
      import android.view.View.OnClickListener;

      public class MainActivity extends Activity {
      ImageButton imageButton, imageButton2;
      ImageView imageMenu;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      addListenerOnButton();
      }
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.con_menu, menu);
      }
      public boolean onContextItemSelected(MenuItem item) {
      String isi = “Apakah ente pengguna “;
      isi += item+”?”;
      tampil(isi);
      return true;
      }
      private void tampil(String isi) {
      Toast.makeText(this, isi, Toast.LENGTH_LONG).show();
      }

      public void addListenerOnButton() {

      imageButton = (ImageButton) findViewById(R.id.imageButton1);
      imageButton2 = (ImageButton) findViewById(R.id.imageButton2);
      imageMenu = (ImageView) findViewById(R.id.image_arrow_menu);

      imageButton.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View arg0)
      {
      Intent inten1 = new Intent(MainActivity.this, activity_villa1.class);
      MainActivity.this.startActivity(inten1);
      }
      });
      imageButton2.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View arg0)
      {
      Toast.makeText(MainActivity.this,
      “ImageButton2 is clicked!”, Toast.LENGTH_SHORT).show();
      }
      });
      imageMenu.setOnClickListener(new OnClickListener()
      {
      @Override
      public void onClick(View arg0)
      {
      registerForContextMenu(imageMenu);

      }
      });
      }

      }

      ini codingannya gan.. ada yang salah???

  2. widy suhaidy Reply

    gan mau tanya dong,
    trnyata gue udah bisa, cuma gimana caranya biar gak perlu di hold itu button?
    please butuh pencerahan nih..

Leave a Reply

Your email address will not be published. Required fields are marked *