navigation3

  
Navigation 3 เป็นไลบรารีการนำทางใหม่ที่ออกแบบมาให้ทำงานร่วมกับ Compose
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
1 กรกฎาคม 2026 1.1.4 - - 1.2.0-alpha05

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Navigation3 คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ แอปหรือโมดูล

Groovy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.2.0-alpha05"
    implementation "androidx.navigation3:navigation3-ui:1.2.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.2.0-alpha05")
    implementation("androidx.navigation3:navigation3-ui:1.2.0-alpha05")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

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

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

ไม่มีบันทึกประจำรุ่นสำหรับอาร์ติแฟกต์นี้

เวอร์ชัน 1.2.0-alpha05

1 กรกฎาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.2.0-alpha05 เวอร์ชัน 1.2.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

API ใหม่

  • เพิ่ม API rememberResultEventBus ซึ่งจะแสดงผล ResultEventBus ที่ส่งไปยัง rememberResultEventBusNavEntryDecorator ได้ ซึ่งจะช่วยให้คุณชักResultEventBusขึ้นนอกResultEventBusNavEntryDecoratorได้ (Ia655b, b/516995400)

DeepLinkRequest - เพิ่มตัวสร้างที่เข้ากันได้กับ KMP 2 ตัว ได้แก่ ตัวสร้างที่รับ DeepLinkUri และตัวสร้างที่รับ URI สตริงดิบ (I3c088, b/513200887, b/522194187) - (Android เท่านั้น) เพิ่มตัวสร้างที่รับ Intent (Ia0498, b/513200887, b/522194187) - ตัวสร้างทั้งหมดมีฟิลด์ extras เพิ่มเติมสำหรับ Map<String, Any> เพื่อแนบข้อมูลคำขอเพิ่มเติม (If81d5, b/513200887) - เพิ่ม requestExtras dsl ใหม่เป็นวิธีที่ปลอดภัยในการสร้างแผนที่ของส่วนเสริม DSL มีฟังก์ชัน put สำหรับจัดเก็บคู่ของ RequestExtrasKey กับ Any Map<String, Any>.get(key) ฟังก์ชันส่วนขยายสามารถใช้เพื่ออ่านจากแผนที่ด้วย RequestExtrasKey(I5091c, b/513200887) - (Android เท่านั้น) เพิ่มฟังก์ชัน ActionExtrasKey และ actionExtra เพื่อสร้างแผนที่ส่วนขยายด้วย ActionExtrasKey (Id0c90, [b/513200887] - เพิ่มฟังก์ชัน MimeTypeExtrasKey และ mimeTypeExtra เพื่อสร้างแผนที่พิเศษด้วย MimeTypeExtrasKey (I85131, b/513200887)

DeepLinkMatcher - เพิ่มฟังก์ชัน DeepLinkMatcher.mimeTypeFilter และ DeepLinkMatcher.actionFilter เพื่อสร้าง DeepLinkMatcher.Filters ที่กรอง DeepLinkRequest ตาม mimeType หรือ action (Android เท่านั้น) ตัวกรองทั้ง 2 รายการจะตรงกันตามความเท่ากันของสตริงและไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (Ie7e67, b/513191950)

การเปลี่ยนแปลง API

DeepLinkRequest - Remove fromAction factory function. หากต้องการสร้างคำขอที่เชื่อมโยงกับการดำเนินการ ให้ใช้ฟิลด์ DeepLinkRequest.extras ใหม่ (Id0c90, b/513200887) - นำfromMimeTypeฟังก์ชันโรงงานออก หากต้องการสร้างคำขอที่เชื่อมโยงกับ mimeType ให้ใช้ฟิลด์ DeepLinkRequest.extras ใหม่ (I85131, b/513200887) - (Android เท่านั้น) นำฟังก์ชัน fromIntent ของโรงงานออกแล้ว แทนที่ด้วยตัวสร้างใหม่ที่ใช้ Intent และแผนที่ส่วนเพิ่มเติม (Ia0498, b/513200887, b/522194187) - นำฟังก์ชันจากโรงงาน fromUri และ fromUriString ออก แทนที่ด้วยตัวสร้างใหม่ที่รับ DeepLinkUri หรือ URI สตริงดิบ (Id5b6f, b/522194187) - DeepLinkMatcher, DeepLinkMatcher.MatchResult และคลาสย่อยของคลาสเหล่านี้จะใช้ T แบบโคแวเรียนต์ (out T) เพื่อให้คีย์แบบลำดับชั้นไม่จำเป็นต้องมีการแคสต์ประเภทเมื่อใช้กับ Matcher (I1e453, b/525094876) - ตอนนี้พารามิเตอร์ของเครื่องมือสร้าง UriMatchResult สำหรับแผนที่อาร์กิวเมนต์จะตั้งค่าเริ่มต้นเป็นแผนที่ว่าง (I3acdd) - ตอนนี้คลาสDeepLinkMatcher.Filter abstract เป็นอินเทอร์เฟซที่ใช้งานได้แล้ว เราได้นำช่องเครื่องมือสร้าง filter ออกแล้ว และควรส่งผ่านในคลาสย่อยโดยตรงแทน (I9eb7d, b/522194187)

การแก้ไขข้อบกพร่อง - แก้ไขรายการที่ป๊อปอัปหายไปทันทีเมื่อป๊อปอัปไปยังรายการที่มีข้อมูลเมตาที่ซ้อนกันซึ่งมีค่า Lambda (Idb872, b/520494430) - แก้ไข UriDeepLinkMatcher เพื่อให้แสดงผล UriMatchResult ที่เป็นค่าว่างแทนที่จะแสดง MissingFieldException เมื่อไม่มีอาร์กิวเมนต์ที่จำเป็นในระหว่างการจับคู่ (I5322f, b/524663005) - UriDeeplinkMatcher ที่มี URI ที่มีรูปแบบ https จะจับคู่ได้เฉพาะกับคำขอที่มีรูปแบบ https ด้วยเท่านั้น (Ibfe22, b/522304329) - แก้ไข UriDeepLinkMatcher เพื่อระบุรูปแบบ http อย่างถูกต้องว่าเป็นการจับคู่เชิงบวกกับ https เมื่อจับคู่ DeepLinkRequest กับ UriDeepLinkMatcher (I3a62b, b/518804264) - ตอนนี้ตัวเปรียบเทียบ DeepLinkMatcher.MatchResult จะแสดงผล 0 โดยค่าเริ่มต้นเมื่อผลลัพธ์ 2 รายการเท่ากัน (I48ddb, b/518841353) - UriDeepLinkMatcher จะแสดงผลเป็นค่าว่าง UriMatchResult แทนที่จะส่งข้อยกเว้นเมื่อคำขอการจับคู่ล้มเหลวเนื่องจากไม่มีอาร์กิวเมนต์ที่จำเป็น (I669a7, b/470282247, b/512923412)

เวอร์ชัน 1.2.0-alpha04

3 มิถุนายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.2.0-alpha04 เวอร์ชัน 1.2.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาภาพเคลื่อนไหวของเลเยอร์ซ้อนที่เลเยอร์ซ้อน เช่น ModalBottomSheet จะเคลื่อนไหวซ้ำโดยไม่คาดคิดเมื่อเลเยอร์ที่อยู่เหนือเลเยอร์นั้นปรากฏขึ้น (Ia2b9e, b/502624496)

เวอร์ชัน 1.2.0-alpha03

19 พฤษภาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.2.0-alpha03 เวอร์ชัน 1.2.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

ตอนนี้การนำทาง 3 รองรับ Deep Link ที่มี DeepLinkRequest และ DeepLinkMatcher แล้ว

  • DeepLinkRequest Deep Link ที่ขอซึ่งมี DeepLinkUri และ mimeType หรือการดำเนินการที่ไม่บังคับ(Android เท่านั้น) นอกจากคลาสใหม่แล้ว ยังมีฟังก์ชันเสริมสำหรับสร้างอินสแตนซ์ด้วย uri, mimeType หรือ action แพลตฟอร์ม Android ยังมีตัวช่วยในการสร้างคำขอจาก Intent ด้วย (Iaaac9, b/470282247)

    val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home")
    val uriAndMimeRequest = DeepLinkRequest.fromUriString(
      "https://sampledeeplink.com/user/profile?id=123",
      "image/png"
    )
    
  • DeepLinkMatcher แสดง Deep Link ที่จับคู่กับ DeepLinkRequest ได้ อินสแตนซ์ของ Matcher แต่ละรายการจะเชื่อมโยงกับคีย์การนำทางที่รองรับ Deep Link นี้ คีย์การนำทางสามารถเชื่อมโยงกับตัวจับคู่ได้หลายตัว การเรียกใช้ DeepLinkMatcher.match จะแสดง MatchResult ที่มีคีย์การนำทางที่เชื่อมโยงหากการจับคู่สำเร็จ DeepLinkMatcherการติดตั้งใช้งานUriDeepLinkMatcherเริ่มต้นมี 2 แบบ ได้แก่ การจับคู่ Deep Link ตาม URI และStaticKeyDeepLinkMatcherการจับคู่ Deep Link ที่มีเฉพาะ DeepLinkMatcher.Filter ที่ตรงกันตาม Boolean (I3798e, b/470282247)

  • UriDeepLinkMatcher การติดตั้งใช้งาน DeepLinkMatcher ที่มีข้อจำกัดซึ่งจัดการ Deep Link โดยการจับคู่ DeepLinkUri กับคีย์การนำทางที่ทำให้เป็น Serializable ได้ โดยรองรับอาร์กิวเมนต์ Deep Link ของประเภท Primitive หรือคอลเล็กชันของ Primitive เช่น รายการ อาร์เรย์ และชุด (I1520b, b/470282247)

    @Serializable
    data class UserKey(val id: Int): NavKey
    
    // declare a deep link supported by UserKey
    val userMatcher = UriDeepLinkMatcher(
      uriPattern = "www.sampledeeplink.com/user?userId={id}",
      serializer = serializer<UserKey>()
    )
    
    // handle a requested deep link with fallback key
    val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKey
    
  • เพิ่ม DeepLinkUri ซึ่งเป็นเวอร์ชัน Kotlin Multiplatform ของ android.net.Uri (Id4725, b/470282247)

การเปลี่ยนแปลง API

  • อัปเดตเป็น compileSdk 37 เพื่อให้ตรงกับ compileSdk ของ Compose

การแก้ไขข้อบกพร่อง

  • แก้ไขAnimatedBottomSheetSampleของ IllegalArgumentException เมื่อแสดงภาพซ้อนหลายรายการ ตอนนี้ตัวอย่าง SceneStrategy จะคำนวณ OverlayScene ที่ไม่ใช่รายการสุดท้ายได้อย่างถูกต้อง และแสดงไว้ใต้ฉากซ้อนทับทั้งหมด (If2281, b/506733412)
  • อัปเดตNavigationEventการอ้างอิงเป็น 1.1.1 ซึ่งจะนำ NavigationEventHandler ที่ไม่มีการดำเนินการออกเมื่ออยู่ในโหมดการตรวจสอบเพื่อเปิดใช้การย้อนกลับแบบคาดการณ์ในตัวอย่าง Android Studio (I487fd)

เวอร์ชัน 1.2.0-alpha02

22 เมษายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.2.0-alpha02 เวอร์ชัน 1.2.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ onBack เป็น onBackCompleted และเพิ่ม onBackCancelled ไปยัง NavigationBackHandler เพื่อรองรับการจัดการท่าทางสัมผัสย้อนกลับที่ยกเลิก (I92741)
  • เพิ่ม NavigationBackHandler เพื่อลดความซับซ้อนในการจัดการท่าทางสัมผัสย้อนกลับ และฟีเจอร์ย้อนกลับที่คาดการณ์ได้เมื่อใช้ SceneState ซึ่งช่วยให้นักพัฒนาแอปสร้างคอมโพเนนต์ UI ที่กำหนดเองซึ่งรองรับการนำทางย้อนกลับมาตรฐานและท่าทางสัมผัสแบบคาดการณ์ได้ง่ายขึ้นโดยไม่ต้องคำนวณส่วนต่างของ Back Stack ด้วยตนเอง (I6a055)
  • เพิ่ม rememberNavigationEventState เพื่อให้การเชื่อมต่อ SceneStateง่ายขึ้นด้วยการจัดการการย้อนกลับที่คาดการณ์ได้ (Iae49c)

ฟีเจอร์ใหม่

  • เพิ่ม ResultEventBus API เพื่ออนุญาตให้ส่งผลลัพธ์ระหว่าง NavEntry ด้วย LocalResultEventBus ที่ได้รับจาก ResultEventBusNavEntryDecorator ใหม่ คุณสามารถประเมินผลลัพธ์ที่ส่งผ่านเป็นสถานะที่มี ResultEventBus#conflateAsState หรือเป็นโฟลว์ของผลลัพธ์ที่มี ResultEffect

เวอร์ชัน 1.2.0-alpha01

8 เมษายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.2.0-alpha01 เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • การเข้าถึง LocalNavAnimatedContentScope จาก OverlayScene จะไม่ทำให้เกิด IllegalStateException อีกต่อไป เนื่องจากตอนนี้ OverlayScenes มี LocalAnimatedContentScope ที่ไม่มีการดำเนินการ (I2f00c, b/486067688)

เวอร์ชัน 1.1.4

1 กรกฎาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.4 เวอร์ชัน 1.1.4 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขรายการที่ป๊อปอัปหายไปทันทีเมื่อป๊อปอัปไปยังรายการที่มีข้อมูลเมตาที่ซ้อนกันซึ่งมีค่า Lambda (Idb872, b/520494430)

เวอร์ชัน 1.1.3

17 มิถุนายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.3 เวอร์ชัน 1.1.3 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาภาพเคลื่อนไหวของเลเยอร์ซ้อนที่เลเยอร์ซ้อน เช่น ModalBottomSheet จะเคลื่อนไหวซ้ำโดยไม่คาดคิดเมื่อเลเยอร์ที่อยู่เหนือเลเยอร์นั้นปรากฏขึ้น (Ia2b9e, b/502624496)

  • อัปเดตNavigationEventการอ้างอิงเป็น 1.1.2 ซึ่งนำ NavigationEventHandler ที่ไม่มีการดำเนินการออกเมื่ออยู่ในโหมดการตรวจสอบเพื่อเปิดใช้การย้อนกลับแบบคาดการณ์ใน Android Studio Preview

เวอร์ชัน 1.1.2

19 พฤษภาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.2 เวอร์ชัน 1.1.2 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • อัปเดตNavigationEventการอ้างอิงเป็น 1.1.1 ซึ่งนำ NavigationEventHandler ที่ไม่มีการดำเนินการออกเมื่ออยู่ในโหมดการตรวจสอบเพื่อเปิดใช้การย้อนกลับแบบคาดการณ์ใน Android Studio Previews

เวอร์ชัน 1.1.1

22 เมษายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.1 เวอร์ชัน 1.1.1 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • การเข้าถึง LocalNavAnimatedContentScope จาก OverlayScene จะไม่ทำให้เกิด IllegalStateException อีกต่อไป เนื่องจากตอนนี้ OverlayScenes มี LocalAnimatedContentScope ที่ไม่มีการดำเนินการ (I2f00c, b/486067688)

เวอร์ชัน 1.1.0

8 เมษายน 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0 เวอร์ชัน 1.1.0 มีการคอมมิตเหล่านี้

ตอนนี้ 1.1.0 เสถียรแล้ว

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0

องค์ประกอบที่แชร์ระหว่างฉาก - ตอนนี้ Navigation3 รองรับการถือว่าฉากเป็นออบเจ็กต์องค์ประกอบที่แชร์แล้ว ซึ่งหมายความว่าเมื่อฉากเปลี่ยนไป คุณจะมั่นใจได้ว่าฉากจะเปลี่ยนผ่านอย่างราบรื่น คุณเปิดใช้ได้โดยส่ง SharedTransitionScope ไปยัง NavDisplay หรือ rememberSceneState

SceneDecoratorStrategy - การเปิดตัว SceneDecoratorStrategy เพื่อรองรับ Use Case เช่น การตกแต่งฉากด้วยคอมโพเนนต์ UI ทั่วไปหรือการแชร์สถานะในฉากต่างๆ

NavMetadata DSL - ตอนนี้ Navigation3 มี DSL ข้อมูลเมตาที่ปลอดภัยสำหรับประเภทใหม่แล้ว DSL ใช้MetadataKeyอินเทอร์เฟซใหม่ที่ช่วยให้กำหนดประเภทคีย์และค่าที่ต้องการระบุในแผนที่ข้อมูลเมตาได้ นอกจากนี้ยังเพิ่ม NavMetadataKeys ใหม่สำหรับทรานซิชัน NavDisplay เพื่อให้ใช้กับ DSL ข้อมูลเมตาใหม่เพื่อเพิ่มทรานซิชันไปยัง NavDisplay ได้

ภาพเคลื่อนไหวของ OverlayScene - OverlayScene อินเทอร์เฟซมี onRemoved การเรียกกลับแบบระงับใหม่ การเรียกกลับนี้จะเรียกใช้หลังจากนำคีย์ที่เชื่อมโยงกับฉากออกจาก Backstack แต่ก่อนที่จะออกจาก Composition ซึ่งจะช่วยให้ภาพเคลื่อนไหวขาออกที่เรียกใช้ภายใน onRemovedทํางานเสร็จก่อนที่จะนําฉากซ้อนทับออกจากองค์ประกอบ

การเปลี่ยนแปลงอื่นๆ - ตอนนี้ NavDisplay และ rememberSceneState จะใช้ List<SceneStrategy> แทนพารามิเตอร์ SceneStrategy เดียวก่อนหน้านี้ซึ่งเชื่อมโยงด้วยคำต่อท้าย then - ตอนนี้คุณเพิ่มข้อมูลเมตาแบบไดนามิกได้โดยพิจารณาคีย์รายการผ่าน EntryProvider DSL

เวอร์ชัน 1.1.0-rc01

25 มีนาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-rc01 เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • NavDisplay ตอนนี้จะช่วยให้มั่นใจได้ว่ารายการที่แสดงใต้ภาพซ้อนจะมีLifecycleไม่เกิน STARTED ซึ่งจะช่วยให้ API เช่น dropUnlessResumed ทำงานต่อไปได้เมื่อใช้กล่องโต้ตอบ (If209f, b/483966071)
  • แก้ไขปัญหาใน NavDisplay ที่การไปยังมาในหน้าจอเดียวกันและการขัดจังหวะภาพเคลื่อนไหวระหว่าง 2 หน้าจออาจทำให้ลำดับ Z ของหน้าจอไม่ถูกต้อง (I4d491, b/459419800)

เวอร์ชัน 1.1.0-beta01

11 มีนาคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-beta01 เวอร์ชัน 1.1.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.1.0-alpha05

25 กุมภาพันธ์ 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-alpha05 เวอร์ชัน 1.1.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ NavDisplay และ rememberSceneState จะใช้ List<SceneStrategy> แทนพารามิเตอร์ SceneStrategy เดียวก่อนหน้านี้ซึ่งเชื่อมโยงด้วยคำนำหน้า then ซึ่งจะสอดคล้องกับList<SceneDecoratorStrategy<T>>ที่ API ทั้ง 2 รายการนี้ใช้อยู่แล้วมากขึ้น เราได้เลิกใช้งาน API ก่อนหน้าแล้ว (I78b2c, b/482108465)
  • เพิ่มตัวดำเนินการ #contains ของข้อมูลเมตาเพื่อตรวจสอบว่าแผนที่ข้อมูลเมตามี NavMetadataKey ที่ระบุหรือไม่ (Ic30db, b/485311895)
  • เพิ่ม NavMetadataKey DialogKey สำหรับ DialogSceneStrategy เพื่อใช้กับ Metadata DSL (Ic7a26, b/483388817)

เวอร์ชัน 1.1.0-alpha04

11 กุมภาพันธ์ 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-alpha04 เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ Navigation3 มี DSL ข้อมูลเมตาที่ปลอดภัยสำหรับประเภทใหม่แล้ว DSL ใช้MetadataKeyอินเทอร์เฟซใหม่ที่ช่วยให้กำหนดประเภทคีย์และค่าที่ต้องการระบุในแผนที่ข้อมูลเมตาได้ นอกจากนี้ เรายังเพิ่ม NavMetadataKey ใหม่สำหรับทรานซิชัน NavDisplay เพื่อให้ใช้กับ metadata DSL ใหม่เพื่อเพิ่มทรานซิชันไปยัง NavDisplay ได้ (Ic10ef, Ic049c,b/476213928)

การเปลี่ยนแปลง API

  • อินเทอร์เฟซ OverlayScene มีการเรียกกลับใหม่เมื่อonRemovedระงับ การเรียกกลับนี้จะเรียกใช้หลังจากนำคีย์ที่เชื่อมโยงกับฉากออกจาก Backstack แต่ก่อนที่จะออกจาก Composition ซึ่งจะช่วยให้ภาพเคลื่อนไหวขาออกที่เรียกใช้ภายใน onRemoved ทำงานจนเสร็จก่อนที่จะนำฉากซ้อนทับออกจากองค์ประกอบ (I29a72, b/440558061)
  • SceneStrategy ได้แยกฟังก์ชันการตกแต่งออกเป็น SceneDecoratorStrategy ใหม่ อินเทอร์เฟซใหม่นี้คือสิ่งที่ควรใช้ในการตกแต่งฉาก มี API ใหม่สำหรับ NavDisplay และ rememberSceneState เพื่ออนุญาตให้เพิ่ม SceneDecoratorStrategies (If9385, b/477669607, b/477670333)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อผิดพลาดที่การส่ง SharedTransitionLayout ไปยัง NavDisplay หรือ rememberSceneState และการใช้ OverlayScene จะทำให้เกิดข้อขัดข้องเนื่องจากการใช้ SharedTransitionLayout จะใช้ได้กับ NavEntries ที่แสดงเป็นส่วนหนึ่งของ AnimatedContent เท่านั้น และ OverlayScene จะแสดงในหน้าต่างของตัวเองแยกกัน (I1bb76, b/478664101)

การอัปเดตการขึ้นต่อกัน

  • ตั้งแต่ Navigation3 1.0.1: ตอนนี้ Navigation3 ต้องใช้ NavigationEvent 1.0.2 การแก้ไขนี้จะช่วยแก้IllegalStateExceptionที่เกิดจากการใช้NavDisplayระหว่างAndroidStudioตัวอย่างเพลง (Id7212, b/477149762)

เวอร์ชัน 1.1.0-alpha03

28 มกราคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-alpha03 เวอร์ชัน 1.1.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้คุณเพิ่มข้อมูลเมตาแบบไดนามิกได้โดยพิจารณาคีย์รายการผ่าน EntryProvider DSL (I942fb, b/474416976)

เวอร์ชัน 1.1.0-alpha02

14 มกราคม 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-alpha02 เวอร์ชัน 1.1.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ SceneStrategy รองรับการซ้อนฉากผ่านฟังก์ชัน calculatedScene(Scene) ใหม่แล้ว ซึ่งหมายความว่าสามารถปรับแต่ง SceneStrategy เพื่อให้ฟังก์ชันการทำงานเพิ่มเติมแก่ฉากอื่นๆ ได้ (I5df7c,b/440333896)

เวอร์ชัน 1.1.0-alpha01

3 ธันวาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.1.0-alpha01 เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ Navigation3 รองรับการถือว่าฉากเป็นออบเจ็กต์องค์ประกอบที่แชร์แล้ว ซึ่งหมายความว่าเมื่อฉากเปลี่ยนไป คุณจะมั่นใจได้ว่าฉากจะเปลี่ยนผ่านอย่างราบรื่น คุณเปิดใช้ได้โดยส่ง SharedTransitionScope ไปยัง NavDisplay หรือ rememberSceneState (I15868)

รุ่น 1.0

เวอร์ชัน 1.0.1

11 กุมภาพันธ์ 2026

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.1 เวอร์ชัน 1.0.1 มีการคอมมิตเหล่านี้

การอัปเดตการขึ้นต่อกัน

  • Navigation3 ตอนนี้ขึ้นอยู่กับ NavigationEvent 1.0.2 การแก้ไขนี้จะช่วยแก้IllegalStateExceptionที่เกิดจากการใช้NavDisplayระหว่างAndroidStudioตัวอย่างเพลง (Id7212, b/477149762)

เวอร์ชัน 1.0.0

19 พฤศจิกายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0 เวอร์ชัน 1.0.0 มีการคอมมิตเหล่านี้

ขอแนะนำ Navigation3

เวอร์ชัน 1.0.0-rc01

5 พฤศจิกายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-rc01 เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • NavDisplay ตอนนี้จะตั้งค่า LocalLifecycleOwner ที่ระดับ Scene ซึ่งช่วยให้ผู้เขียนฉากระบุได้ว่าการเปลี่ยนฉากทั้งหมดเสร็จสิ้นแล้วหรือไม่โดยตรวจสอบว่า Lifecycle.State เป็น RESUMED ลักษณะการทำงานของ LocalLifecycleOwner ที่ระดับ NavEntry จะไม่เปลี่ยนแปลง โดยจะยังคงจำกัดไว้ที่ STARTED หากมีการเปลี่ยนฉาก และจะจำกัดไว้ที่ CREATED เพิ่มเติมหาก NavEntry นั้นถูกนำออกจาก Back Stack และกำลังอยู่ในกระบวนการเคลื่อนไหวออก (I03113, b/454045829)

เวอร์ชัน 1.0.0-beta01

22 ตุลาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-beta01 เวอร์ชัน 1.0.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • SceneStrategyScope ตอนนี้มีเฉพาะตัวสร้างสาธารณะที่ไม่มีอาร์กิวเมนต์ ซึ่งเหมาะสำหรับการทดสอบ SceneStrategy และ Scene ที่ส่งคืนแยกกัน สำหรับกรณีการใช้งานที่ซับซ้อนมากขึ้น โปรดใช้ rememberSceneState() (I8440c, b/451679047)

การแก้ไขข้อบกพร่อง

  • แก้ไขการวนซ้ำไม่สิ้นสุดเมื่อเชื่อมโยง SceneStrategy กับ then (Iba3f0, b/450323470)
  • แก้ไขปัญหาหน้าจอกะพริบเมื่อสลับ backStack ที่ส่งไปยัง NavDisplay และใช้ภาพเคลื่อนไหว (Ief7b5, b/450967248)

เวอร์ชัน 1.0.0-alpha11

8 ตุลาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha11 เวอร์ชัน 1.0.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • วิธี calculateScene ใน SceneStrategy ไม่@Composableอีกต่อไป แต่ให้พิจารณาย้ายงานนี้ไปที่การสร้างSceneStrategyเมธอด (เช่น ในrememberMySceneStrategy()เมธอด) ซึ่งจะช่วยให้คุณกำหนดอายุของค่า rememberSaveable หรือคีย์rememberได้อย่างเต็มที่จากค่าที่ถูกต้อง (If1733, b/448709506)
  • เราได้ย้ายพารามิเตอร์ onBack สำหรับ SceneStrategy.calculateScene ไปยังขอบเขตตัวรับใหม่ของ SceneStrategyScope เพื่อให้เห็นชัดเจนยิ่งขึ้นว่าพารามิเตอร์นี้เป็นพารามิเตอร์ที่ไม่บังคับ และเพื่อเป็นจุดขยายสำหรับฟีเจอร์ Navigation3 ในอนาคต (I3aea3, b/448460407)
  • onBack แลมบ์ดาที่ส่งไปยัง NavDisplay และไปยัง SceneStrategy จะไม่ระบุพารามิเตอร์ count: Int เพื่อระบุเวลาที่ควรแสดงรายการหลายรายการอีกต่อไป แต่ตอนนี้ระบบจะเรียกใช้ () -> Unit Lambda หลายครั้งติดต่อกันในกรณีที่พบได้ยากซึ่งคำขอ Scene ของคุณแสดงรายการหลายรายการ (Idedb5, b/446989346)
  • นำคลาส NavEntryWrapper ออกและแทนที่ฟังก์ชันการทำงานด้วยคลาส NavEntry สุดท้ายที่มีตัวสร้างรองใหม่ซึ่งใช้ NavEntry ที่มีเนื้อหาใหม่ ซึ่งจะช่วยให้เราสนับสนุนการห่อหุ้มรายการด้วยเนื้อหาใหม่ต่อไปได้ (I7da2a, b/444447130)
  • เราได้นำฟังก์ชัน navEntryDecorator ซึ่งสร้างและแสดงผล NavEntryDecorator ออกแล้ว และแทนที่ด้วยคลาส NavEntryDecorator ซึ่งตอนนี้ได้เปิดให้ใช้งานแบบสาธารณะและเปิดให้สร้างคลาสย่อยได้แล้ว (If81f8, b/444447434, b/447381176)
  • เราได้เปลี่ยนชื่อ SavedStateNavEntryDecorator เป็น SaveableStateHolderNavEntryDecorator เนื่องจากมีการตกแต่งรายการด้วย SaveableStateHolder นอกจากนี้ เรายังได้ปรับโครงสร้างตัวตกแต่งจากฟังก์ชันเป็นคลาส เนื่องจากตัวตกแต่งเป็นโรงงานสำหรับ NavEntryDecorator ในเชิงฟังก์ชัน (Ie6013, b/447381176)
  • การแสดงผลที่กำหนดเองซึ่งใช้ SceneState เป็นทางเลือกแทนการใช้ NavDisplay ไม่จำเป็นต้องใช้การเรียบเรียง LocalEntriesToRenderInCurrentScene ในเครื่องอีกต่อไป ซึ่งตอนนี้เป็นแบบภายในแล้ว (Ic40ef, b/414668196)
  • นำ SceneSetupNavEntryDecorator และ rememberSceneSetupNavEntryDecorator() ออกจาก API สาธารณะ ตอนนี้ฟังก์ชันนี้จะรวมอยู่โดยค่าเริ่มต้นโดยที่คุณไม่ต้องรวมด้วยตนเอง (Ieae42, b/444479133)
  • ตอนนี้ NavEntry, DialogScene, SinglePaneScene และ SceneState ทั้งหมดใช้ equals แล้ว (I96121)
  • อินเทอร์เฟซฉากมีฟิลด์ข้อมูลเมตาใหม่เพื่อแนบข้อมูลเมตาเฉพาะฉากสำหรับ NavDisplay ซึ่งช่วยให้ฉากลบล้างข้อมูลเมตาใน NavDisplay ได้ เช่น ด้วยการเปลี่ยนฉาก (I1fd96, b/443955625)
  • ลดความซับซ้อนของลายเซ็น rememberNavBackStack โดยนำพารามิเตอร์ประเภททั่วไปที่ซ้ำซ้อนออก ตอนนี้ฟังก์ชันนี้ยอมรับ vararg elements: NavKey แล้ว (I03e45)
  • ตอนนี้ภาพเคลื่อนไหวเริ่มต้นสำหรับ NavDisplay เป็นส่วนหนึ่งของ API ทั่วไปแล้ว ซึ่งช่วยให้เรียกใช้จากทุกแพลตฟอร์มได้ (I71af9, b/447147159)
  • เปลี่ยนชื่อ EntryProviderBuilder เป็น EntryProviderScope เพื่อให้แสดงอย่างถูกต้องว่าคลาสเป็น Kotlin DSL ที่ให้ขอบเขตในการสร้าง NavEntries (Ia7465)

การแก้ไขข้อบกพร่อง

  • rememberNavBackStack() บังคับใช้การซีเรียลไลซ์แบบ Polymorphic สำหรับ NavKey และกำหนดให้ใช้ SavedStateConfiguration ที่กำหนดเองซึ่งได้รับการกำหนดค่าเพื่อให้แน่ใจว่ามีการคืนค่าสถานะอย่างถูกต้อง เราได้อัปเดต KDoc เพื่อให้สอดคล้องกับข้อกำหนดที่ว่าต้องลงทะเบียนประเภท NavKey ย่อยทั้งหมดใน SerializersModule ที่ระบุ (I6de37,I782f2, b/446664383)

เวอร์ชัน 1.0.0-alpha10

24 กันยายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha10 เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มโอเวอร์โหลด NavDisplay ใหม่ที่ใช้รายการของ NavEntry<T> ซึ่งได้รับการตกแต่งโดย rememberDecoratedNavEntries (I4025b, b/441940314)
  • ย้าย DialogScene ไปยังแพ็กเกจใหม่แล้ว (Ia5840)
  • นำ API สาธารณะออก DecorateNavEntry แต่ให้ใช้ rememberDecoratedNavEntries เพื่อรวม NavEntry ไว้กับรายการตกแต่งแทน (Id8c09)
  • ตอนนี้ UI ของ Navigation3 มีพร็อพเพอร์ตี้ transitionSpec ใหม่เป็นค่าเริ่มต้นแล้ว (Ibcabd)
  • เพิ่มออบเจ็กต์ SceneState ใหม่เพื่อช่วยจัดการฉาก นอกจากนี้ ยังมีโอเวอร์โหลด NavDisplay ใหม่ที่ใช้ SceneState และ NavigationEventState ด้วย (Idfb46, b/444479133)
  • NavDisplay ตอนนี้คุณสามารถปรับแต่งทรานซิชันตามสิ่งที่Sceneคุณกำลังจะไปและจากมาได้โดยดูที่TransitioncurrentState และ targetState (I906cc, b/443872322)
  • ตอนนี้ NavigationEventInfo เป็น abstract class แล้ว ไม่ใช่ interface อัปเดตการติดตั้งใช้งานที่กำหนดเองทั้งหมดให้รับค่าจากคลาส (เช่น data class MyInfo : NavigationEventInfo()) (I1e59c, b/444734264)
  • navigationevent-compose API ตัวแฮนเดิลได้รับการอัปเดตแล้ว ตอนนี้ NavigationEventHandler และ NavigationBackHandler (และตัวแปร) รองรับการโอเวอร์โหลดใหม่ที่ยอมรับ NavigationEventStates ที่ยกขึ้น การโอเวอร์โหลดอย่างง่าย (ใช้ currentInfo) จะยังคงอยู่และใช้โมเดลสถานะใหม่นี้ภายใน (Ic3251, b/444734264)
  • เราได้ย้าย Scene API ทั้งหมดออกจาก navigation3-ui ไปยัง navigation3-runtime แล้ว ซึ่งหมายความว่าตอนนี้ฟีเจอร์ดังกล่าวพร้อมให้บริการในทุกแพลตฟอร์มที่ navigation3-runtime รองรับแล้ว (I431d0, b/444449993)
  • เพิ่มโอเวอร์โหลด rememberDecoratedNavEntries ใหม่ที่ใช้รายการ NavEntry เพื่อตกแต่ง รายการอินพุตอาจได้รับการตกแต่งด้วยเครื่องมือตกแต่งรายการอื่นๆ อยู่แล้ว (I5a034, b/444230270)
  • นำพารามิเตอร์ประเภทไวลด์การ์ด navigation3 (I02540) ออก
  • ปรับปรุงการจัดการ Generics สำหรับ entryProvider DSL หากที่ผ่านมาคุณนำเข้า androidx.navigation3.runtime.entry คุณก็ไม่ต้องดำเนินการดังกล่าวอีกต่อไป (I299fc)
  • จำกัดการโอเวอร์โหลด NavBackStackSerializer ที่อิงตามการสะท้อนไว้เฉพาะ Android การดำเนินการนี้จะป้องกันไม่ให้เกิดข้อผิดพลาดในการซีเรียลไลซ์รันไทม์โดยนัยในแพลตฟอร์มที่ไม่ใช่ Android โดยบังคับให้ใช้การโอเวอร์โหลด SavedStateConfiguration อย่างชัดเจนในโค้ดแบบหลายแพลตฟอร์ม (I73313, b/420443609)
  • เปลี่ยน NavigationEventswipeEdge เป็น @IntDef (Icee54, b/443950342)
  • จำกัดการซีเรียลไลซ์ NavBackStack เฉพาะ Android ซึ่งจะช่วยป้องกันไม่ให้เกิดข้อผิดพลาดขณะรันไทม์ในแพลตฟอร์มที่ไม่ใช่ Android หากต้องการบันทึกสถานะแบบหลายแพลตฟอร์ม ให้ใช้rememberNavBackStackโอเวอร์โหลดที่มี SavedStateConfiguration ที่ชัดเจน (I1e418, b/420443609)

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องระหว่างการย้อนกลับแบบคาดการณ์เมื่อ NavDisplay ที่ซ้อนกันมีรายการย่อยรายการเดียว (I2cdc0, b/441933162)

เวอร์ชัน 1.0.0-alpha09

10 กันยายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha09 เวอร์ชัน 1.0.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • DecoratedNavEntryProvider ถูกแทนที่ด้วย rememberDecoratedNavEntries ซึ่งสร้างและแสดงผล NavEntry ที่ตกแต่งด้วยรายการ Decorator ที่ระบุ (I0fe1c, b/441328236)
  • ตอนนี้ NavBackStack เป็นแบบทั่วไปสำหรับประเภท NavKey แล้ว ซึ่งช่วยให้แอปและไลบรารีกำหนดประเภทคีย์ที่กำหนดเองสำหรับสแต็กย้อนกลับได้ แทนที่จะจำกัดไว้ที่ NavKey (I4d190,Iad2f4, b/420443609)
  • ตอนนี้ NavBackStack กลายเป็น @kotlinx.serialization.Serializable แล้ว ซึ่งช่วยให้คุณบันทึกและกู้คืนสถานะการนำทางเมื่อกระบวนการสิ้นสุดลงและการกำหนดค่ามีการเปลี่ยนแปลงได้โดยไม่ต้องมีโค้ดเพิ่มเติม (I2c3cf, b/420443609)
  • RememberNavBackStack ได้ย้ายไปที่ commonMain เพื่อให้มั่นใจว่าจะมีให้บริการในเป้าหมายแพลตฟอร์มทั้งหมด (Id69e7, b/420443609)

การแก้ไขข้อบกพร่อง

  • NavDisplay ตอนนี้จะย้ายNavEntryแต่ละรายการไปยังLifecycle.Stateที่ถูกต้องแล้ว (I30aac, b/440145700)
  • แก้ไขปัญหาที่ NavDisplay จะไม่สนใจ NavigationEventDispatcherOwner ที่ซ้อนกันซึ่งตั้งค่าผ่าน LocalNavigationEventDispatcherOwner ของไลบรารี NavigationEvent (I6224a)

การเปลี่ยนแปลงการขึ้นต่อกัน

เวอร์ชัน 1.0.0-alpha08

27 สิงหาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha08 เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มเป้าหมาย Kotlin MultiPlatform (KMP) ใหม่ลงในอาร์ติแฟกต์ Navigation3 Runtime Navigation3 Runtime ตอนนี้รองรับแพลตฟอร์มต่อไปนี้ทั้งหมดแล้ว ได้แก่ JVM (Android และเดสก์ท็อป), Native (Linux, iOS, watchOS, macOS, MinGW) และเว็บ (JavaScript, WasmJS) (I55078, b/424410398, b/419294028, b/419046226) หมายเหตุ: วิธีนี้ไม่ได้ระบุเป้าหมาย KMP สำหรับอาร์ติแฟกต์ Navigation3 UI ในแพลตฟอร์มอื่นๆ คุณจะต้องติดตั้งใช้งาน NavDisplay ที่กำหนดเองของคุณเอง หากต้องการให้เราสนับสนุนฟีเจอร์นี้ โปรดโหวตปัญหาของ Jetbrains ที่นี่และติดตามความคืบหน้าเพื่อรับการสนับสนุนเพิ่มเติม
  • ตอนนี้ออบเจ็กต์ NavDisplayInfo เป็นแบบสาธารณะแล้ว และสามารถใช้เพื่อดึงรายการที่มองเห็นได้จาก NavDisplay (Ibc91f)

การเปลี่ยนแปลง API

  • เพิ่ม NavBackStackSerializer ใหม่เพื่อใช้ร่วมกับ rememberNavBackStack ในการคืนค่าสถานะ rememberNavBackStack() ยังรับ SavedStateConfiguration ที่ใช้เพื่อระบุการกำหนดค่าของคุณเองได้ด้วย (I2f4d2, I4cd58, b/420443609)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การไปยังส่วนต่างๆ ทำให้เกิดเหตุการณ์วงจรที่ไม่ถูกต้อง (I8bf6d, b/425901162, b/434109022)

ปัญหาที่ทราบ

  • I8bf6d ได้แนะนำข้อบกพร่องที่ทำให้วงจรชีวิตอิงตามฉากแทนที่จะเป็นรายการแต่ละรายการ ซึ่งทำให้วงจรชีวิตใช้งานไม่ได้ในกรณีที่ key ที่ระบุให้กับ NavEntry ไม่ใช่ String หรือ NavEntry ไม่ได้ลบล้าง contentKey และตั้งค่าให้เท่ากับ key (โปรดทราบว่าการดำเนินการนี้จะบังคับให้บันทึกคีย์ลงใน Bundle ได้) เราได้แก้ไขปัญหานี้แล้วสำหรับการเปิดตัวครั้งถัดไป (b/440145700)

เวอร์ชัน 1.0.0-alpha07

13 สิงหาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha07 เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้

การอัปเดต MinSdk

การเปลี่ยนแปลง API

  • ตอนนี้ SavedStateNavEntryDecorator ใช้ SaveableStateRegistry ที่สร้างไว้ใน SaveableStateProvider เพื่อบันทึกและกู้คืนสถานะ (If8d9a)
  • ตอนนี้ predictivePopTransitionSpec จะมีขอบที่ปัดเป็นพารามิเตอร์ ซึ่งช่วยให้คุณปรับแต่งการเปลี่ยนตามขอบที่ผู้ใช้เริ่มท่าทางสัมผัสย้อนกลับแบบคาดการณ์ (I753a8)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ทำให้ระบบคำนวณฉากที่กำหนดเองซ้ำไม่สิ้นสุดเนื่องจากระบบจำฉากล่าสุดไม่ได้ (I7ba84, b/418153031)

การอัปเดตการขึ้นต่อกัน

เวอร์ชัน 1.0.0-alpha06

30 กรกฎาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha06 เวอร์ชัน 1.0.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

การอัปเดตการขึ้นต่อกัน

เวอร์ชัน 1.0.0-alpha05

2 กรกฎาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha05 เวอร์ชัน 1.0.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลงลักษณะการทำงาน

  • ตอนนี้สถานะของ NavEntry จะอิงตามรายการตกแต่งปัจจุบันที่ส่งไปยัง NavDisplay อย่างเคร่งครัด ซึ่งหมายความว่าควรสลับ Decorator ตาม Back Stack ในกรณีที่มี Back Stack หลายรายการเพื่อรักษาสถานะของ NavEntry ใน Back Stack ไม่เช่นนั้น ระบบจะล้างสถานะราวกับว่ามีการป๊อปรายการออก (แทนที่จะเป็นการสลับ) (I7a759, b/428033667)

เวอร์ชัน 1.0.0-alpha04

18 มิถุนายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha04 เวอร์ชัน 1.0.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • NavEntry.content เป็นแบบส่วนตัวแล้ว หากต้องการเรียกใช้NavEntryเนื้อหา ให้เรียกใช้ NavEntry.Content() API ใหม่ซึ่งไม่จำเป็นต้องใช้พารามิเตอร์ key ในการเรียกใช้ (Icd0fd, b/420991203)
  • ตอนนี้ NavEntry.key เป็นฟิลด์ส่วนตัวแล้ว NavEntry และสถานะที่เกี่ยวข้องควรระบุโดยฟิลด์ contentKey ใหม่ซึ่งสร้างจาก Lambda contentKeyFactory ใหม่ และค่าเริ่มต้นจะเป็นแฮชที่บันทึกได้ซึ่งสร้างจาก NavEntry.key (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)

การเปลี่ยนแปลงการขึ้นต่อกัน

  • ตอนนี้ Navigation3 ขึ้นอยู่กับอาร์ติแฟกต์ androidx.navigationevent.compose ใหม่แล้ว

เวอร์ชัน 1.0.0-alpha03

4 มิถุนายน 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha03 เวอร์ชัน 1.0.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • Navigation3 จะไม่ล้างสถานะของ Decorator สำหรับ backStacks ที่มีการสลับออกและแทนที่ด้วยอินสแตนซ์ backStack อื่นอีกต่อไป (I28a42, b/415076044)

เวอร์ชัน 1.0.0-alpha02

23 พฤษภาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha02 เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาเกี่ยวกับ SavedStateNavEntryDecorator ซึ่งทำให้เกิดการชนกันสำหรับคลาสข้อมูลต่างๆ ที่มีค่าพร็อพเพอร์ตี้เดียวกัน (b/418070648, Iff4775)
  • แก้ไขปัญหาคลาสที่ขาดหายไปซึ่งอาจทำให้เกิดข้อขัดข้องเมื่อเรียกใช้โดยไม่ได้ประกาศการอ้างอิงที่ชัดเจน (b/419049149, I4b4ed)

เวอร์ชัน 1.0.0-alpha01

20 พฤษภาคม 2025

ระบบจะถอนการอ้างสิทธิ์androidx.navigation3:navigation3-*:1.0.0-alpha01 เวอร์ชัน 1.0.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

Navigation3 เป็นไลบรารีการนำทางใหม่ที่สร้างขึ้นเพื่อจัดการการนำทางในแอป Jetpack Compose โดยเฉพาะ อาร์ติแฟกต์ androidx.navigation3.runtime เป็นส่วนประกอบพื้นฐาน ส่วนอาร์ติแฟกต์ androidx.navigation3.ui จะเป็นเลเยอร์ UI ผ่าน NavDisplay API นักพัฒนาแอปสามารถระบุสถานะของตนเองโดยตรงไปยังฟังก์ชันที่ประกอบกันได้ NavDisplay ซึ่งจะเปลี่ยนเนื้อหาตามการเปลี่ยนแปลงในสถานะของนักพัฒนาแอป

@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey

val backStack = rememberNavBackStack(Home)

NavDisplay(backStack, entryProvider = entryProvider {
  entry<Home> {
    Column {
      Text(Home)
      Button(onClick = { backStack.add(Chat) } ) {
        Text(Go to Chat)
      } 
    }
  }
  entry<Chat> { /* My Composable Content */ }
})

ดูข้อมูลเพิ่มเติมได้ที่คู่มือ Navigation3