Menambahkan Action Item pada Action Bar

Selain menampilkkan icon app dan judul activity pada bagian kiri Action Bar, kita juga bisa menampilkan item tambahan pada Action Bar. Item-item tambahan ini disebut dengan ‘action items’. Action items adalah shortcut ke beberapa tindakan yang umum dilakukan pada app kita. Contohnya, kita mungkin membuat app RSS reader, dimana beberapa action item-nya adalah “Refresh feed” atau “Delete feed”, dan “Add new feed”.

Berikut adalah contoh latihan menambahkan Action Item pada Action Bar.

1. Masih menggunakan project yang sama dengan latihan sebelumnya, kita modifikasi dan tambahkan pada file “MainActivity.java” kode berikut:
package id.co.blogspot.diansano.myactionbar;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
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);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

ActionBar actionBar = getSupportActionBar();
//actionBar.hide(); //utk menyembunyikan
actionBar.show(); //utk memunculkan lagi
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
return MenuChoice(item);
}

private void CreateMenu(Menu menu) {
MenuItem menu1 = menu.add(0,0,0, "Item 1");
{
menu1.setIcon(R.drawable.ic_launcher);
menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu2 = menu.add(0,1,1,"Item 2");
{
menu2.setIcon(R.drawable.ic_launcher);
menu2.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}



MenuItem menu3 = menu.add(0,2,2,"Item 3");
{
menu3.setIcon(R.drawable.ic_launcher);
menu3.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu4 = menu.add(0,3,3,"Item 4");
{
menu4.setIcon(R.drawable.ic_launcher);
menu4.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu5 = menu.add(0,4,4, "Item 5");
{
menu5.setIcon(R.drawable.ic_launcher);
menu5.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}

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;
}
return false;
}
}
2. Jalankan di emulator Android Studio perhatikan bahwa icon-icon di sebelah kanan Action Bar. Bila kita klik tombol Menu di emulator, kita akan melihat menu item yang lain. Ini disebut dengan ‘overflow menu’. Overflow menu akan muncul karena ruangan pada Action Bar tidak cukup. Pada perangkat yang tidak memiliki tombol Menu, overflow menu akan ditampilkan dengan icon dengan panah. 

3. Ketika di klik masing-masing menu akan menampilkan nama item menu yang dipilih yang ditampilkan melalui class ‘Toast’. 

4. Coba kita ubah orientasi ke landscape. Kita akan melihat icon ditampilkan semua karena ruangnya mencukupi.
Tampilan action item saat portrait (overflow menu) dan landscape

Penjelasan:

Action Bar akan mengisi action item-nya denganmemanggil method ‘onCreateOptionsMenu()’ pada activity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}
Dalam contoh di atas, kita memanggil method ‘CreateMenu()’ untuk menampilkan daftar item menu:
private void CreateMenu(Menu menu) {
MenuItem menu1 = menu.add(0,0,0, "Item 1");
{
menu1.setIcon(R.drawable.ic_launcher);
menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu2 = menu.add(0,1,1,"Item 2");
{
menu2.setIcon(R.drawable.ic_launcher);
menu2.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu3 = menu.add(0,2,2,"Item 3");
{
menu3.setIcon(R.drawable.ic_launcher);
menu3.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu4 = menu.add(0,3,3,"Item 4");
{
menu4.setIcon(R.drawable.ic_launcher);
menu4.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

MenuItem menu5 = menu.add(0,4,4, "Item 5");
{
menu5.setIcon(R.drawable.ic_launcher);
menu5.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
Supaya item menu muncul sebagai action item, kita harus memanggil method ‘setShowAction()’ dengan menggunakan konstanta SHOW_AS_ACTION_IF_ROOM. Ini akan memberitahukan perangkat Android untuk menampilkan item menu sebagai action item bila ada ruang yang tersedia.

Ketika item menu dipilih oleh user, method ‘onOptionsItemSelected()’ akan dipanggil:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return MenuChoice(item);
}
Disini, kita memanggil method ‘MenuChoice()’ untuk men-cek item menu apa yang di-klik, dan kemudian menamplkan pesan melalui class ‘Toast’:
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;
}
return false;
}

No comments: