รองรับแบ็กสแต็กหลายจอ

คอมโพเนนต์การนำทางทำงานร่วมกับระบบปฏิบัติการ Android เพื่อบำรุงรักษา back Stack ในฐานะผู้ใช้ ไปยังส่วนต่างๆ ในแอป ในบางกรณี การคงรักษาพารามิเตอร์ กลับไปสแต็กในเวลาเดียวกัน โดยให้ผู้ใช้ย้ายไปมาระหว่างเซลล์ทั้งสอง ตัวอย่างเช่น หากแอปของคุณมี bottom การนำทาง หรือการนำทาง ลิ้นชัก ด้านหลังหลายช่อง การรองรับสแต็กช่วยให้ผู้ใช้สลับไปมาในแอปได้อย่างอิสระ โดยไม่สูญเสียตำแหน่งเหล่านั้นในทุกที่

คอมโพเนนต์การนำทางมี API ที่รองรับสแต็กย้อนกลับหลายชุดโดย การบันทึกและคืนค่าสถานะของจุดหมายในการนำทาง กราฟ ชั้นเรียน NavigationUI ประกอบด้วย จัดการเรื่องนี้โดยอัตโนมัติ แต่คุณยังสามารถใช้ API ที่เกี่ยวข้อง ด้วยตนเองเพื่อการปรับการใช้งาน ที่เหมาะสมมากขึ้น

ใช้การสนับสนุนโดยอัตโนมัติด้วย NavigationUI

ชั้นเรียน NavigationUI มี API ที่บันทึกและคืนค่าสถานะของรายการในเมนูโดยอัตโนมัติเป็น ผู้ใช้สลับใช้งานระหว่างกันได้ API เหล่านี้ใช้การสนับสนุนสแต็กย้อนกลับหลายอย่างโดย ตามค่าเริ่มต้นในกรณีต่อไปนี้

API เหล่านี้ไม่จำเป็นต้องเปลี่ยนแปลงโค้ดเพิ่มเติมเพื่อติดตั้งใช้งาน Back Stack หลายรายการ และเป็นวิธีที่แนะนำในการรองรับแบ็กสแต็กจำนวนมากใน แอป

ใช้การสนับสนุนด้วยตนเองกับ API ที่เกี่ยวข้อง

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

ใน XML การนำทาง องค์ประกอบ <action> ในกราฟการนำทางสามารถใช้ app:popUpToSaveState เพื่อบันทึกสถานะของปลายทางที่ แสดงการดำเนินการจาก app:popUpTo แล้ว และยังใช้app:restoreState เพื่อคืนค่าสถานะที่บันทึกไว้ก่อนหน้านี้สำหรับปลายทางที่กำหนดไว้ใน app:destination

คุณใช้แอตทริบิวต์เหล่านี้เพื่อรองรับแบ็กสแต็กได้หลายรายการ เมื่อการนำทาง การดำเนินการต้องย้ายผู้ใช้จากกองหลังหนึ่งไปยังอีกกลุ่มหนึ่ง ให้ตั้งค่าทั้ง app:popUpToSaveState และ app:restoreState เป็น true ใน องค์ประกอบ <action> ด้วยวิธีนี้ การทำงานจะบันทึกสถานะของตำแหน่งย้อนกลับในปัจจุบัน ซ้อนกันขณะที่คืนค่าสถานะที่บันทึกไว้ก่อนหน้านี้ของปลายทางด้วย ซ้อนกัน หากมี

ตัวอย่างต่อไปนี้แสดงการดำเนินการที่ใช้ทั้ง 2 แอตทริบิวต์นี้

<action
  android:id=”@+id/swap_stack”
  app:destination=”@id/second_stack”
  app:restoreState=”true”
  app:popUpTo=”@id/first_stack_start_destination”
  app:popUpToSaveState=”true” />

ชั้นเรียน NavOptions ช่วยให้คุณส่งตัวเลือกการนำทางพิเศษเพื่อบันทึกและคืนค่าสแต็กย้อนกลับได้ เมื่อคุณนำทางโดยใช้ NavController ซึ่งจะเป็นเช่นนี้ไม่ว่าคุณจะสร้าง อินสแตนซ์ของ NavOptions ที่ใช้ Kotlin DSL หรือการใช้ NavOptions.Builder:

Kotlin

// Use the navigate() method that takes a navOptions DSL Builder
navController.navigate(selectedBottomNavRoute) {
  launchSingleTop = true
  restoreState = true
  popUpTo(navController.graph.findStartDestination().id) {
    saveState = true
  }
}

Java

NavOptions navOptions = new NavOptions.Builder()
  .setLaunchSingleTop(true)
  .setRestoreState(true)
  .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
    false, // inclusive
    true) // saveState
  .build();
navController.navigate(selectedBottomNavId, null, navOptions);

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกการนำทางผ่าน โปรดดูใช้ NavOptions แบบเป็นโปรแกรม

แหล่งข้อมูลเพิ่มเติม

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับสแต็กแบ็กสแต็กหลายรายการด้วยคอมโพเนนต์การนำทาง โปรดดูแหล่งข้อมูลเพิ่มเติมต่อไปนี้

บล็อกโพสต์

ตัวอย่าง