İşlem ekleme ve işleme

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da nasıl bileşen ekleyeceğinizi öğrenin.

Uygulama çubuğu, kullanıcı işlemlerine yönelik düğmeler eklemenize olanak tanır. Bu özellik, mevcut bağlam için en önemli işlemleri uygulamanın en üstüne yerleştirmenize olanak tanır. Örneğin, bir fotoğraf tarama uygulaması, kullanıcı fotoğraf rulosuna bakarken en üstte paylaş ve albüm oluştur düğmelerini gösterebilir. Kullanıcı tek bir fotoğrafa baktığında uygulamada kırpma ve filtre düğmeleri gösterilebilir.

Uygulama çubuğunda yer sınırlıdır. Bir uygulama, uygulama çubuğuna sığabilecekten daha fazla işlem bildirirse uygulama çubuğu, fazla işlemleri taşma menüsüne gönderir. Uygulama, bir işlemin uygulama çubuğunda gösterilmesi yerine her zaman taşma menüsünde gösterilmesini de belirtebilir.

Now in Android uygulamasının işlem çubuğu simgesini gösteren resim
Şekil 1. "Now in Android" uygulamasında bir işlem simgesi.

İşlem düğmeleri ekleme

İşlem taşmasında bulunan tüm işlem düğmeleri ve diğer öğeler bir XML menü kaynağında tanımlanır. İşlem çubuğuna işlem eklemek için projenizin res/menu/ dizininde yeni bir XML dosyası oluşturun.

Aşağıdaki örnek menü XML dosyasında gösterildiği gibi, işlem çubuğuna eklemek istediğiniz her öğe için bir <item> öğesi ekleyin:

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

    <!-- "Mark Favorite", must 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, must always be in the overflow. -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

app:showAsAction özelliği, işlemin uygulama çubuğunda düğme olarak gösterilip gösterilmeyeceğini belirtir. Örnek kodun favorite işleminde olduğu gibi app:showAsAction="ifRoom" ayarlarsanız işlem, uygulama çubuğunda yer varsa düğme olarak gösterilir. Yeterli alan yoksa fazla işlemler taşma menüsüne gönderilir. app:showAsAction="never" değerini ayarlarsanız (örnek kodun settings işleminde olduğu gibi) işlem her zaman taşma menüsünde listelenir ve uygulama çubuğunda gösterilmez.

İşlem, uygulama çubuğunda gösteriliyorsa sistem, işlemin simgesini işlem düğmesi olarak kullanır. Material Icons'da birçok faydalı simge bulabilirsiniz.

İşlemlere yanıt verme

Kullanıcı, uygulama çubuğu öğelerinden birini seçtiğinde sistem, etkinliğinizin onOptionsItemSelected() geri çağırma yöntemini çağırır ve hangi öğeye dokunulduğunu belirtmek için bir MenuItem nesnesi iletir. onOptionsItemSelected() uygulamanızda, hangi öğeye dokunulduğunu belirlemek için MenuItem.getItemId() yöntemini çağırın. Döndürülen kimlik, ilgili <item> öğesinin android:id özelliğinde tanımladığınız değerle eşleşiyor.

Örneğin, aşağıdaki kod snippet'i kullanıcının hangi işlemi seçtiğini kontrol eder. Yöntem, kullanıcının işlemini tanımazsa üst sınıf yöntemini çağırır:

Kotlin

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

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

    else -> {
        // The user's action isn't 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 chooses the "Settings" item. Show the app settings UI.
            return true;

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

        default:
            // The user's action isn't recognized.
            // Invoke the superclass to handle it.
            return super.onOptionsItemSelected(item);

    }
}