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

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

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

วันที่ รูปภาพแสดง Now in Android พร้อมไอคอนแถบการทำงาน
รูปที่ 1 ไอคอนการดำเนินการใน "ตอนนี้อยู่ใน 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

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

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

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

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

    }
}