Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Menambahkan dan menangani tindakan

Panel aplikasi memungkinkan Anda menambahkan tombol untuk tindakan pengguna. Fitur ini memungkinkan Anda menempatkan tindakan paling penting untuk konteks saat ini tepat di bagian atas aplikasi. Misalnya, aplikasi penelusuran foto mungkin menampilkan tombol bagikan dan buat album di bagian atas saat pengguna melihat rol foto mereka; saat pengguna melihat satu foto, aplikasi mungkin akan menampilkan tombol crop dan filter.

Ruang di panel aplikasi bersifat terbatas. Jika aplikasi mendeklarasikan lebih banyak tindakan dari yang dapat ditampung panel aplikasi, panel aplikasi akan mengirim tindakan lebihan ke menu tambahan. Aplikasi juga dapat menentukan agar suatu tindakan selalu ditampilkan dalam menu tambahan, bukan di panel aplikasi.

Gambar 1. Panel aplikasi dengan satu tombol tindakan dan menu tambahan.

Menambahkan Tombol Tindakan

Semua tombol tindakan dan item lain yang tersedia dalam tindakan tambahan dijelaskan dalam resource menu XML. Untuk menambahkan tindakan ke panel tindakan, buat file XML baru di direktori res/menu/ project Anda.

Tambahkan elemen <item> untuk setiap item yang ingin Anda sertakan dalam panel tindakan, seperti yang ditunjukkan dalam contoh file menu XML berikut:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >

        <!-- "Mark Favorite", should appear as action button if possible -->
        <item
            android:id="@+id/action_favorite"
            android:icon="@drawable/ic_favorite_black_48dp"
            android:title="@string/action_favorite"
            app:showAsAction="ifRoom"/>

        <!-- Settings, should always be in the overflow -->
        <item android:id="@+id/action_settings"
              android:title="@string/action_settings"
              app:showAsAction="never"/>

    </menu>
    

Atribut app:showAsAction menentukan apakah tindakan harus ditampilkan sebagai tombol di panel aplikasi. Jika Anda menyetel app:showAsAction="ifRoom" (seperti dalam tindakan favorit kode contoh), tindakan tersebut akan ditampilkan sebagai tombol apabila ada ruang yang tersedia di panel aplikasi; jika tidak ada cukup ruang, tindakan lebihan akan dikirim ke menu tambahan. Jika Anda menyetel app:showAsAction="never" (seperti dalam tindakan setelan kode contoh), tindakan akan selalu tercantum dalam menu tambahan, dan tidak ditampilkan dalam panel aplikasi.

Sistem menggunakan ikon tindakan sebagai tombol tindakan jika tindakan tersebut ditampilkan di panel aplikasi. Anda dapat menemukan berbagai ikon yang berguna di halaman Ikon Material.

Merespons Tindakan

Saat pengguna memilih salah satu item panel aplikasi, sistem akan memanggil metode callback onOptionsItemSelected() pada aktivitas Anda, dan meneruskan objek MenuItem untuk menunjukkan item mana yang diklik. Dalam penerapan onOptionsItemSelected(), panggil metode MenuItem.getItemId() untuk menentukan item mana yang ditekan. ID yang dikembalikan cocok dengan nilai yang dinyatakan dalam atribut android:id elemen <item> yang terkait.

Misalnya, kode berikut akan memeriksa tindakan yang dipilih pengguna. Jika metode ini tidak mengenali tindakan pengguna, metode superclass akan dipanggil:

Kotlin

    override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
        R.id.action_settings -> {
            // User chose the "Settings" item, show the app settings UI...
            true
        }

        R.id.action_favorite -> {
            // User chose the "Favorite" action, mark the current item
            // as a favorite...
            true
        }

        else -> {
            // If we got here, the user's action was not recognized.
            // Invoke the superclass to handle it.
            super.onOptionsItemSelected(item)
        }
    }
    

Java

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_settings:
                // User chose the "Settings" item, show the app settings UI...
                return true;

            case R.id.action_favorite:
                // User chose the "Favorite" action, mark the current item
                // as a favorite...
                return true;

            default:
                // If we got here, the user's action was not recognized.
                // Invoke the superclass to handle it.
                return super.onOptionsItemSelected(item);

        }
    }