เพิ่มและจัดการการดำเนินการ

ลองใช้วิธีแบบ Compose
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีเพิ่มคอมโพเนนต์ใน Compose

แถบแอปช่วยให้คุณเพิ่มปุ่มสำหรับการดำเนินการของผู้ใช้ได้ ฟีเจอร์นี้ช่วยให้คุณใส่ การดำเนินการที่สำคัญที่สุดสำหรับบริบทปัจจุบันไว้ที่ด้านบนของแอปได้ เช่น แอปสำหรับเรียกดูรูปภาพอาจแสดงปุ่ม แชร์และ สร้างอัลบั้มที่ด้านบนเมื่อผู้ใช้กำลังดูม้วนฟิล์ม เมื่อผู้ใช้ดูรูปภาพแต่ละรูป แอปอาจแสดงปุ่ม ครอบตัดและ ฟิลเตอร์

พื้นที่ในแถบแอปมีจำกัด หากแอปประกาศการดำเนินการมากกว่าจำนวนที่สามารถใส่ในแถบแอปได้ แถบแอปจะส่งการดำเนินการที่เกินมาไปยังเมนู ล้น แอปยังระบุได้ว่าการดำเนินการควรแสดงในเมนูรายการเพิ่มเติมเสมอแทนที่จะแสดงในแถบแอป

รูปภาพที่แสดงแอป Android Now in Android พร้อมไอคอนแถบการดำเนินการ
รูปที่ 1 ไอคอนการดำเนินการในแอป "Now in Android"

เพิ่มปุ่มดำเนินการ

ปุ่มดำเนินการและรายการอื่นๆ ทั้งหมดที่พร้อมใช้งานในเมนูที่ล้นของการดำเนินการจะ กำหนดไว้ในทรัพยากรเมนู XML หากต้องการเพิ่มการดำเนินการลงในแถบการดำเนินการ ให้สร้างไฟล์ XML ใหม่ในไดเรกทอรี res/menu/ ของโปรเจ็กต์

เพิ่มองค์ประกอบ <item> สำหรับแต่ละรายการที่ต้องการรวมไว้ในแถบการดำเนินการ ดังที่แสดงใน ไฟล์ XML ของเมนูตัวอย่างต่อไปนี้:

<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 จะระบุว่าการดำเนินการควรแสดงเป็นปุ่มในแถบแอปหรือไม่ หากคุณตั้งค่า app:showAsAction="ifRoom" ดังเช่นการดำเนินการ รายการโปรดในโค้ดตัวอย่าง การดำเนินการจะแสดงเป็นปุ่มหากมีพื้นที่ในแถบแอป หากมีพื้นที่ไม่เพียงพอ ระบบจะส่งการดำเนินการที่เกินมาไปยังเมนูรายการเพิ่มเติม หากคุณตั้งค่า app:showAsAction="never" ดังเช่นการดำเนินการ การตั้งค่าในโค้ดตัวอย่าง การดำเนินการจะแสดงในเมนูรายการเพิ่มเติมเสมอและไม่แสดงในแถบแอป

ระบบจะใช้ไอคอนของการดำเนินการเป็นปุ่มดำเนินการหากการดำเนินการแสดงในแถบแอป คุณสามารถดูไอคอนที่มีประโยชน์มากมายได้ใน Material Icons

ตอบสนองต่อการดำเนินการ

เมื่อผู้ใช้เลือกรายการใดรายการหนึ่งในแถบแอป ระบบจะเรียกใช้เมธอด Callback onOptionsItemSelected() ของกิจกรรมและส่งออบเจ็กต์ MenuItem เพื่อระบุรายการที่แตะ ในการติดตั้งใช้งาน onOptionsItemSelected() ให้เรียกใช้เมธอด MenuItem.getItemId() เพื่อกำหนดรายการที่แตะ รหัสที่ส่งคืนจะตรงกับค่าที่คุณ ประกาศในแอตทริบิวต์ android:idขององค์ประกอบ<item>ที่เกี่ยวข้อง

ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้จะตรวจสอบการดำเนินการที่ผู้ใช้เลือก หากเมธอดไม่รู้จักการดำเนินการของผู้ใช้ เมธอดจะเรียกใช้เมธอดของคลาสระดับบน

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);

    }
}