ส่วนย่อย

แบ่งแอปออกเป็นหลายหน้าจออิสระที่โฮสต์ภายในกิจกรรม
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
12 กุมภาพันธ์ 2025 1.8.6 - - -

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

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

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

ดึงดูด

dependencies {
    def fragment_version = "1.8.3"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.8.3"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.8

เวอร์ชัน 1.8.6

12 กุมภาพันธ์ 2025

androidx.fragment:fragment-*:1.8.6 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.6 มีการคอมมิตเหล่านี้

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

  • ตอนนี้การลบล้าง setOnApplyWindowInsetsListener ของ FragmentContainerView ใช้ Listener แบบ Null ซึ่งตรงกับที่เฟรมเวิร์กอนุญาต (I575f0, b/282790626)

เวอร์ชัน 1.8.5

30 ตุลาคม 2024

androidx.fragment:fragment-*:1.8.5 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.5 มีการคอมมิตเหล่านี้

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

  • แก้ไข IllegalStateException ที่ทริกเกอร์โดย saveBackStack หลังจากมีการยกเลิกหรือขัดจังหวะท่าทางสัมผัสเพื่อย้อนกลับแบบคาดการณ์เท่านั้น (I3387d, b/342419080)

เวอร์ชัน 1.8.4

2 ตุลาคม 2024

androidx.fragment:fragment-*:1.8.4 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.4 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาการกดปุ่มย้อนกลับของระบบหรือใช้ท่าทางสัมผัสย้อนกลับอย่างรวดเร็วจะทำให้ Fragments ขัดข้องเมื่อใช้ Androidx Transitions (Ibc038, b/364804225)
  • แก้ไขปัญหาในรายการที่การขัดจังหวะท่าทางสัมผัสเพื่อกลับแบบคาดการณ์จะส่งตัวจัดการรายการไปยังสถานะที่ไม่ระบุและอาจแสดงรายการที่ไม่ถูกต้อง (If82e2, b/338624457)
  • แก้ไข UninitializedPropertyAccessException ใน AndroidFragment เมื่อเปลี่ยนคลาสที่อินสแตนซ์ AndroidFragment ของคุณใช้อยู่แบบไดนามิก (I12dea)

เวอร์ชัน 1.8.3

4 กันยายน 2024

androidx.fragment:fragment-*:1.8.3 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.3 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ FragmentManager จะพิจารณาการดำเนินการที่รอดำเนินการอย่างถูกต้องเมื่อจัดการท่าทางสัมผัส "กลับแบบคาดการณ์" ซึ่งจะช่วยให้มั่นใจว่าการย้อนกลับระบบจะไม่ทำให้เกิด IndexOutOfBoundsException อีก (I9ba32, b/342316801)
  • AndroidFragment ไม่ขัดข้องอีกต่อไปหากเพิ่มลงในองค์ประกอบขณะที่บันทึกสถานะของกิจกรรม/แฟรกเมนต์ที่มีอยู่แล้ว (I985e9, b/356643968)

เวอร์ชัน 1.8.2

24 กรกฎาคม 2024

androidx.fragment:fragment-*:1.8.2 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.2 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ AndroidFragment จะจัดการกรณีที่วาง Fraktment หลักไว้ในกองซ้อนย้อนกลับของ Fraktment อย่างเหมาะสม เพื่อหลีกเลี่ยงปัญหา "ไม่พบมุมมองสำหรับรหัส" เมื่อกลับไปที่ Fraktment นั้น (I94608)
  • ตอนนี้ เศษที่เพิ่มผ่านเมธอด FragmentTransaction.add ที่ใช้ ViewGroup จะรอ onContainerAvailable ก่อนดำเนินการต่อไปยัง onStart() ซึ่งจะส่งผลต่อผู้ใช้ API นั้น เช่น AndroidFragment ซึ่งตอนนี้จะต้องรอให้ AndroidFragment ป้อนองค์ประกอบอีกครั้งก่อนที่จะส่งผ่าน onStart() (I94608)

เวอร์ชัน 1.8.1

26 มิถุนายน 2024

androidx.fragment:fragment-*:1.8.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.1 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่ระบบจะDESTROYEDข้อมูลโค้ดที่ไม่มีคอนเทนเนอร์ทันทีเมื่อเริ่มท่าทางสัมผัสเพื่อย้อนกลับแบบคาดการณ์ ตอนนี้ระบบจะเก็บไว้ที่สถานะ CREATED จนกว่าท่าทางสัมผัสจะเสร็จสมบูรณ์ (If6b83, b/345244539)

เวอร์ชัน 1.8.0

12 มิถุนายน 2024

androidx.fragment:fragment-*:1.8.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0 มีการคอมมิตเหล่านี้

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

  • ตอนนี้อาร์ติแฟกต์ fragment-compose มี AndroidFragment Composable ที่อนุญาตให้เพิ่มข้อมูลโค้ดลงในลําดับชั้นของ Compose ผ่านชื่อคลาสของข้อมูลโค้ด โดยจะจัดการการบันทึกและการกู้คืนสถานะของ Fraktment โดยอัตโนมัติ วิธีการนี้ควรใช้แทนแนวทางที่แนะนำก่อนหน้านี้ในการใช้ AndroidViewBinding เพื่อขยาย Fragment
  • ตอนนี้การเรียกกลับ onBackStackChangeCancelled ในอินเทอร์เฟซ OnBackStackChangedListener ของ FragmentManager จะทํางานเป็นส่วนหนึ่งของการดำเนินการใน FragmentManager ซึ่งทำให้เวลาใกล้เคียงกับการเรียกกลับ onBackStackChangeCommitted มากขึ้น

เวอร์ชัน 1.8.0-rc01

29 พฤษภาคม 2024

androidx.fragment:fragment-*:1.8.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-rc01 มีการคอมมิตเหล่านี้

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

  • ตอนนี้การเรียกกลับ onBackStackChangeCancelled ในอินเทอร์เฟซ FragmentManagers OnBackStackChangedListener จะทํางานเป็นส่วนหนึ่งของการดําเนินการใน FragmentManager ซึ่งทําให้เวลาการเรียกกลับ onBackStackChangeCommitted ใกล้เคียงกันมากขึ้น (I5ebfb, b/332916112)

เวอร์ชัน 1.8.0-beta01

14 พฤษภาคม 2024

androidx.fragment:fragment-*:1.8.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-beta01 มีการคอมมิตเหล่านี้

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

  • จาก Fragment 1.7.1: ตอนนี้ระบบจะเรียกใช้การย้อนกลับแบบคาดการณ์เฉพาะสำหรับธุรกรรมที่แต่ละกลุ่มมี Animator หรือการเปลี่ยน Androidx ที่กรอได้เท่านั้น การอัปเดตนี้จะช่วยแก้ไขปัญหาที่การยกเลิกธุรกรรมที่กรอได้บางส่วนจะทำให้เกิดหน้าจอสีดํา (I43037, b/339169168)

เวอร์ชัน 1.8.0-alpha02

17 เมษายน 2024

androidx.fragment:fragment-*:1.8.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha02 มีการคอมมิตเหล่านี้

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

  • จากข้อมูลโค้ด 1.7.0-rc02: เพิ่มบันทึกเพื่อระบุสาเหตุที่การตั้งค่า sharedElement ที่ไม่มีทรานซิชันอื่นๆ จะใช้งานไม่ได้ (Iec48e)
  • จาก Fragment 1.7.0-rc02: แก้ไขข้อบกพร่องที่ระบบจะขัดข้องหากมีการเพิ่มองค์ประกอบที่แชร์ซึ่งไม่สามารถกรอกลับไปยังส่วนต่างๆ ได้ไปยังธุรกรรมที่ทรานซิชันอื่นๆ ทั้งหมดสามารถกรอกลับไปยังส่วนต่างๆ ได้ ตอนนี้ธุรกรรมจะถือว่าไม่สามารถกรอกลับได้อย่างถูกต้อง (I18ccd)

เวอร์ชัน 1.8.0-alpha01

3 เมษายน 2024

androidx.fragment:fragment-*:1.8.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.8.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • AndroidFragment Composable ใหม่ช่วยให้คุณเพิ่มข้อมูลโค้ดลงในลําดับชั้นการเขียนผ่านชื่อคลาสของข้อมูลโค้ดได้ โดยจะจัดการการบันทึกและการกู้คืนสถานะของ Fraktment โดยอัตโนมัติ รายการนี้สามารถใช้แทน AndroidViewBinding Composable ได้โดยตรง (b/312895363, Icf841)

การเปลี่ยนแปลงเอกสารประกอบ

  • เอกสารประกอบที่อัปเดตสำหรับ OnBackStackChangedListener API เพื่อระบุเวลาที่เรียกใช้และวิธีใช้ (I0bfd9)

การอัปเดตทรัพยากรที่เกี่ยวข้อง

เวอร์ชัน 1.7

เวอร์ชัน 1.7.1

14 พฤษภาคม 2024

androidx.fragment:fragment-*:1.7.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.1 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ระบบจะเรียกใช้การย้อนกลับแบบคาดการณ์สําหรับธุรกรรมที่แต่ละกลุ่มมี Animator หรือ Androidx Transition ที่กรอกลับได้เท่านั้น การแก้ไขนี้จะช่วยแก้ไขปัญหาที่การยกเลิกธุรกรรมที่กรอได้บางส่วนจะทําให้หน้าจอว่างเปล่า (I43037, b/339169168)

เวอร์ชัน 1.7.0

1 พฤษภาคม 2024

androidx.fragment:fragment-*:1.7.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0 มีการคอมมิตเหล่านี้

การรองรับท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้

  • ตอนนี้ฟragment รองรับการกลับไปยังส่วนต่างๆ ของแอปแบบคาดการณ์เมื่อใช้ Animator หรือเมื่อใช้ AndroidX Transition 1.5.0 วิธีนี้ช่วยให้ผู้ใช้ใช้ท่าทางสัมผัส "กลับ" เพื่อดูส่วนที่แล้วได้โดยเลื่อนไปยัง Animator/Transition ของคุณก่อนที่จะตัดสินใจว่าจะยืนยันธุรกรรมผ่านการทำท่าทางสัมผัสให้เสร็จสมบูรณ์หรือยกเลิก
ระบบการเปลี่ยน ทรัพยากร XML รองรับการย้อนกลับที่คาดการณ์ได้
Animation R.anim ไม่
Animator R.animator ใช่
เฟรมเวิร์ก Transition R.transition ไม่
AndroidX Transition ที่มี Transition 1.4.1 หรือต่ำกว่า R.transition ไม่
AndroidX Transition พร้อม Transition 1.5.0 R.transition ใช่

หากพบปัญหาเกี่ยวกับการรองรับการกดกลับแบบคาดการณ์ในฟragments หลังจากที่คุณเลือกใช้ท่าทางสัมผัสการกดกลับแบบคาดการณ์ โปรดรายงานปัญหาเกี่ยวกับฟragments พร้อมตัวอย่างโปรเจ็กต์ที่ทำให้เกิดปัญหา คุณปิดใช้การย้อนกลับแบบคาดการณ์ได้โดยใช้ FragmentManager.enabledPredictiveBack(false) ใน onCreate() ของกิจกรรม

ตอนนี้ FragmentManager.OnBackStackChangedListener() มี onBackStackChangeProgressed() และ onBackStackChangeCancelled() สำหรับการรับความคืบหน้าย้อนหลังตามการคาดการณ์และเหตุการณ์ที่ยกเลิกแล้วตามลำดับ

อาร์ติแฟกต์การคอมโพสิต์ของส่วนย่อย

มีการสร้างอาร์ติแฟกต์ fragment-compose ใหม่ซึ่งมุ่งเน้นที่การรองรับแอปที่อยู่ระหว่างการเปลี่ยนจากสถาปัตยกรรมที่อิงตาม Fragment ไปเป็นสถาปัตยกรรมที่อิงตาม Compose อย่างเต็มรูปแบบ

ฟีเจอร์แรกที่มีให้ใช้งานในอาร์ติแฟกต์ใหม่นี้คือเมธอดส่วนขยาย content ใน Fragment ที่ต้องการช่วยให้ใช้ Compose สำหรับ UI ของแต่ละ Fregment ได้ง่ายขึ้นด้วยการสร้าง ComposeView ให้คุณและตั้งค่า ViewCompositionStrategy ที่ถูกต้อง

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

เวอร์ชัน 1.7.0-rc02

17 เมษายน 2024

androidx.fragment:fragment-*:1.7.0-rc02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-rc02 มีการคอมมิตเหล่านี้

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

  • เพิ่มบันทึกเพื่อระบุสาเหตุที่การตั้งค่า sharedElement โดยไม่ใช้ทรานซิชันอื่นๆ จะใช้งานไม่ได้ (Iec48e)
  • แก้ไขข้อบกพร่องที่หากเพิ่มองค์ประกอบที่แชร์ซึ่งไม่สามารถกรอได้ลงในธุรกรรมที่ทรานซิชันอื่นๆ ทั้งหมดสามารถกรอได้ ระบบจะขัดข้อง ตอนนี้ธุรกรรมจะถือว่าไม่สามารถกรอกลับได้อย่างถูกต้อง (I18ccd)

เวอร์ชัน 1.7.0-rc01

3 เมษายน 2024

androidx.fragment:fragment-*:1.7.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-rc01 มีการคอมมิตเหล่านี้

การอัปเดตทรัพยากรที่เกี่ยวข้อง

เวอร์ชัน 1.7.0-beta01

20 มีนาคม 2024

androidx.fragment:fragment-*:1.7.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-beta01 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ FragmentHostCallback เขียนด้วย Kotlin เพื่อให้ค่า Null ได้ของประเภททั่วไปของ Host ตรงกับค่า Null ได้ของประเภทผลลัพธ์ของ onGetHost() (I40af5)

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

  • แก้ไขปัญหาที่เมื่อส่งท่าทางสัมผัส "กลับแบบคาดการณ์" ไปยังส่วนที่ไม่ได้อยู่ในคอนเทนเนอร์ ระบบจะไม่ทำลายส่วนที่ส่ง ตอนนี้ระบบจะย้ายข้อมูลไปยังสถานะสุดท้ายทันที (Ida0d9)
  • แก้ไขปัญหาในฟragments ที่การขัดจังหวะการเปลี่ยนผ่านที่กำลังจะเข้ามาด้วยท่าทางสัมผัส "กลับแบบคาดการณ์" จะทำลายมุมมองที่กำลังจะเข้ามาและทำให้หน้าจอว่างเปล่า (Id3f22, b/319531491)

เวอร์ชัน 1.7.0-alpha10

7 กุมภาพันธ์ 2024

androidx.fragment:fragment-*:1.7.0-alpha10 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha10 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่ทราบในรุ่นก่อนหน้าของ Fragment เมื่อใช้การรองรับการย้อนกลับแบบคาดการณ์ของ Fragment สำหรับ Animator หรือการเปลี่ยนผ่าน AndroidX โดย Fragment จะแสดง NullPointerException จาก handleOnBackProgressed หากไม่เคยเพิ่ม FragmentManager.OnBackStackChangedListener ผ่าน addOnBackStackChangedListener (I7c835)

เวอร์ชัน 1.7.0-alpha09

24 มกราคม 2024

androidx.fragment:fragment-*:1.7.0-alpha09 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha09 มีการคอมมิตเหล่านี้

อาร์ติแฟกต์การคอมโพสิต์ของส่วนย่อย

มีการสร้างอาร์ติแฟกต์ fragment-compose ใหม่ซึ่งมุ่งเน้นที่การรองรับแอปที่อยู่ระหว่างการเปลี่ยนจากสถาปัตยกรรมที่อิงตาม Fragment ไปเป็นสถาปัตยกรรมที่อิงตาม Compose อย่างเต็มรูปแบบ

ฟีเจอร์แรกที่มีให้ใช้งานในอาร์ติแฟกต์ใหม่นี้คือเมธอดส่วนขยาย content ใน Fragment ที่ต้องการช่วยให้ใช้ Compose สำหรับ UI ของแต่ละ Fregment ได้ง่ายขึ้นด้วยการสร้าง ComposeView ให้คุณและตั้งค่า ViewCompositionStrategy ที่ถูกต้อง (561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentManager.OnBackStackChangedListener() มี onBackStackChangeProgressed() และ onBackStackChangeCancelled() สำหรับการรับความคืบหน้าย้อนหลังตามการคาดการณ์และเหตุการณ์ที่ยกเลิกแล้วตามลำดับ (214b87)

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

  • เมื่อใช้การรองรับการย้อนกลับแบบคาดการณ์ของ Fragment สําหรับ Animator หรือการเปลี่ยนผ่าน AndroidX ทาง Fragment จะแสดง NullPointerException จาก handleOnBackProgressed หากไม่เคยเพิ่ม FragmentManager.OnBackStackChangedListener ผ่าน addOnBackStackChangedListener การเพิ่ม Listener ด้วยตนเองจะช่วยแก้ปัญหาข้อขัดข้องได้ การแก้ไขจะพร้อมใช้งานในรุ่นถัดไปของ Fragments

เวอร์ชัน 1.7.0-alpha08

10 มกราคม 2024

androidx.fragment:fragment-*:1.7.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha08 มีการคอมมิตเหล่านี้

ล้างข้อมูล

  • นำวิธีแก้ปัญหาสำหรับไลบรารีทรานซิชันที่แก้ไขแล้วใน Transition 1.5.0-alpha06 ออก (I04356)

เวอร์ชัน 1.7.0-alpha07

29 พฤศจิกายน 2023

androidx.fragment:fragment-*:1.7.0-alpha07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha07 มีการคอมมิตเหล่านี้

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

  • แก้ไข NullPointerException ที่เกิดจากการตั้งค่าทรานซิชันองค์ประกอบที่แชร์และตั้งค่า enter/exitTransition ไม่ได้ (I8472b)
  • จาก Fragment 1.6.2: เมื่อมีการขยาย Fragment ของ FragmentContainerView สถานะต่างๆ เช่น FragmentManager, โฮสต์ และรหัสจะเข้าถึงได้ใน Callback ของ onInflate (I1e44c, b/307427423)
  • จากข้อมูลโค้ด 1.6.2: เมื่อใช้ clearBackStack เพื่อนำชุดข้อมูลโค้ดออก ระบบจะล้าง ViewModel ของข้อมูลโค้ดที่ฝังอยู่เมื่อล้าง ViewModels ของข้อมูลโค้ดหลัก (I6d83c, b/296173018)

เวอร์ชัน 1.7.0-alpha06

4 ตุลาคม 2023

androidx.fragment:fragment-*:1.7.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha06 มีการคอมมิตเหล่านี้

อัปเดตทรัพยากร Dependency

  • เราได้อัปเดต FRG ให้ใช้ animateToStart API ใหม่ซึ่งเพิ่มไว้ใน Transition 1.5.0-alpha04

เวอร์ชัน 1.7.0-alpha05

20 กันยายน 2023

androidx.fragment:fragment-*:1.7.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ฟragment รองรับการกดย้อนกลับแบบคาดคะเนเมื่อใช้ Androidx Transitions แล้ว ซึ่งจะช่วยให้คุณใช้ท่าทางสัมผัส "กลับ" เพื่อไปยังส่วนที่แล้วด้วย Transition ของ Androidx ที่กําหนดเองได้ก่อนที่จะตัดสินใจทําธุรกรรมหรือยกเลิกผ่านท่าทางสัมผัสที่เสร็จสมบูรณ์ คุณต้องใช้รุ่น Transition 1.5.0-alpha03 เพื่อเปิดใช้ฟีเจอร์นี้ (Ib49b4, b/285175724)

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

  • ขณะนี้มีปัญหาเกิดขึ้นหลังจากที่คุณยกเลิกท่าทางสัมผัสเพื่อกลับด้วยการเปลี่ยนฉาก 1 ครั้งแล้ว ครั้งถัดไปที่คุณเริ่มท่าทางสัมผัสเพื่อกลับ ระบบจะเรียกใช้การเปลี่ยนฉากไม่สำเร็จ ทำให้หน้าจอว่างเปล่า ปัญหานี้อาจเกิดจากปัญหาในคลังทรานซิชัน (b/300157785) หากพบปัญหานี้ โปรดรายงานปัญหาเกี่ยวกับ Fraktment พร้อมตัวอย่างโปรเจ็กต์ที่ทำให้เกิดปัญหา คุณปิดใช้การย้อนกลับแบบคาดการณ์ได้โดยใช้ FragmentManager.enabledPredictiveBack(false) ใน onCreate() ของกิจกรรม

เวอร์ชัน 1.7.0-alpha04

6 กันยายน 2023

androidx.fragment:fragment-*:1.7.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha04 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเมื่อยกเลิกท่าทางสัมผัสเพื่อกลับแบบคาดการณ์ซึ่งทำให้ข้อมูลโค้ดที่แยกส่วนไม่เข้าสู่สถานะวงจรชีวิตของแอปที่ถูกต้อง (I7cffe, b/297379023)
  • แก้ไขการถดถอยที่อนุญาตให้ภาพเคลื่อนไหวทำงานร่วมกับการเปลี่ยนสไลด์ (I59f36)
  • แก้ปัญหาเมื่อใช้การกดย้อนกลับแบบคาดการณ์กับส่วนที่พยายามย้อนกลับ 2 ครั้งติดต่อกันในส่วนที่ 2 จากท้ายบนกองซ้อนที่ย้อนกลับแล้วจะทำให้เกิดการขัดข้อง (Ifa1a4)

เวอร์ชัน 1.7.0-alpha03

23 สิงหาคม 2023

androidx.fragment:fragment-*:1.7.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเกี่ยวกับ Fragments เมื่อใช้การย้อนกลับแบบคาดการณ์ ซึ่งทำให้ระบบข้าม Fragments แรกในกองซ้อนการย้อนกลับของเครื่องมือจัดการ Fragments และทำให้กิจกรรมเสร็จสิ้นเมื่อใช้การย้อนกลับของระบบผ่านการไปยังส่วนต่างๆ ด้วยปุ่ม 3 ปุ่มหรือท่าทางสัมผัสการย้อนกลับแบบคาดการณ์ (I0664b, b/295231788)

เวอร์ชัน 1.7.0-alpha02

9 สิงหาคม 2023

androidx.fragment:fragment-*:1.7.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.7.0-alpha02 มีการคอมมิตเหล่านี้

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

  • เมื่อใช้ Fragment กับท่าทางสัมผัสเพื่อย้อนกลับแบบคาดการณ์จาก API 34 หากคุณใช้ระบบการเปลี่ยนที่ไม่รองรับการกรอ (Animations, Transitions) หรือไม่รองรับการเปลี่ยนเลย ตอนนี้ Fragment จะรอจนกว่าท่าทางสัมผัสจะเสร็จสมบูรณ์ก่อนที่จะดำเนินการย้อนกลับ (I8100c)

เวอร์ชัน 1.7.0-alpha01

7 มิถุนายน 2023

androidx.fragment:fragment-*:1.7.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชันนี้พัฒนาในสาขาภายใน

ฟีเจอร์ใหม่

  • ตอนนี้ฟragment รองรับการกดย้อนกลับแบบคาดคะเนในแอปเมื่อใช้ Animator แล้ว ซึ่งจะช่วยให้คุณใช้ท่าทางสัมผัส "กลับ" เพื่อดูส่วนที่แล้วด้วยภาพเคลื่อนไหวที่กําหนดเองได้ก่อนที่จะตัดสินใจว่าจะทําธุรกรรมผ่านท่าทางสัมผัสที่เสร็จสมบูรณ์หรือยกเลิก นอกจากนี้ คุณยังปิดใช้ลักษณะการทำงานใหม่นี้ได้ด้วยการใช้ enablePredictiveBack() เวอร์ชันทดลองและส่ง false

เวอร์ชัน 1.6

เวอร์ชัน 1.6.2

1 พฤศจิกายน 2023

androidx.fragment:fragment-*:1.6.2 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้

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

  • เมื่อมีการขยายส่วนของ FragmentContainerView คุณจะเข้าถึงสถานะต่างๆ เช่น FragmentManager, โฮสต์ และรหัสได้ใน onInflate callback (I1e44c, b/307427423)
  • เมื่อใช้ clearBackStack เพื่อนำชุดข้อมูลโค้ดโค้ดย่อยออก ระบบจะล้าง ViewModel ของข้อมูลโค้ดย่อยทั้งหมดเมื่อล้าง ViewModels ของข้อมูลโค้ดหลัก (I6d83c, b/296173018)

เวอร์ชัน 1.6.1

26 กรกฎาคม 2023

androidx.fragment:fragment-*:1.6.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่สถานะที่บันทึกไว้เมื่อกิจกรรมหยุดลงแต่ไม่ได้ถูกทำลายจะได้รับการแคชอย่างไม่ถูกต้อง แม้ว่าระบบจะย้ายอินสแตนซ์ของข้อมูลโค้ดกลับไปอยู่ในสถานะ RESUMED แล้วก็ตาม ซึ่งจะทำให้ระบบนำสถานะที่แคชไว้กลับมาใช้ซ้ำได้หากอินสแตนซ์ของ Fraktment นั้นอยู่ในกองซ้อนที่ย้อนกลับเมื่อใช้ API กองซ้อนที่ย้อนกลับหลายรายการเพื่อบันทึกและกู้คืน Fraktment นั้น (I71288, b/246289075)

อัปเดตทรัพยากร Dependency

  • ตอนนี้ FRG จะใช้ Activity 1.7.2 การแก้ไขนี้ช่วยแก้ปัญหาที่ผู้ใช้ Kotlin ขยาย ComponentDialog ไม่ได้หากไม่ได้ใช้ Activity อย่างชัดเจน (b/287509323)

เวอร์ชัน 1.6.0

7 มิถุนายน 2023

androidx.fragment:fragment-*:1.6.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้

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

  • สถานะที่บันทึกไว้ของ Fragment แบ่งออกเป็น 2 ส่วน ได้แก่ สถานะของคลังส่วนตัว (คลาส Parcelable ที่กําหนดเอง) และสถานะที่นักพัฒนาแอประบุ ซึ่งตอนนี้จัดเก็บไว้ใน Bundle เสมอ ซึ่งช่วยให้ระบุแหล่งที่มาของสถานะของข้อมูลโค้ดได้
  • อินเทอร์เฟซ FragmentManager.OnBackStackChangedListener ได้รับการขยายให้มี 2 รายการเพิ่มเติมสำหรับ onBackStackChangeStarted และ onBackStackChangeCommitted ซึ่งจะเรียกใช้กับ Fragment แต่ละรายการทันทีก่อนที่จะเพิ่ม/นำออกจากกองซ้อนด้านหลังของแฟรกเมนต์ และทันทีหลังจากที่ทำธุรกรรมเสร็จสมบูรณ์ตามลำดับ
  • FragmentStrictMode เพิ่ม WrongNestedHierarchyViolation ใหม่ซึ่งจะตรวจจับเมื่อมีการฝังข้อมูลโค้ดย่อยภายในลําดับชั้นของมุมมองของรายการหลัก แต่ไม่ได้เพิ่มลงใน childFragmentManager ของรายการหลัก
  • ตอนนี้ API Fragment และ FragmentManager ที่ใช้ Intent หรือ IntentSender ได้รับการกำกับเนื้อหาอย่างเหมาะสมด้วย @NonNull เพื่อป้องกันการส่งค่า Null เนื่องจากค่า Null จะทําให้ API เฟรมเวิร์ก Android ที่เกี่ยวข้องซึ่งเมธอดเหล่านี้เรียกใช้ขัดข้องทันที
  • ตอนนี้ DialogFragment ให้สิทธิ์เข้าถึง ComponentDialog ที่เกี่ยวข้องผ่าน requireComponentDialog() API แล้ว
  • ตอนนี้ Fragment จะขึ้นอยู่กับวงจร 2.6.1
  • ตอนนี้ เศษจะขึ้นอยู่กับ SavedState 1.2.1
  • ตอนนี้ Fragment ขึ้นอยู่กับ ProfileInstaller 1.3.0
  • อาร์ติแฟกต์ fragment-testing-manifest จะแยกรายการไฟล์ Manifest ออกจากคอมโพเนนต์การทดสอบส่วนที่เหลือ ซึ่งหมายความว่าคุณจะทำสิ่งต่อไปนี้ได้

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    วิธีนี้จะช่วยหลีกเลี่ยงความขัดแย้งเนื่องจากเวอร์ชันไม่สอดคล้องกันระหว่าง fragment-testing กับ androidx.test

เวอร์ชัน 1.6.0-rc01

10 พฤษภาคม 2023

androidx.fragment:fragment-*:1.6.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-rc01 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่ทำให้ระบบส่ง ActivityResult ที่มีรหัสคำขอไม่ถูกต้องเมื่อมีการส่งคำขอ startActivityForResult หลายรายการติดต่อกัน (If0b9d, b/249519359)
  • แก้ไขปัญหาที่มีการเรียก onBackStackChangeListener กลับสำหรับธุรกรรมที่ไม่ได้เปลี่ยนกองซ้อนที่ย้อนกลับหากมีการผสมผสานกับธุรกรรมที่เปลี่ยน (I0eb5c, b/279306628)

เวอร์ชัน 1.6.0-beta01

19 เมษายน 2023

androidx.fragment:fragment-*:1.6.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-beta01 มีการคอมมิตเหล่านี้

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

  • การใช้ postponeEnterTransition ที่มีระยะหมดเวลาแล้วแทนที่กลุ่มที่เลื่อนออกไปจะไม่ส่งผลให้มีการแสดงกลุ่มที่เลื่อนออกไปอีกต่อไป (I2ec7d, b/276375110)
  • ตอนนี้การเรียกกลับ onBackStackChangeStarted และ onBackStackChangeCommitted ใหม่จะส่งกลุ่มย่อยเพียงครั้งเดียว แม้ว่าธุรกรรมหลายรายการจะมีกลุ่มย่อยเดียวกันก็ตาม (Ic6b69)

เวอร์ชัน 1.6.0-alpha09

5 เมษายน 2023

androidx.fragment:fragment-*:1.6.0-alpha09 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha09 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ DialogFragment ให้สิทธิ์เข้าถึง ComponentDialog ที่เกี่ยวข้องผ่าน requireComponentDialog() API แล้ว (I022e3, b/234274777)
  • เราได้กำกับเนื้อหาของ API ของ commitNow(), executePendingTransactions() และ popBackStackImmediate() ด้วย @MainThread ซึ่งหมายความว่าตอนนี้ API ทั้งหมดจะแสดงข้อผิดพลาดในการสร้างเมื่อไม่ได้เรียกใช้จากเธรดหลักแทนที่จะรอให้แสดงข้อผิดพลาดเมื่อรันไทม์ (Ic9665, b/236538905)

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

  • แก้ไขข้อบกพร่องใน FragmentManager ที่การบันทึกและการกู้คืนในเฟรมเดียวกันอาจทำให้ระบบขัดข้อง (Ib36af, b/246519668)
  • ตอนนี้การเรียกกลับ OnBackStackChangedListener onBackStackChangeStarted และ onBackStackChangeCommitted จะทำงานเฉพาะเมื่อมีการเปลี่ยนแปลงกองซ้อนที่ย้อนกลับ FragmentManager เท่านั้น (I66055, b/274788957)

เวอร์ชัน 1.6.0-alpha08

22 มีนาคม 2023

androidx.fragment:fragment-*:1.6.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha08 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงพฤติกรรม

  • ระบบได้ปรับเวลาของ OnBackStackChangedListener.onBackStackChangeCommited callback ให้ทำงานก่อนการดำเนินการกับข้อมูลโค้ดที่แยกส่วน วิธีนี้ช่วยให้มั่นใจว่าระบบจะไม่ส่งผ่านข้อมูลโค้ดที่แยกออกไปยังการเรียกกลับ (I66a76, b/273568280)

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

  • จาก Fragment 1.5.6: แก้ไขปัญหาการเรียก clearFragmentResultListener ภายใน setFragmentResultListener ไม่ทำงานหาก Lifecycle เป็น STARTED อยู่แล้วและผลลัพธ์พร้อมใช้งานแล้ว (If7458)

การอัปเดตทรัพยากร Dependency

เวอร์ชัน 1.6.0-alpha07

8 มีนาคม 2023

androidx.fragment:fragment-*:1.6.0-alpha07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha07 มีการคอมมิตเหล่านี้

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

  • จาก Fragment 1.5.6: แก้ไขปัญหาการนำ Fragment ออกไม่ว่าจะมีการเพิ่มรายการเมนูหรือไม่ก็ตามจะทำให้เมนูของกิจกรรมใช้งานไม่ได้ (50f098, b/244336571)

เวอร์ชัน 1.6.0-alpha06

22 กุมภาพันธ์ 2023

androidx.fragment:fragment-*:1.6.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha06 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงพฤติกรรม

  • ตอนนี้ระบบจะเรียกใช้ onBackStackChangedStarted callback ใหม่ใน onBackStackChangedListener ของ FragmentManager ก่อนที่ชิ้นส่วนจะเริ่มย้ายไปยังสถานะเป้าหมาย (I34726)

เวอร์ชัน 1.6.0-alpha05

8 กุมภาพันธ์ 2023

androidx.fragment:fragment-*:1.6.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้อินเทอร์เฟซ FragmentManager.OnBackStackChagnedListener มี 2 รายการเพิ่มเติมสำหรับ Callback ได้แก่ onBackStackChangeStarted และ onBackStackChangeCommitted ซึ่งช่วยให้มีข้อมูลเพิ่มเติมและการควบคุมเมื่อเกิดการเปลี่ยนแปลงสแต็กย้อนกลับใน FragmentManager (Ib7ce5, b/238686802)

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

  • ตอนนี้ API Fragment และ FragmentManager ที่ใช้ Intent หรือ IntentSender ได้รับการกำกับเนื้อหาอย่างเหมาะสมด้วย @NonNull เพื่อป้องกันการส่งค่า Null เนื่องจากค่า Null จะทําให้ API เฟรมเวิร์ก Android ที่เกี่ยวข้องซึ่งเมธอดเหล่านี้เรียกใช้ขัดข้องทันที (I06fd4)

เวอร์ชัน 1.6.0-alpha04

7 ธันวาคม 2022

androidx.fragment:fragment-*:1.6.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.6.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • FragmentStrictMode เพิ่ม WrongNestedHierarchyViolation ใหม่ซึ่งจะตรวจจับเมื่อมีการฝังข้อมูลโค้ดย่อยภายในลําดับชั้นของมุมมองของรายการหลัก แต่ไม่ได้เพิ่มลงใน childFragmentManager ของรายการหลัก (I72521, b/249299268)

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

  • ตอนนี้ระบบจะกู้คืนสถานะ SavedStateRegistry ของข้อมูลโค้ดก่อนที่ onAttach() เพื่อให้มั่นใจว่าข้อมูลโค้ดจะพร้อมใช้งานจากวิธีการต่างๆ ของวงจรทั้งหมด (I1e2b1)

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

  • อาร์ติแฟกต์ fragment-testing-manifest จะแยกรายการไฟล์ Manifest ออกจากคอมโพเนนต์การทดสอบส่วนที่เหลือ ซึ่งหมายความว่าคุณจะทำสิ่งต่อไปนี้ได้
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

วิธีนี้จะช่วยหลีกเลี่ยงความขัดแย้งเนื่องจากเวอร์ชันไม่สอดคล้องกันระหว่าง fragment-testing กับ androidx.test (I8e534, b/128612536)

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

  • จากข้อมูลโค้ด 1.5.5: ข้อมูลโค้ดจะไม่บันทึกสถานะ ViewModel เป็นส่วนหนึ่งของสถานะที่บันทึกไว้ของรีจิสทรีมุมมองอย่างไม่ถูกต้องอีกต่อไป (I10d2b, b/253546214)

เวอร์ชัน 1.6.0-alpha03

5 ตุลาคม 2022

androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 และ androidx.fragment:fragment-testing:1.6.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha03 มีคอมมิตเหล่านี้

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

  • ตอนนี้คลาสที่ขยาย DialogFragment จะต้องเรียก super ในการลบล้าง onDismiss() (I14798, b/238928865)

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

  • แก้ไขการถดถอยที่เกิดจากการผสานรวมอินเทอร์เฟซการเรียกกลับของผู้ให้บริการแบบใหม่ (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) เพื่อให้แน่ใจว่าข้อมูลโค้ดจะได้รับการเรียกกลับที่เหมาะสมเสมอ (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

เวอร์ชัน 1.6.0-alpha02

24 สิงหาคม 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 และ androidx.fragment:fragment-testing:1.6.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha02 มีการคอมมิตเหล่านี้

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

  • จากกลุ่ม 1.5.2: แก้ไขปัญหาที่การเรียกใช้ธุรกรรม popBackStack() และ replace() พร้อมกันอาจทําให้กลุ่มที่ออกใช้งานเรียกใช้ Animation/Animator ที่ไม่ถูกต้อง (Ib1c07, b/214835303)

เวอร์ชัน 1.6.0-alpha01

27 กรกฎาคม 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 และ androidx.fragment:fragment-testing:1.6.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.6.0-alpha01 มีการคอมมิตเหล่านี้

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

  • สถานะที่บันทึกไว้ของ Fragment แบ่งออกเป็น 2 ส่วน ได้แก่ สถานะของคลังส่วนตัว (คลาส Parcelable ที่กําหนดเอง) และสถานะที่นักพัฒนาแอประบุ ซึ่งตอนนี้จัดเก็บไว้ใน Bundle เสมอ ซึ่งช่วยให้ระบุแหล่งที่มาของสถานะของข้อมูลโค้ดได้ (b/207158202)

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

  • จากส่วน 1.5.1: แก้ไขการถดถอยใน DialogFragmentCallbacksDetector ในกรณีที่การใช้ Lint เวอร์ชันที่มาพร้อมกับ AGP 7.4 จะทําให้ Lint ขัดข้อง (b/237567009)

การอัปเดตทรัพยากรที่เกี่ยวข้อง

รุ่น 1.5

เวอร์ชัน 1.5.7

19 เมษายน 2023

androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 และ androidx.fragment:fragment-testing:1.5.7 เผยแพร่แล้ว เวอร์ชัน 1.5.7 มีคอมมิตเหล่านี้

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

  • การใช้ postponeEnterTransition ที่มีระยะหมดเวลาแล้วแทนที่กลุ่มที่เลื่อนไว้จะไม่ส่งผลให้มีการแสดงกลุ่มที่เลื่อนไว้อีกต่อไป (I2ec7d, b/276375110)

เวอร์ชัน 1.5.6

22 มีนาคม 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 และ androidx.fragment:fragment-testing:1.5.6 เผยแพร่แล้ว เวอร์ชัน 1.5.6 มีคอมมิตเหล่านี้

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

  • แก้ปัญหาที่การนำเศษส่วนใดก็ตามออก ไม่ว่าจะเพิ่มรายการเมนูหรือไม่ก็ตาม จะทําให้เมนูของกิจกรรมใช้งานไม่ได้ (50f098, b/244336571)
  • แก้ไขปัญหาที่การเรียก clearFragmentResultListener ภายใน setFragmentResultListener ไม่ทำงานหาก Lifecycle เป็น STARTED อยู่แล้วและมีผลลัพธ์อยู่แล้ว (If7458)

เวอร์ชัน 1.5.5

7 ธันวาคม 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 และ androidx.fragment:fragment-testing:1.5.5 เผยแพร่แล้ว เวอร์ชัน 1.5.5 มีคอมมิตเหล่านี้

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

  • ฟragment จะไม่บันทึกสถานะ ViewModel เป็นส่วนหนึ่งของสถานะที่บันทึกไว้ของรีจิสทรีมุมมองอย่างไม่ถูกต้องอีกต่อไป (I10d2b, b/253546214)

เวอร์ชัน 1.5.4

24 ตุลาคม 2022

androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 และ androidx.fragment:fragment-testing:1.5.4 เผยแพร่แล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้

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

  • แก้ไขข้อผิดพลาดในการใช้ FragmentController ที่กําหนดเองกับโฮสต์ที่ไม่ได้ใช้อินเทอร์เฟซการเรียกกลับของผู้ให้บริการ (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) และการเรียกใช้ฟังก์ชันการส่งออกที่เลิกใช้งานจะส่งไปยังข้อมูลโค้ดย่อยไม่ได้ (I9b380)

เวอร์ชัน 1.5.3

21 กันยายน 2022

androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 และ androidx.fragment:fragment-testing:1.5.3 เผยแพร่แล้ว เวอร์ชัน 1.5.3 มีคอมมิตเหล่านี้

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

  • แก้ไขข้อผิดพลาดที่ทำให้มีการเรียกกลับ onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() และ onConfigurationChanged() ในกองซ้อนด้านหลัง (I34581, I8dfe6, b/242570955)
  • ข้อมูลโค้ดย่อยที่ฝังอยู่จะไม่ได้รับการเรียกกลับ onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() หรือ onConfigurationChanged() หลายรายการอีกต่อไป (I690b3, Id0096, If9d6b, I2cba2)

รุ่น 1.5.2

10 สิงหาคม 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 และ androidx.fragment:fragment-testing:1.5.2 เผยแพร่แล้ว เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่การดำเนินการธุรกรรม popBackStack() และ replace() พร้อมกันอาจทําให้ส่วนที่ออกใช้ Animation/Animator ที่ไม่ถูกต้อง (Ib1c07, b/214835303)

รุ่น 1.5.1

27 กรกฎาคม 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 และ androidx.fragment:fragment-testing:1.5.1 เผยแพร่แล้ว เวอร์ชัน 1.5.1 มีคอมมิตเหล่านี้

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

  • แก้ไขการถดถอยใน DialogFragmentCallbacksDetector ในกรณีที่การใช้ Lint เวอร์ชันที่มาพร้อมกับ AGP 7.4 จะทําให้ Lint ขัดข้อง (b/237567009)

การอัปเดตทรัพยากรที่เกี่ยวข้อง

  • ตอนนี้ไลบรารี FRG จะขึ้นอยู่กับ Lifecycle 2.5.1 (Id204c)
  • ตอนนี้คลังข้อมูลโค้ดโค้ดจะขึ้นอยู่กับ Activity 1.5.1 (I10f07)

เวอร์ชัน 1.5.0

29 มิถุนายน 2022

androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 และ androidx.fragment:fragment-testing:1.5.0 เผยแพร่แล้ว เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้

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

  • การผสานรวม CreationExtras - ตอนนี้ Fragment สามารถให้บริการ ViewModelProvider.Factory แบบไม่มีสถานะผ่าน CreationExtras ของ Lifecycle 2.5.0 แล้ว
  • การผสานรวมกล่องโต้ตอบของคอมโพเนนต์ - ตอนนี้ DialogFragment ใช้ ComponentDialog ผ่านกิจกรรม 1.5.0 เป็นกล่องโต้ตอบเริ่มต้นที่ onCreateDialog() แสดง
  • การจัดระเบียบโค้ดสถานะอินสแตนซ์ที่บันทึกไว้ - เราได้เริ่มเปลี่ยนวิธีบันทึกสถานะอินสแตนซ์ของ FRG แล้ว การดำเนินการนี้จะช่วยระบุสถานะที่บันทึกไว้ในข้อมูลโค้ดและแหล่งที่มาของสถานะได้อย่างชัดเจน การเปลี่ยนแปลงในปัจจุบันมีดังนี้
    • ตอนนี้ FragmentManager จะบันทึกสถานะอินสแตนซ์ที่บันทึกไว้ลงใน Bundle แทนที่จะบันทึกใน Parcelable ที่กําหนดเองโดยตรง
    • ตอนนี้ระบบจะบันทึกผลลัพธ์ที่ตั้งค่าผ่าน Fragment Result APIs ที่ยังไม่ได้แสดงแยกต่างหากจากสถานะภายในของ FragmentManager
    • ตอนนี้ระบบจะบันทึกสถานะที่เชื่อมโยงกับแต่ละรายการแยกจากสถานะภายในของ FragmentManager ซึ่งจะช่วยให้คุณเชื่อมโยงจำนวนสถานะที่บันทึกไว้ซึ่งเชื่อมโยงกับแต่ละรายการกับรหัสที่ไม่ซ้ำกันซึ่งอยู่ในบันทึกการแก้ไขข้อบกพร่องของ FragmentManager ได้Fragment

การเปลี่ยนแปลงอื่นๆ

  • ตอนนี้ FragmentStrictMode ช่วยให้สามารถข้ามการดําเนินการบางอย่างที่ละเมิดได้โดยใช้ allowViolation() กับชื่อคลาส
  • เราได้เลิกใช้งาน Fragment API สำหรับการแสดงเมนูใน ActionBar ของกิจกรรมแล้ว API MenuHost และ MenuProvider ที่เพิ่มใน Activity 1.4.0 มอบแพลตฟอร์ม API ที่เทียบเท่าซึ่งทดสอบได้และรับรู้ถึงวงจรของชีวิตที่ควรใช้กับ FRG

เวอร์ชัน 1.5.0-rc01

11 พฤษภาคม 2022

androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 และ androidx.fragment:fragment-testing:1.5.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.5.0-rc01 มีการคอมมิตเหล่านี้

การจัดระเบียบโค้ดสถานะอินสแตนซ์ที่บันทึกไว้

  • ตอนนี้ระบบจะบันทึกสถานะที่เชื่อมโยงกับแต่ละรายการแยกจากสถานะภายในของ FragmentManager ซึ่งจะช่วยให้คุณเชื่อมโยงจำนวนสถานะที่บันทึกไว้ซึ่งเชื่อมโยงกับแต่ละรายการกับรหัสที่ไม่ซ้ำกันซึ่งมีอยู่ในการบันทึกการแก้ไขข้อบกพร่องของรายการ (a153e0, b/207158202)

เวอร์ชัน 1.5.0-beta01

20 เมษายน 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 และ androidx.fragment:fragment-testing:1.5.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.5.0-beta01 มีการคอมมิตเหล่านี้

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

  • DialogFragment ได้เพิ่มเมธอด dismissNow ใหม่ที่ใช้ commitNow เพื่อทำงานร่วมกับฟังก์ชัน showNow โปรดทราบว่าการดำเนินการนี้จะไม่ปิด Dialog ทันที แต่จะอัปเดตสถานะของ FragmentManager แบบซิงค์กันเท่านั้น (I15c36, b/72644830)

การจัดโครงสร้างใหม่สำหรับสถานะของอินสแตนซ์ที่บันทึกไว้

  • ตอนนี้ FragmentManager จะบันทึกสถานะอินสแตนซ์ที่บันทึกไว้ลงใน Bundle แทนที่จะบันทึกใน Parcelable ที่กําหนดเองโดยตรง นี่เป็นขั้นตอนแรกในการเพิ่มความโปร่งใสเกี่ยวกับสิ่งที่ Fragments บันทึกไว้จริงๆ (I93807, b/207158202)
  • ระบบจะบันทึกผลลัพธ์ที่ตั้งค่าไว้ผ่าน Fragment Result API ซึ่งยังไม่ได้นำส่งแยกต่างหากจากสถานะภายในของ FragmentManager วิธีนี้จะช่วยให้เกิดความโปร่งใสมากขึ้นเกี่ยวกับผลลัพธ์ที่บันทึกไว้ซึ่งเป็นส่วนหนึ่งของสถานะอินสแตนซ์ที่บันทึกไว้ (I6ea12, b/207158202)

เวอร์ชัน 1.5.0-alpha05

6 เมษายน 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 และ androidx.fragment:fragment-testing:1.5.0-alpha05 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha05 มีการคอมมิตเหล่านี้

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

เวอร์ชัน 1.5.0-alpha04

23 มีนาคม 2022

androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 และ androidx.fragment:fragment-testing:1.5.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha04 มีการคอมมิตเหล่านี้

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

  • เราเลิกใช้งาน Fragment API สำหรับการแสดงเมนูใน ActionBar ของกิจกรรมแล้ว เนื่องจากมีการเชื่อมโยงกับข้อมูลโค้ดของคุณอย่างแน่นหนาและไม่สามารถทดสอบแยกกันได้ API MenuHost และ MenuProvider ที่เพิ่มใน Activity 1.4.0-alpha01 มอบแพลตฟอร์ม API ที่เทียบเท่าซึ่งสามารถทดสอบได้และรับรู้ถึงวงจรของรายการที่ควรใช้กับ FRG (I50a59, I20758)

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

  • ตอนนี้ SavedStateViewFactory รองรับการใช้ CreationExtras แม้ว่าจะเริ่มต้นด้วย SavedStateRegistryOwner ก็ตาม หากระบุข้อมูลเพิ่มเติม ระบบจะไม่สนใจอาร์กิวเมนต์ที่เริ่มต้น (I6c43b, b/224844583)

เวอร์ชัน 1.5.0-alpha03

23 กุมภาพันธ์ 2022

androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 และ androidx.fragment:fragment-testing:1.5.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha03 มีการคอมมิตเหล่านี้

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

  • ตอนนี้คุณสามารถส่ง CreationExtras ไปยังฟังก์ชัน by viewModels() และ by activityViewModels() ได้แล้ว (Ibefe7, b/217601110)

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

  • ตอนนี้ DialogFragment ใช้ ComponentDialog เป็นกล่องโต้ตอบเริ่มต้นที่ onCreateDialog() แสดง (If3784, b/217618170)

เวอร์ชัน 1.5.0-alpha02

9 กุมภาพันธ์ 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 และ androidx.fragment:fragment-testing:1.5.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentStrictMode ช่วยให้สามารถข้ามการดําเนินการบางอย่างที่ละเมิดได้โดยใช้ allowViolation() กับชื่อคลาส (I8f678)

เวอร์ชัน 1.5.0-alpha01

26 มกราคม 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 และ androidx.fragment:fragment-testing:1.5.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.5.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ Fragment ผสานรวมกับ ViewModel CreationExtras ซึ่งเปิดตัวเป็นส่วนหนึ่งของ Lifecycle 2.5.0-alpha01 แล้ว (I3060b, b/207012585)

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

  • จากส่วน 1.4.1: FragmentContainerView ไม่แสดงข้อยกเว้นสถานะที่ไม่ถูกต้องอีกต่อไปเมื่อรหัสมุมมองที่สร้างขึ้นจาก XML มีค่าเป็นลบ (Ic185b, b/213086140)
  • จาก Fragment 1.4.1: เมื่อใช้ Lambda ownerProducer ที่กําหนดเองกับฟังก์ชันแบบเลื่อนเวลา by viewModels() ตอนนี้ระบบจะใช้ defaultViewModelProviderFactory จากเจ้าของนั้นหากไม่ได้ระบุ ViewModelProvider.Factory ที่กําหนดเองแทนที่จะใช้ Factory ของ Fragment เสมอ (I56170, b/214106513)
  • แก้ไขข้อขัดข้องเมื่อเข้าถึง ViewModel เป็นครั้งแรกจาก registerForActivityResult() callback ของ Fragment (Iea2b3)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.1

26 มกราคม 2022

androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 และ androidx.fragment:fragment-testing:1.4.1 เผยแพร่แล้ว เวอร์ชัน 1.4.1 มีการคอมมิตเหล่านี้

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

  • FragmentContainerView ไม่แสดงข้อยกเว้นสถานะที่ไม่ถูกต้องอีกต่อไปเมื่อรหัสมุมมองที่สร้างขึ้นจาก XML มีค่าเป็นลบ (Ic185b, b/213086140)
  • เมื่อใช้ ownerProducer lambda ที่กําหนดเองกับฟังก์ชันแบบเลื่อนเวลาของ by viewModels() ตอนนี้ระบบจะใช้ defaultViewModelProviderFactory จากเจ้าของนั้นหากไม่ได้ระบุ ViewModelProvider.Factory ที่กําหนดเองแทนที่จะใช้ฟีเจอร์การสร้างของข้อมูลโค้ดเสมอ (I56170, b/214106513)

เวอร์ชัน 1.4.0

17 พฤศจิกายน 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 และ androidx.fragment:fragment-testing:1.4.0 เผยแพร่แล้ว เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้

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

  • FragmentStrictMode API มีการตรวจสอบรันไทม์ที่ช่วยให้คุณยืนยันว่าแอปหรือไลบรารีที่คุณใช้ไม่ได้เรียกใช้ API ของข้อมูลโค้ดที่เลิกใช้งาน เมื่อตรวจพบการละเมิด คุณจะเลือกพิมพ์ข้อความบันทึก เรียกใช้โปรแกรมฟังที่กำหนดเอง หรือทำให้แอปขัดข้องได้ คุณสามารถตั้งค่า FragmentStrictMode.Policy ที่ควบคุมการตรวจสอบที่จะเปิดใช้และ "บทลงโทษ" ที่เรียกให้แสดงใน FragmentManager ผ่านเมธอด setStrictModePolicy() ใหม่ นโยบายดังกล่าวจะมีผลกับ FragmentManager นั้นและมีผลต่อตัวจัดการข้อมูลโค้ดย่อยย่อยที่ไม่ได้ตั้งค่านโยบายของตนเอง ดูStrictMode สําหรับข้อมูลโค้ด
  • ตอนนี้ FragmentContainerView มีเมธอด getFragment() ซึ่งจะแสดงผลข้อมูลโค้ดที่เพิ่มลงในคอนเทนเนอร์ล่าสุด ซึ่งใช้ตรรกะเดียวกับ findFragmentById() ที่มีรหัสของ FragmentContainerView แต่อนุญาตให้ใช้การเรียกต่อกันได้

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • ตอนนี้ FragmentScenario ใช้ Closeable แล้ว ซึ่งจะช่วยให้คุณใช้กับเมธอด use หรือ try-with-resources ของ Kotlin ได้

  • เพิ่มตัวเลือก FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} เพื่อระบุว่าจะเปิดใช้ภาพเคลื่อนไหวการเปลี่ยนกิจกรรมมาตรฐานที่นำมาจากธีมของคุณในการเปลี่ยนเฟรมหรือไม่

  • ระบบได้นำ API เวอร์ชันทดลองของ FragmentManager.enableNewStateManager(boolean) ออกแล้ว และตัวจัดการสถานะใหม่เป็นตัวเลือกเดียวที่ใช้ได้

กองซ้อนที่ย้อนกลับหลายกอง

FragmentManager จะเก็บกองซ้อนที่ซ้อนกันไว้ด้านหลังซึ่งประกอบด้วยธุรกรรมของ FRGMENT ที่ใช้ addToBackStack() ซึ่งจะช่วยให้คุณแสดงธุรกรรมเหล่านั้นและกลับไปยังสถานะก่อนหน้าได้โดยใช้กลไกสำหรับการบันทึกสถานะด้วยข้อมูลโค้ดที่แยกส่วนเพื่อให้ข้อมูลโค้ดที่แยกส่วนกู้คืนสถานะได้อย่างเหมาะสม

เวอร์ชันนี้ขยายกลไกเหล่านี้ด้วย FragmentManager API ใหม่ 3 รายการ ได้แก่ saveBackStack(String name), restoreBackStack(String name) และ clearBackStack(String name) API เหล่านี้ใช้ name เดียวกันกับ addToBackStack() เพื่อบันทึกสถานะของ FragmentTransaction และสถานะของทุกรายการที่เพิ่มในธุรกรรมเหล่านั้น และช่วยให้คุณกู้คืนธุรกรรมและรายการเหล่านั้นได้ในภายหลังโดยที่สถานะยังคงเดิม ซึ่งจะช่วยให้คุณ "สลับ" ระหว่างกองซ้อนย้อนกลับหลายกองได้อย่างมีประสิทธิภาพโดยการบันทึกกองซ้อนย้อนกลับปัจจุบันและกู้คืนกองซ้อนย้อนกลับที่บันทึกไว้

saveBackStack() ทำงานคล้ายกับ popBackStack() ตรงที่เป็นแบบไม่ประสานเวลาและส่งผลให้ธุรกรรมของข้อมูลโค้ดทั้งหมดกลับไปยังชื่อที่เฉพาะเจาะจงนั้นกลับรายการเดิม ("ยกเลิก") และข้อมูลโค้ดที่เพิ่มเข้ามาจะถูกทำลายและนำออก แต่ก็มีความแตกต่างที่สำคัญ 2-3 อย่างดังนี้

  • saveBackStack() จะรวมอยู่ด้วยเสมอ
  • ซึ่งแตกต่างจาก popBackStack() ที่ระบบจะแสดงธุรกรรม ทั้งหมดในกองซ้อนด้านหลังหากไม่พบชื่อที่ระบุในกองซ้อนด้านหลัง หรือหากระบุชื่อเป็นค่าว่าง saveBackStack() จะไม่ทําการใดๆ หากคุณยังไม่ได้ทําธุรกรรมของข้อมูลโค้ดที่แยกส่วนโดยใช้ addToBackStack() ด้วยชื่อที่ตรงกันทุกประการและไม่ใช่ค่าว่าง
  • ระบบจะบันทึกสถานะของเศษทั้งหมดที่เพิ่มจากธุรกรรมเหล่านั้น ซึ่งหมายความว่าระบบจะจัดเก็บสถานะมุมมองของทุกรายการย่อย เรียก onSaveInstanceState() ของทุกรายการย่อย และกู้คืนสถานะนั้น รวมถึงเก็บอินสแตนซ์ ViewModel ที่เชื่อมโยงกับรายการย่อยเหล่านั้นไว้ (และไม่เรียก onCleared() กับรายการย่อยเหล่านั้น)

ธุรกรรมที่เป็นส่วนซึ่งใช้ได้กับ saveBackStack() ต้องเป็นไปตามเกณฑ์ต่อไปนี้

  • ธุรกรรมของข้อมูลโค้ดทุกรายการต้องใช้ setReorderingAllowed(true) เพื่อให้มั่นใจว่าระบบจะกู้คืนธุรกรรมเป็นการดำเนินการแบบอะตอมเดียวได้
  • ชุดธุรกรรมที่บันทึกไว้ต้องสมบูรณ์ในตัว (กล่าวคือ ต้องไม่อ้างอิงถึงข้อมูลโค้ดภายนอกชุดธุรกรรมนั้นอย่างชัดเจน) เพื่อให้มั่นใจว่าสามารถกู้คืนชุดธุรกรรมดังกล่าวได้ในภายหลัง ไม่ว่าจะมีการเปลี่ยนแปลงใดๆ กับกองซ้อนด้านหลังในช่วงเวลาดังกล่าว
  • รายการที่บันทึกไว้ต้องไม่ใช่รายการที่เก็บรักษาไว้หรือมีรายการที่เก็บรักษาไว้ในชุดรายการย่อยแบบเปลี่ยนผ่าน เพื่อให้แน่ใจว่า FragmentManager จะไม่แสดงการอ้างอิงถึงรายการที่บันทึกไว้หลังจากบันทึกกองซ้อนที่ย้อนกลับแล้ว

เช่นเดียวกับ saveBackStack(), restoreBackStack() และ clearBackStack() ซึ่งจะกู้คืนกองซ้อนที่บันทึกไว้ก่อนหน้านี้หรือล้างกองซ้อนที่บันทึกไว้ก่อนหน้านี้ตามลำดับ ทั้งสองจะดำเนินการใดๆ ไม่ได้หากคุณไม่เคยเรียกใช้ saveBackStack() ด้วยชื่อเดียวกันมาก่อน

ดูข้อมูลเพิ่มเติมได้ที่กองซ้อนย้อนกลับหลายกอง: เจาะลึก

เวอร์ชัน 1.4.0-rc01

3 พฤศจิกายน 2021

androidx.fragment:fragment:1.4.0-rc01 เผยแพร่โดยไม่มีการเปลี่ยนแปลงจาก Fragment 1.4.0-beta01 เวอร์ชัน 1.4.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.4.0-beta01

27 ตุลาคม 2021

androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 และ androidx.fragment:fragment-testing:1.4.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ ข้อมูลโค้ดส่วนบนจะส่ง onHiddenChanged() ลงตามลําดับชั้นทั้งหมดก่อนที่จะเปิดใช้งานการเรียกกลับของตนเอง (Iedc20, b/77504618)
  • ตอนนี้แป้นพิมพ์จะปิดโดยอัตโนมัติเมื่อเปลี่ยนจากส่วนที่เปิดแป้นพิมพ์อยู่ไปยังส่วนที่แสดงรีไซเคิลวิว (I8b842, b/196852211)
  • ตอนนี้ DialogFragment ใช้ setReorderingAllowed(true) สําหรับธุรกรรมทั้งหมดที่สร้างขึ้นเมื่อคุณเรียกใช้ show(), showNow() หรือ dismiss() (Ie2c14)
  • คำเตือน Lint ของ DetachAndAttachFragmentInSameFragmentTransaction ที่ยาวมากได้ถูกย่อให้สั้นลงเป็น DetachAndAttachSameFragment (e9eca3)

เวอร์ชัน 1.4.0-alpha10

29 กันยายน 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 และ androidx.fragment:fragment-testing:1.4.0-alpha10 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha10 มีการคอมมิตเหล่านี้

Lint

  • เพิ่มDetachAndAttachFragmentInSameFragmentTransactionคำเตือนเกี่ยวกับ Lint สำหรับการตรวจหาการเรียกทั้ง detach() และ attach() ใน Fragment เดียวกันใน FragmentTransaction เดียวกัน เนื่องจากการดำเนินการที่เสริมกันเหล่านี้จะยกเลิกกันเมื่อดำเนินการในธุรกรรมเดียวกัน จึงต้องแยกการดำเนินการเหล่านี้ออกเป็นธุรกรรมแยกต่างหากจึงจะดำเนินการใดๆ ได้ (aosp/1832956, b/200867930)
  • เพิ่มข้อผิดพลาด FragmentAddMenuProvider lint สำหรับแก้ไขการใช้งานวงจรของ Fragment ไปยังวงจรของมุมมอง Fragment เมื่อใช้ addMenuProvider API ของ MenuHost (aosp/1830457, b/200326272)

การอัปเดตเอกสารประกอบ

  • ข้อความการเลิกใช้งานสำหรับ API ที่ตอนนี้จัดการโดย Activity Result API ซึ่งได้แก่ startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions และ onRequestPermissionsResult ทั้งหมดได้รับการขยายรายละเอียดเพิ่มเติมแล้ว (cce80f)
  • ข้อความการเลิกใช้งาน onActivityCreated() ทั้งสำหรับ Fragment และ DialogFragment ได้รับการขยายรายละเอียดเพิ่มเติมแล้ว (224db4)

เวอร์ชัน 1.4.0-alpha09

15 กันยายน 2021

androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 และ androidx.fragment:fragment-testing:1.4.0-alpha09 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha09 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้คุณสามารถเรียกใช้ clearBackStack(name) เพื่อล้างสถานะที่บันทึกไว้ก่อนหน้านี้ด้วย saveBackStack(name) ได้แล้ว (I70cd7)

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

  • เราได้เขียนคลาส FragmentContainerView ใหม่ใน Kotlin เพื่อให้แน่ใจว่าฟังก์ชัน getFragment จะคำนึงถึง Nullability อย่างถูกต้อง (If694a, b/189629145)
  • ตอนนี้ FragmentStrictMode เขียนด้วย Kotlin แล้ว (I11767, b/199183506)

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

  • แก้ไขปัญหาที่ระบบไม่ล้างสถานะของ Frgment ที่เพิ่มด้วย setReorderingAllowed(true) แล้วนําออกทันทีก่อนดําเนินธุรกรรมที่รอดําเนินการ (I8ccb8)

เวอร์ชัน 1.4.0-alpha08

1 กันยายน 2021

androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 และ androidx.fragment:fragment-testing:1.4.0-alpha08 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha08 มีการคอมมิตเหล่านี้

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

  • ปรับปรุงUseRequireInsteadOfGetการตรวจสอบ Lint เพื่อจัดการวงเล็บที่ไม่จำเป็นได้ดียิ่งขึ้น (I2d865)
  • ปรับปรุงการตรวจสอบ Lint ของ UseGetLayoutInflater เพื่อจัดการกับกรณีขอบเพิ่มเติม (Ie5423)

เวอร์ชัน 1.4.0-alpha07

18 สิงหาคม 2021

androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 และ androidx.fragment:fragment-testing:1.4.0-alpha07 เผยแพร่โดยไม่มีการเปลี่ยนแปลงที่โดดเด่น เวอร์ชัน 1.4.0-alpha07 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.4.0-alpha06

4 สิงหาคม 2021

androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 และ androidx.fragment:fragment-testing:1.4.0-alpha06 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha06 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเกี่ยวกับกองซ้อนที่ซ้อนกันหลายกองเมื่อสลับระหว่างกองซ้อนที่ซ้อนกันอย่างรวดเร็ว ซึ่งจะปรากฏเป็น IllegalStateExceptionขณะคืนค่า FragmentTransaction หรือปรากฏเป็นสำเนาที่ 2 ของข้อมูลโค้ด (I9039f)
  • แก้ปัญหาที่ FragmentManager จะเก็บสำเนาสถานะที่บันทึกไว้ก่อนหน้านี้ผ่าน saveBackStack() ไว้แม้ว่าจะมีการกู้คืนสถานะนั้นแล้วก็ตาม (Ied212)
  • เมธอด dismissAllowingStateLoss() ของ DialogFragment ไม่ขัดข้องอีกต่อไปเมื่อคุณเรียกใช้หลังจากบันทึกสถานะเมื่อเพิ่ม DialogFragment โดยเฉพาะผ่านเมธอด show(FragmentTransaction, String) (I84422)

เวอร์ชัน 1.4.0-alpha05

21 กรกฎาคม 2021

androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 และ androidx.fragment:fragment-testing:1.4.0-alpha05 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha05 มีการคอมมิตเหล่านี้

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

  • จากข้อมูลโค้ด 1.3.6: ตอนนี้มุมมองของข้อมูลโค้ดได้รับการตั้งค่าเป็น GONE อย่างถูกต้องแล้วเมื่อใช้ hide() เมื่อมุมมองรูทมีการตั้งค่า transitionGroup=”true” (aosp/1766655, b/193603427)
  • จาก Fragment 1.3.6: ตอนนี้ FragmentActivity จะปลดล็อกสถานะที่บันทึกไว้เสมอเป็นการดำเนินการแรกในวงจร callbacks ที่ลบล้าง (I6db7a)

การอัปเดตทรัพยากรที่เกี่ยวข้อง

เวอร์ชัน 1.4.0-alpha04

30 มิถุนายน 2021

androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 และ androidx.fragment:fragment-testing:1.4.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha04 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ FragmentManager ใช้ SavedStateRegistry ในการบันทึกสถานะ นอกจากนี้ เรายังได้เลิกใช้งานเมธอด saveAllState() และ restoreSavedState() ใน FragmentController ด้วย หากคุณใช้ FragmentController เพื่อโฮสต์ข้อมูลโค้ดที่ตัดตอนไว้นอก FragmentActivity คุณควรติดตั้งใช้งาน FragmentHostCallbacks SavedStateRegistryOwner (Iba68e, b/188734238)

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

  • แก้ไขปัญหาที่การเรียกใช้ saveBackStack() เป็นส่วนหนึ่งของการรองรับแบ็กสแต็กหลายรายการจะดำเนินการไม่สำเร็จเมื่อดำเนินการพร้อมกันกับFragmentTransactionที่ใช้ replace() (I73137)
  • แก้ไข NullPointerException ที่จะเกิดขึ้นหลังจากการกู้คืนกองซ้อนที่บันทึกไว้ซึ่งมีธุรกรรมหลายรายการด้วยตนเองเมื่อใช้ restoreBackStack() API เพื่อรองรับกองซ้อนที่บันทึกไว้หลายรายการ การอัปเดตนี้ยังแก้ไขปัญหาที่ระบบไม่ได้ตรวจสอบ setReorderingAllowed(true) สำหรับธุรกรรมทั้งหมดด้วย (I8c593)
  • แก้ปัญหาที่ FragmentManager จะยังคงกู้คืนสถานะของเศษที่บันทึกไว้ก่อนหน้านี้อย่างไม่ถูกต้องแม้ว่าจะมีการนำเศษเหล่านั้นออกจาก FragmentManager แล้วก็ตาม ซึ่งทำให้สถานะที่บันทึกไว้มีขนาดใหญ่ขึ้นเรื่อยๆ (I1fb8e)

เวอร์ชัน 1.4.0-alpha03

16 มิถุนายน 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 และ androidx.fragment:fragment-testing:1.4.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • คลาส StrictMode Violation ของ FRGMENT ทั้งหมดได้รับการอัปเดตด้วยข้อความแสดงข้อผิดพลาดที่ละเอียดยิ่งขึ้นซึ่งอธิบายรายละเอียดของการละเมิด (b/187871638)
    • ตอนนี้ FragmentTagUsageViolation มีข้อความแสดงข้อผิดพลาดที่ละเอียดยิ่งขึ้นซึ่งบรรจุคอนเทนเนอร์หลักที่ควรจะเพิ่มข้อมูลโค้ดเข้าไป (Ic33a7)
    • ตอนนี้ WrongFragmentContainerViolation มีข้อความแสดงข้อผิดพลาดที่ละเอียดมากขึ้น ซึ่งรวมถึงคอนเทนเนอร์ที่เพิ่มข้อมูลดังกล่าว (Ib55f8)
    • ตอนนี้คลาส Use Case สำหรับ TargetFragmentUsageViolation มีข้อความแสดงข้อผิดพลาดที่ละเอียดยิ่งขึ้นเพื่อรวมข้อมูลโค้ดที่ทำให้เกิดละเมิดและข้อมูลอื่นๆ ที่มี (Icc6ac)
    • ตอนนี้คลาสที่ขยาย RetainInstanceUsageViolation จะมีข้อความแสดงข้อผิดพลาดโดยละเอียดมากขึ้น ซึ่งรวมถึงข้อมูลโค้ดที่ทำให้เกิดข้อละเมิด (I6bd55)
    • ตอนนี้ FragmentReuseViolation มีข้อความแสดงข้อผิดพลาดที่ละเอียดยิ่งขึ้นซึ่งมีรหัสก่อนหน้าของข้อมูลโค้ด (I28ce2)
    • ตอนนี้ SetUserVisibleHintViolation มีข้อความแสดงข้อผิดพลาดที่ละเอียดยิ่งขึ้น ซึ่งรวมถึงการตั้งค่าคำแนะนำที่ผู้ใช้มองเห็นได้ (Ib2d5f)

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

  • เปลี่ยนกลับข้อจำกัดในการเรียกใช้ fitsSystemWindows ใน FragmentContainerView ซึ่งจะไม่ทำให้แอปขัดข้องอีกต่อไป (6b8ddd, b/190622202)

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

  • จาก Fragment 1.3.5: แก้ไขการถดถอยขององค์ประกอบแบบใช้ร่วมกันในการเปลี่ยนภาพซึ่งเปิดตัวใน Fragment 1.3.4 โดย aosp/1679887 ตอนนี้กลุ่มการเปลี่ยนฉากจะจัดการอย่างถูกต้อง (ตั้งค่าโดยตรงผ่าน transitionGroup="true" หรือโดยอ้อมผ่าน transitionName หรือ background) และองค์ประกอบที่แชร์จะไม่แสดง IndexOutOfBoundsException อีกต่อไป (I16484, b/188679569, b/188969304)
  • FragmentManager จะไม่ขัดข้องอีกต่อไปเมื่อคุณพยายามซ่อนส่วนที่กำลังจะนําออก (I573dd, b/183634730)
  • OnCreateDialogIncorrectCallback การตรวจสอบโปรแกรมแก้ไขโค้ดจะไม่ขัดข้องอีกต่อไปเมื่อประเมินตัวแปรระดับบนสุด (0a9efa, b/189967522)

เวอร์ชัน 1.4.0-alpha02

2 มิถุนายน 2021

androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 และ androidx.fragment:fragment-testing:1.4.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentStrictMode จะบันทึกการละเมิดทุกครั้งที่เปิดใช้การบันทึกผ่าน FragmentManager ไม่ว่าจะใช้นโยบายโหมดเข้มงวดใดอยู่ก็ตาม (I02df6, b/187872638)
  • FragmentStrictMode รองรับการยกเว้นFragmentบางชั้นเรียนจากViolationโหมดที่เข้มงวดแล้ว ซึ่งจะช่วยให้ชั้นเรียนนั้นไม่ต้องรับโทษ (Ib4e5d, b/184786736)

  • เราได้ขยายคลาส FragmentStrictMode Violation เพื่อเพิ่มข้อมูลโครงสร้างตามการละเมิดแต่ละรายการ ซึ่งจะช่วยให้คุณยืนยันได้อย่างแน่ชัดว่าอะไรเป็นสาเหตุของการละเมิด รวมถึงดูข้อมูลเกี่ยวกับส่วนที่ละเมิด (If5118, b/187871150) แต่ละ Violation มีข้อมูลต่อไปนี้

    • ตอนนี้ WrongFragmentContainerViolation มี ViewGroup ที่ Fragment พยายามเพิ่ม (I83c75, b/187871150)
    • TargetFragmentUsageViolation ได้รับการขยายเป็น SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation และ GetTargetFragmentRequestCodeUsageViolation โดย SetTargetFragmentUsageViolation มีข้อมูลโค้ดคำขอและข้อมูลโค้ดเป้าหมาย (I741b4, b/187871150)
    • ตอนนี้ SetUserVisibleHintViolation จะมีค่าบูลีนที่ส่งไปยัง setUserVisibleHint() (I00585, b/187871150)
    • ตอนนี้ FragmentTagUsageViolation มี ViewGroup ที่แท็ก <fragment> พยายามขยายส่วนย่อย (I5dbbc, b/187871150)
    • ตอนนี้ FragmentReuseViolation มีรหัสที่ไม่ซ้ำกันของอินสแตนซ์ก่อนหน้าของ Fragment ที่ทำให้เกิดการละเมิด (I0544d, b/187871150)
    • ตอนนี้ RetainInstanceUsageViolation จึงเป็นคลาส抽象และมีคลาสย่อย 2 คลาส ได้แก่ SetRetainInstanceUsageViolation และ GetRetainInstanceUsageViolation ซึ่งแสดงถึง 2 กรณีของประเภทการละเมิด (Ic81e5, b/187871150)

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

  • ตอนนี้ FragmentContainerView จะแสดงข้อยกเว้นเมื่อพยายามเปลี่ยนแอตทริบิวต์ fitsSystemWindow โดยใช้โปรแกรมหรือผ่าน XML มุมมองของแต่ละรายการควรจัดการส่วนแทรก (Ie6651, b/187304502)

เวอร์ชัน 1.4.0-alpha01

18 พฤษภาคม 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 และ androidx.fragment:fragment-testing:1.4.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.4.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentContainerView มีเมธอด getFragment() ซึ่งจะแสดงผลข้อมูลโค้ดที่เพิ่มลงในคอนเทนเนอร์ล่าสุด ซึ่งใช้ตรรกะเดียวกับ findFragmentById() ที่มีรหัสของ FragmentContainerView แต่อนุญาตให้ใช้การเรียกต่อกันได้ (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • เพิ่มตัวเลือก FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} เพื่อระบุว่าจะเปิดใช้ภาพเคลื่อนไหวการเปลี่ยนกิจกรรมมาตรฐานที่นำมาจากธีมของคุณในการเปลี่ยนเฟรมหรือไม่ (I46652)

กองซ้อนที่ย้อนกลับหลายกอง

FragmentManager จะเก็บกองซ้อนด้านหลังซึ่งประกอบด้วยธุรกรรมของ FRGMENT ที่ใช้ addToBackStack() ซึ่งจะช่วยให้คุณแสดงธุรกรรมเหล่านั้นและกลับไปยังสถานะก่อนหน้าได้โดยใช้กลไกสำหรับการบันทึกสถานะด้วยข้อมูลโค้ดที่แยกส่วนเพื่อให้ข้อมูลโค้ดที่แยกส่วนกู้คืนสถานะได้อย่างเหมาะสม

เวอร์ชันนี้ขยายการทำงานเหล่านี้ด้วย FragmentManager API ใหม่ 2 รายการ ได้แก่ saveBackStack(String name) และ restoreBackStack(String name) API เหล่านี้ใช้ name เดียวกันกับ addToBackStack() เพื่อบันทึกสถานะของ FragmentTransaction และสถานะของทุกรายการที่เพิ่มในธุรกรรมเหล่านั้น และช่วยให้คุณกู้คืนธุรกรรมและรายการเหล่านั้นได้ในภายหลังโดยที่สถานะยังคงเดิม ซึ่งจะช่วยให้คุณ "สลับ" ระหว่างกองซ้อนย้อนกลับหลายกองได้อย่างมีประสิทธิภาพโดยการบันทึกกองซ้อนย้อนกลับปัจจุบันและกู้คืนกองซ้อนย้อนกลับที่บันทึกไว้

saveBackStack() ทำงานคล้ายกับ popBackStack() ตรงที่เป็นแบบไม่ประสานเวลาและส่งผลให้ธุรกรรมของข้อมูลโค้ดทั้งหมดกลับไปยังชื่อที่เฉพาะเจาะจงนั้นกลับรายการเดิม ("ยกเลิก") และข้อมูลโค้ดที่เพิ่มเข้ามาจะถูกทำลายและนำออก แต่ก็มีความแตกต่างที่สำคัญ 2-3 อย่างดังนี้

  • saveBackStack() จะรวมอยู่ด้วยเสมอ
  • ซึ่งแตกต่างจาก popBackStack() ที่ระบบจะแสดงธุรกรรม ทั้งหมดในกองซ้อนด้านหลังหากไม่พบชื่อที่ระบุในกองซ้อนด้านหลัง หรือหากระบุชื่อเป็นค่าว่าง saveBackStack() จะไม่ทําการใดๆ หากคุณยังไม่ได้ทําธุรกรรมของข้อมูลโค้ดที่แยกส่วนโดยใช้ addToBackStack() ด้วยชื่อที่ตรงกันทุกประการและไม่ใช่ค่าว่าง
  • ระบบจะบันทึกสถานะของเศษทั้งหมดที่เพิ่มจากธุรกรรมเหล่านั้น ซึ่งหมายความว่าระบบจะจัดเก็บสถานะมุมมองของทุกรายการย่อย เรียก onSaveInstanceState() ของทุกรายการย่อย และกู้คืนสถานะนั้น รวมถึงเก็บอินสแตนซ์ ViewModel ที่เชื่อมโยงกับรายการย่อยเหล่านั้นไว้ (และไม่เรียก onCleared() กับรายการย่อยเหล่านั้น)

ธุรกรรมที่เป็นส่วนซึ่งใช้ได้กับ saveBackStack() ต้องเป็นไปตามเกณฑ์ต่อไปนี้

  • ธุรกรรมของข้อมูลโค้ดทุกรายการต้องใช้ setReorderingAllowed(true) เพื่อให้มั่นใจว่าระบบจะกู้คืนธุรกรรมเป็นการดำเนินการแบบอะตอมเดียวได้
  • ชุดธุรกรรมที่บันทึกไว้ต้องสมบูรณ์ในตัว (กล่าวคือ ต้องไม่อ้างอิงถึงข้อมูลโค้ดภายนอกชุดธุรกรรมนั้นอย่างชัดเจน) เพื่อให้มั่นใจว่าสามารถกู้คืนชุดธุรกรรมดังกล่าวได้ในภายหลัง ไม่ว่าจะมีการเปลี่ยนแปลงใดๆ กับกองซ้อนด้านหลังในช่วงเวลาดังกล่าว
  • รายการที่บันทึกไว้ต้องไม่ใช่รายการที่เก็บรักษาไว้หรือมีรายการที่เก็บรักษาไว้ในชุดรายการย่อยแบบเปลี่ยนผ่าน เพื่อให้แน่ใจว่า FragmentManager จะไม่แสดงการอ้างอิงถึงรายการที่บันทึกไว้หลังจากบันทึกกองซ้อนที่ย้อนกลับแล้ว

เช่นเดียวกับ saveBackStack() restoreBackStack() จะไม่ทําอะไรเลยหากคุณไม่เคยเรียกใช้ saveBackStack() ด้วยชื่อเดียวกันมาก่อน (b/80029773)

Fragment StrictMode

FragmentStrictMode API มีการตรวจสอบรันไทม์ที่ช่วยให้คุณยืนยันว่าแอปหรือไลบรารีที่คุณใช้ไม่ได้เรียกใช้ API ของข้อมูลโค้ดที่เลิกใช้งาน เมื่อตรวจพบการละเมิด คุณจะเลือกพิมพ์ข้อความบันทึก เรียกใช้โปรแกรมฟังที่กำหนดเอง หรือทำให้แอปขัดข้องก็ได้ คุณสามารถตั้งค่า FragmentStrictMode.Policy ที่ควบคุมการตรวจสอบที่จะเปิดใช้และ "บทลงโทษ" ที่เรียกให้แสดงใน FragmentManager ผ่านเมธอด setStrictModePolicy() ใหม่ นโยบายดังกล่าวจะมีผลกับ FragmentManager นั้นและมีผลต่อตัวจัดการข้อมูลโค้ดย่อยย่อยที่ไม่ได้ตั้งค่านโยบายของตนเอง (#123, #131, #150, b/143774122)

  • detectFragmentReuse() ตรวจพบว่ามีการเพิ่มอินสแตนซ์ Fragment ที่ถูกนำออกก่อนหน้านี้ลงใน FragmentManager อีกครั้งหรือไม่ คุณไม่ควรโต้ตอบหรือเก็บการอ้างอิงอินสแตนซ์ Fragment ไว้หลังจากที่อินสแตนซ์ถูกทำลายและนำออกจาก FragmentManager แล้ว (#142, b/153738653)
  • detectFragmentTagUsage() จะตรวจจับเมื่อคุณใช้แท็ก <fragment> ใน XML เลย์เอาต์ คุณควรใช้ FragmentContainerView เสมอเมื่อสร้างองค์ประกอบย่อยเป็นส่วนหนึ่งของเลย์เอาต์ (#141, b/153738235)
  • detectWrongFragmentContainer() จะตรวจจับเมื่อคุณเพิ่มข้อมูลโค้ดไปยังคอนเทนเนอร์ที่ไม่ใช่ FragmentContainerView คุณควรใช้ FragmentContainerView เป็นคอนเทนเนอร์สำหรับชิ้นส่วนในเลย์เอาต์เสมอ (#146, b/181137036)
  • detectRetainInstanceUsage() จะตรวจจับเมื่อคุณใช้ API setRetainInstance() หรือ getRetainInstance() ที่เลิกใช้งานแล้ว (#140, b/153737954)
  • detectSetUserVisibleHint() จะตรวจจับเมื่อคุณใช้ setUserVisibleHint() API ที่เลิกใช้งานแล้ว (#136, b/153738974)
  • detectTargetFragmentUsage() จะตรวจจับเมื่อคุณใช้ API setTargetFragment(), getTargetFragment() หรือ getTargetRequestCode() ที่เลิกใช้งานแล้ว (#139, b/153737745)

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

  • ระบบได้นำ API เวอร์ชันทดลองของ FragmentManager.enableNewStateManager(boolean) ออกแล้ว และตัวจัดการสถานะใหม่เป็นตัวเลือกเดียวที่ใช้ได้ (I90036, b/162776418)
  • ตอนนี้ FragmentScenario ใช้ Closeable แล้ว ซึ่งจะช่วยให้คุณใช้กับเมธอด use หรือ try-with-resources ของ Kotlin ได้ (#121, b/143774122)

การตรวจสอบ Lint ใหม่

  • ตอนนี้การตรวจสอบ Lint ของ UseGetLayoutInflater จะเตือนเมื่อใช้ LayoutInflater.from(Context) ภายใน DialogFragment คุณควรใช้เมธอด getLayoutInflater() ของส่วนข้อความโต้ตอบเสมอเพื่อให้ได้ค่าที่เหมาะสมสำหรับ LayoutInflater (#156, b/170781346)
  • ตอนนี้การตรวจสอบ Lint ของ DialogFragmentCallbacksDetector จะเตือนเมื่อเรียกใช้ setOnCancelListener หรือ setOnDismissListener ในเมธอด onCreateDialog() ของ DialogFragment เนื่องจาก DialogFragment เป็นเจ้าของ Listeners เหล่านี้ และคุณควรลบล้าง onCancel() และ onDismiss() เพื่อรับการเรียกกลับเหล่านี้ (#171, b/181780047, b/187524311)

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

  • จาก Fragment 1.3.4: แก้ไขการถดถอยที่เกิดขึ้นใน Fragment 1.3.3 เมื่อใช้ ViewTreeViewModelStoreOwner.get() API กับ ViewModelProvider หรือเมธอด Jetpack Compose ของ viewModel() ภายใน Fragment ตอนนี้ Use Case เหล่านี้ใช้ ViewModelProvider.Factory ที่ได้จาก Fragment ของคุณอย่างถูกต้องแล้ว หากมีการลบล้าง getDefaultViewModelProviderFactory() (เช่นเดียวกับที่ Fragment ที่มีคําอธิบายประกอบ @AndroidEntryPoint ทําเมื่อใช้ Hilt) หากคุณไม่ได้ลบล้างเมธอดดังกล่าว ระบบจะสร้าง SavedStateViewModelFactory ที่บันทึกและคืนค่าสถานะพร้อมกับมุมมองของ Fregment นั้นเป็นโรงงานเริ่มต้น (I5cbfa, b/186097368)
  • จาก Fragment 1.3.4: เมื่อใช้ FragmentContainerView ใน API 29 ระบบจะไม่ส่งคำสั่งให้แสดงข้อมูลแทรกแบบไม่มีกำหนดอีกต่อไป เพื่อแก้ไขปัญหาเกี่ยวกับอินสแตนซ์ BottomNavigationBar และ FloatingActionButton (I1bb78, b/186012452)
  • จาก Fragment 1.3.4: ตอนนี้คุณดึงข้อมูล Parcelable ออกจากกลุ่มผลลัพธ์ของฟร็กเมนต์ได้หลังจากที่กระบวนการสิ้นสุดลง (I65932, b/187443158)
  • จาก Fragment 1.3.4: เมื่อทำการเปลี่ยนองค์ประกอบที่แชร์ใน ViewGroup หาก ViewGroup มีการตั้งค่า transitionGroup เป็นเท็จ ตอนนี้การเปลี่ยนจะทำงานอย่างถูกต้อง (I99675)

การมีส่วนร่วมจากภายนอก

เวอร์ชัน 1.3

เวอร์ชัน 1.3.6

21 กรกฎาคม 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 และ androidx.fragment:fragment-testing:1.3.6 เผยแพร่แล้ว เวอร์ชัน 1.3.6 มีคอมมิตเหล่านี้

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

  • จากส่วน 1.4.0-alpha03: FragmentManager จะไม่ขัดข้องอีกต่อไปเมื่อคุณพยายามซ่อนส่วนที่กำลังจะนําออก (I573dd, b/183634730)
  • ตอนนี้มุมมองของแฟรกเมนต์ได้รับการตั้งค่าเป็น GONE อย่างถูกต้องแล้วเมื่อใช้ hide() เมื่อมุมมองรูทมีการตั้งค่า transitionGroup=”true” (aosp/1766655, b/193603427)
  • ตอนนี้ FragmentActivity จะปลดล็อกสถานะที่บันทึกไว้เสมอเป็นการดำเนินการแรกในวงจรชีวิตของการเรียกกลับที่ลบล้าง (I6db7a)

การอัปเดตทรัพยากรที่เกี่ยวข้อง

เวอร์ชัน 1.3.5

16 มิถุนายน 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 และ androidx.fragment:fragment-testing:1.3.5 เผยแพร่แล้ว เวอร์ชัน 1.3.5 มีคอมมิตเหล่านี้

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

  • แก้ไขการถดถอยขององค์ประกอบแบบใช้ร่วมกันในการเปลี่ยนภาพซึ่งเปิดตัวใน Fragment 1.3.4 โดย aosp/1679887 ตอนนี้กลุ่มการเปลี่ยนฉากจะจัดการอย่างถูกต้อง (ตั้งค่าโดยตรงผ่าน transitionGroup="true" หรือโดยอ้อมผ่าน transitionName หรือ background) และองค์ประกอบที่แชร์จะไม่แสดง IndexOutOfBoundsException อีกต่อไป (I16484, b/188679569, b/188969304)

เวอร์ชัน 1.3.4

18 พฤษภาคม 2021

androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 และ androidx.fragment:fragment-testing:1.3.4 เผยแพร่แล้ว เวอร์ชัน 1.3.4 มีการคอมมิตเหล่านี้

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

  • แก้ไขการถดถอยที่เกิดขึ้นใน Fragment 1.3.3 เมื่อใช้ ViewTreeViewModelStoreOwner.get() API กับ ViewModelProvider หรือเมธอด Jetpack Compose ของ viewModel() ภายใน Fragment เมื่อใช้ Hilt ตอนนี้ Use Case เหล่านี้ใช้ ViewModelProvider.Factory ที่ได้จากฟragment ของคุณอย่างถูกต้องแล้ว หากมีการลบล้าง getDefaultViewModelProviderFactory() (เช่นเดียวกับที่ @AndroidEntryPoint ที่ใช้คำอธิบายประกอบทำ) หากคุณไม่ได้ลบล้างเมธอดดังกล่าว ระบบจะสร้าง SavedStateViewModelFactory ที่บันทึกและคืนค่าสถานะพร้อมกับมุมมองของ Fregment นั้นเป็นโรงงานเริ่มต้น (I5cbfa, b/186097368)
  • เมื่อใช้ FragmentContainerView ใน API 29 ข้อความย่อยจะไม่ส่งไปอย่างไม่มีกำหนดอีกต่อไป เพื่อแก้ไขปัญหาเกี่ยวกับอินสแตนซ์ BottomNavigationBar และ FloatingActionButton (I1bb78, b/186012452)
  • ตอนนี้คุณดึงข้อมูล Parcelable ออกจากกลุ่มผลลัพธ์ของ Fragment ได้หลังจากที่กระบวนการสิ้นสุดลง (I65932, b/187443158)
  • เมื่อทำการเปลี่ยนองค์ประกอบที่แชร์ใน ViewGroup หาก ViewGroup มีการตั้งค่า transitionGroup เป็นเท็จ ตอนนี้การเปลี่ยนจะดำเนินการอย่างถูกต้อง (I99675)

เวอร์ชัน 1.3.3

21 เมษายน 2021

androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 และ androidx.fragment:fragment-testing:1.3.3 เผยแพร่แล้ว เวอร์ชัน 1.3.3 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้การใช้ SavedStateViewModelFactory ใช้งานได้แล้วเมื่อใช้กับ SavedStateRegistryOwner ที่แสดงผลโดยการใช้ ViewTreeSavedStateRegistryOwner.get() กับมุมมองของข้อมูลโค้ด (I21acf, b/181577191)

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

  • แก้ไขการถดถอยที่เกิดขึ้นในข้อมูลโค้ด 1.3.2 ซึ่งจะทำให้ภาพเคลื่อนไหว popEnter ไม่ทำงานเมื่อแสดง FragmentTransaction ที่มีการดำเนินการ setPrimaryNavFragment เช่น การดำเนินการที่ใช้โดย NavHostFragment (I38c87, b/183877426)
  • ตอนนี้ FragmentContainerView จะตรวจสอบว่า Fragment ทุกรายการได้รับการส่ง WindowInsets ชุดใหม่ เพื่อให้แต่ละกลุ่มใช้ส่วนแทรกได้อย่างอิสระ (I63f68, b/172153900)
  • ตอนนี้ DialogFragment จะจัดการกรณีที่เพิ่มข้อมูลโค้ดย่อยลงในคอนเทนเนอร์ที่มีรหัสเดียวกับคอนเทนเนอร์ในคลาส Dialog ที่กําหนดเองอย่างถูกต้อง ซึ่งจะแก้ไขปัญหาลําดับชั้นของมุมมองเมื่อนํารหัสที่ใช้ภายในโดยกล่องโต้ตอบ เช่น BottomSheetDialog มาใช้ซ้ำ (Ie6279, b/180021387)
  • FragmentManager.dump() ตอนนี้เยื้องข้อมูลโค้ดแรกของรายการข้อมูลโค้ดที่ใช้งานอยู่อย่างเหมาะสม (If5c33, b/183705451)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • ตอนนี้ตัวจัดการสถานะใหม่ของข้อมูลโค้ดที่ฝังจะจัดการการเปลี่ยนสถานะออกด้วยการดำเนินการซ่อนอย่างถูกต้อง (I9e4de, b/184830265)

เวอร์ชัน 1.3.2

24 มีนาคม 2021

androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 และ androidx.fragment:fragment-testing:1.3.2 เผยแพร่แล้ว เวอร์ชัน 1.3.2 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • เมื่อเรียกใช้ทั้งการดำเนินการ popBackStack() และ commit() ร่วมกัน ตอนนี้การดำเนินการล่าสุดจะเป็นการกำหนดทิศทางให้กับภาพเคลื่อนไหวทั้งหมดแทนที่จะเรียกใช้ภาพเคลื่อนไหวป๊อปและภาพเคลื่อนไหวเข้าสู่หน้าจอบางส่วน (I7072e, b/181142246)
  • มุมมองภายในลําดับชั้นขององค์ประกอบที่แชร์จะไม่มีการล้างชื่อการเปลี่ยนภาพอีกต่อไปเมื่อทําการเปลี่ยนภาพองค์ประกอบที่แชร์ (I4d4a6, b/179934757)

การอัปเดตทรัพยากร Dependency

  • ตอนนี้ Fragment ขึ้นอยู่กับ Activity 1.2.2 ซึ่งจะแก้ไขปัญหาเกี่ยวกับInvalidFragmentVersionForActivityResultการตรวจสอบ Lint ของ Activity เมื่อใช้ Fragment 1.3.1 ขึ้นไป
  • ตอนนี้ Fragment ขึ้นอยู่กับ Lifecycle 2.3.1

เวอร์ชัน 1.3.1

10 มีนาคม 2021

androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 และ androidx.fragment:fragment-testing:1.3.1 เผยแพร่แล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้กล่องโต้ตอบภายใน DialogFragment สามารถเข้าถึงเจ้าของ ViewTree ได้ผ่าน DecorView เพื่อให้ใช้ DialogFragment กับ ComposeView ได้ (Ib9290, b/180691023)

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

  • ตอนนี้ รายการที่ขยายลงในกิจกรรม RESUMED ที่ใช้ FragmentContainerView จะแสดงอย่างถูกต้องหลังจากการเปลี่ยนแปลงการกําหนดค่าแล้ว (Ie14c8, b/180538371)
  • ไม่มี } เกินมาอีกต่อไปที่ส่วนท้ายของข้อมูลโค้ดชิ้น toString() (I54705, b/177761088)
  • ตอนนี้เมธอดที่ลบล้างใน FragmentActivity จะรับค่าจาก javaDoc ของเมธอดพื้นฐานอย่างถูกต้องแล้ว (I736ce, b/139548782)
  • เอกสารของ setFragmentResult และ setFragmentResultListener ได้อัปเดตเอกสารพารามิเตอร์เพื่อระบุว่าไม่ยอมรับค่า Null อีกต่อไป (I990ba, b/178348386)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • แก้ไขหน่วยความจํารั่วไหลในรายการที่เกิดจาก mFocusedView (Ib4e9e, b/179925887)
  • ตอนนี้ Fragment จะเรียก onCreateOptionsMenu อย่างถูกต้องแล้วเมื่อใช้ แสดง/ซ่อนธุรกรรม (I8bce8, b/180255554)
  • ตอนนี้ Fragment ย่อยที่มีการเปลี่ยนซึ่งเริ่มขึ้นก่อนที่จะวางส่วนย่อยอย่างถูกต้องจะไปถึง RESUMED (Ic11e6, b/180825150) ได้อย่างเหมาะสม
  • ตอนนี้ รายการที่ขยายโดยใช้แท็ก <fragment> จะเข้าสู่ RESUMED (I452ac, (I9fa49) เสมอ

การอัปเดตทรัพยากร Dependency

เวอร์ชัน 1.3.0

10 กุมภาพันธ์ 2021

androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 และ androidx.fragment:fragment-testing:1.3.0 เผยแพร่แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้

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

  • ตัวจัดการสถานะใหม่: การเขียนโค้ดภายในของ FragmentManager ใหม่อย่างสำคัญช่วยแก้ไขปัญหาต่างๆ มากมายเกี่ยวกับการส่งเหตุการณ์วงจรชีวิต ภาพเคลื่อนไหว และการเปลี่ยนผ่าน รวมถึงวิธีจัดการกับส่วนที่เลื่อนเวลา
  • การผสานรวม Activity Result API: เพิ่มการรองรับ ActivityResultRegistry API ที่เปิดตัวใน Activity 1.2.0 เพื่อจัดการโฟลว์ startActivityForResult()+onActivityResult() และ requestPermissions()+onRequestPermissionsResult() โดยไม่ต้องลบล้างเมธอดในฟragment นอกเหนือจากการระบุฮุกสําหรับการทดสอบโฟลว์เหล่านี้ ดูการรับผลลัพธ์จากกิจกรรมที่อัปเดตแล้ว

    • เวอร์ชันนี้แก้ไขปัญหาเกี่ยวกับรหัสคำขอที่ไม่ถูกต้องและการส่งคำขอสิทธิ์ซึ่งทำให้ Activity Result API ไม่ทำงานใน FragmentActivity เวอร์ชันก่อนหน้า คุณต้องอัปเกรดเป็น 1.3.0 เพื่อใช้ Activity Result API ใน FragmentActivity หรือ AppCompatActivity
  • Fragment Result API: เพิ่มการรองรับการส่งผลลัพธ์ระหว่าง 2 รายการผ่าน API ใหม่ใน FragmentManager ซึ่งใช้ได้กับ Fragment ลําดับชั้น (หลัก/ย่อย), DialogFragment และ Fragment ในการนําทาง และช่วยให้มั่นใจว่าระบบจะส่งผลลัพธ์ไปยัง Fragment ของคุณเมื่อ Fragment นั้นมีค่าอย่างน้อย STARTED เราเลิกใช้งาน API ของกลุ่มเป้าหมายแล้วเพื่อหันมาใช้ API ใหม่เหล่านี้ ดูหัวข้อรับผลลัพธ์โดยใช้ Fragment Result API

  • FragmentOnAttachListener: เลิกใช้งาน Callback onAttachFragment() ใน FragmentActivity และ Fragment แล้ว เราได้เพิ่ม FragmentOnAttachListener ใหม่เพื่อให้เป็นทางเลือกที่ยืดหยุ่นมากขึ้น ซึ่งช่วยให้สามารถมอบสิทธิ์ onAttachFragment() ให้กับ Listener ที่แยกต่างหากและทดสอบได้ รวมถึงรองรับการเพิ่ม Listener ไปยัง FragmentManager อื่นนอกเหนือจาก FragmentManager ย่อยโดยตรง

  • การปรับปรุง FragmentScenario: คลาส FragmentScenario จากอาร์ติแฟกต์ fragment-testing ได้รับการเขียนใหม่เป็น Kotlin และได้รับการปรับปรุงหลายประการ ดังนี้

    • ตอนนี้ FragmentScenario ใช้ setMaxLifecycle() เพื่อติดตั้งใช้งาน moveToState() ซึ่งช่วยให้มีการทำงานที่สอดคล้องกันใน API ทุกระดับและแยกสถานะของ Fregment ออกจากกิจกรรมที่อยู่เบื้องหลัง
    • ตอนนี้ FragmentScenario รองรับการตั้งค่า Lifecycle.State เริ่มต้นเพื่อรองรับการยืนยันสถานะของข้อมูลโค้ดก่อนที่จะไปยัง Lifecycle.State แต่ละรายการเป็นครั้งแรก
    • ตอนนี้มีทางเลือกอื่นสำหรับ FragmentScenario API ของ onFragment ในรูปแบบเมธอดส่วนขยายที่แปลงเป็นวัตถุจริงของ Kotlin withFragment ซึ่งช่วยให้คุณแสดงผลค่าได้ สิ่งที่น่าสังเกตคือ การดำเนินการนี้จะโยนข้อยกเว้นที่ยกขึ้นในบล็อกที่ระบุอีกครั้ง
  • ViewTree การรองรับ: ตอนนี้ Fragment รองรับ ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View) และ ViewTreeSavedStateRegistryOwner API ที่เพิ่มไว้ใน Lifecycle 2.3.0 และ SavedState 1.1.0 เพื่อให้แสดงผล Fragment เป็น ViewModelStoreOwner และ SavedStateRegistryOwner และ LifecycleOwner ที่เชื่อมโยงกับวงจรชีวิตของมุมมองของ Fragment เมื่อใช้ View ภายใน Fragment

  • การเปลี่ยนแปลงภาพเคลื่อนไหว TRANSIT_: ตอนนี้เอฟเฟกต์เริ่มต้นของข้อมูลโค้ด TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE และ TRANSIT_FRAGMENT_FADE ใช้ Animator แทน Animation แล้ว ขณะนี้ทรัพยากรที่ใช้สร้างภาพเคลื่อนไหวเหล่านี้เป็นทรัพยากรส่วนตัว

  • การเลิกใช้งาน setRetainInstance(): เราเลิกใช้งานเมธอด setRetainInstance() ในฟragments แล้ว เมื่อมีViewModel นักพัฒนาแอปจะมี API ที่เฉพาะเจาะจงสำหรับการเก็บสถานะที่เชื่อมโยงกับกิจกรรม ฟragment และกราฟการนําทาง วิธีนี้ช่วยให้นักพัฒนาซอฟต์แวร์ใช้ ViewModel ปกติที่ไม่ได้เก็บรักษาไว้ได้ และแยกสถานะที่เฉพาะเจาะจงที่ต้องการเก็บรักษาไว้ หลีกเลี่ยงแหล่งที่มาที่พบบ่อยของการรั่วไหล และรักษาพร็อพเพอร์ตี้ที่มีประโยชน์ของการสร้างและการทำลายสถานะที่เก็บรักษาไว้เพียงครั้งเดียว (กล่าวคือ ตัวสร้างของ ViewModel และคอลแบ็ก onCleared() ที่ได้รับ)

  • การเลิกใช้งานอะแดปเตอร์ ViewPager 1: เมื่อมีการเปิดตัว ViewPager2 1.0.0 ระบบได้เลิกใช้งานคลาส FragmentPagerAdapter และ FragmentStatePagerAdapter สำหรับการโต้ตอบกับ ViewPager ดูย้ายข้อมูลจาก ViewPager ไปยัง ViewPager2

เวอร์ชัน 1.3.0-rc02

27 มกราคม 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 และ androidx.fragment:fragment-testing:1.3.0-rc02 เผยแพร่แล้ว เวอร์ชัน 1.3.0-rc02 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่ DialogFragment หลักจะปรากฏเหนือ DialogFragment ย่อยหลังจากการเปลี่ยนแปลงการกําหนดค่า ตอนนี้ตอนนี้ เศษส่วนของกล่องโต้ตอบย่อยจะปรากฏเหนือเศษส่วนของกล่องโต้ตอบหลักเสมอ (I30806, b/177439520)
  • แก้ปัญหาที่การดำเนินการ hide ด้วย Animation จะทำให้ส่วนที่ซ่อนอยู่กะพริบในตอนท้ายของภาพเคลื่อนไหว (I57e22, b/175417675)
  • ตอนนี้ Fragment ที่เพิ่มทรานซิชันก่อนที่จะมีการแนบลำดับชั้นการแสดงผลไปถึง RESUMED อย่างถูกต้องแล้ว (I1fc1d, b/177154873)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • ตอนนี้มุมมอง Lifecycle ของข้อมูลโค้ดที่แยกส่วนจะจัดการกรณีที่มุมมองของข้อมูลโค้ดที่แยกส่วนถูกทำลายก่อนที่ Lifecycle จะไปถึง CREATED อย่างเหมาะสม ซึ่งจะช่วยหลีกเลี่ยงข้อยกเว้นที่ระบุว่า "ไม่มีเหตุการณ์ที่มาจาก INITIALIZED" (eda2bd, b/176138645)
  • ตอนนี้ เศษที่ใช้ Animator จะปรากฏตามลําดับที่ถูกต้องเมื่อใช้ FragmentContainerView (Id9aa3, b/176089197)

เวอร์ชัน 1.3.0-rc01

16 ธันวาคม 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 และ androidx.fragment:fragment-testing:1.3.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.3.0-rc01 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ onPrepareOptionsMenu() จะใช้ตรรกะเดียวกับ onCreateOptionsMenu() และจะไม่เรียกใช้อีกต่อไปเมื่อมีการเรียกใช้ setMenuVisibility(false) ในรายการหลัก (Id7de8, b/173203654)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • แก้ไขการรั่วไหลและข้อบกพร่องที่มองเห็นได้เมื่อเพิ่มข้อมูลโค้ดที่มี Animation ลงใน FragmentContainerView แล้วขัดจังหวะการเพิ่มนั้นด้วยการดำเนินการป๊อป (I952d8)
  • แก้ไขปัญหาที่มุมมองของข้อมูลโค้ดจะยังคงอยู่ในลําดับชั้นของมุมมองหากมีการแทนที่ข้อมูลโค้ดนั้นในระหว่างเมธอด onCreate() หรือ onViewCreated() (I8a7d5)
  • ตอนนี้โฟกัสจะได้รับการกู้คืนไปยังมุมมองรูทของ Fragment อย่างถูกต้องเมื่อกลับมาทำงานอีกครั้ง (Ifc84b)
  • ตอนนี้การรวมการดำเนินการป๊อปและแทนที่ในธุรกรรมของรายการเดียวกันจะแสดงภาพเคลื่อนไหวที่เหมาะสมแล้ว (Ifd4e4, b/170328691)

เวอร์ชัน 1.3.0-beta02

2 ธันวาคม 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 และ androidx.fragment:fragment-testing:1.3.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • FragmentScenario ได้แปลงเป็น Kotlin ทั้งหมดแล้วโดยยังคงความเข้ากันได้ของซอร์สโค้ดและไบนารีผ่านการใช้อินเทอร์เฟซแบบฟังก์ชันของ Kotlin 1.4 สำหรับ FragmentAction (I19d31)

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

  • ตอนนี้ FragmentContainerView ที่ไม่ได้ขยายข้อมูลโค้ดของส่วนโดยใช้แอตทริบิวต์ class หรือ android:name สามารถใช้นอก FragmentActivity ได้แล้ว (Id4397, b/172266337)
  • การพยายามตั้งค่าวงจรชีวิตของข้อมูลโค้ดสูงสุดเป็น DESTROYED จะแสดงข้อผิดพลาด IllegalArgumentException (Ie7651, b/170765622)
  • ตอนนี้การเริ่มต้น FragmentScenario ด้วยสถานะ DESTROYED จะแสดงข้อผิดพลาด IllegalArgumentException (I73590, b/170765622)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • แก้ไขปัญหาที่มุมมองจะไม่แสดงผลในสถานะสุดท้ายหากคุณขัดจังหวะการเปลี่ยนเฟรมที่ใช้ Animator หรือตัวเลือก TRANSIT_FRAGMENT_ อย่างใดอย่างหนึ่ง (I92426, b/169874632)
  • แก้ไขปัญหาที่ทำให้ทำลายเศษที่มี Animation อยู่อย่างถูกต้องไม่ได้ (I83d65)
  • ตอนนี้การออกจากกลุ่มที่มีเอฟเฟกต์ย้อนกลับจะยกเลิกและเริ่มใหม่อย่างถูกต้องด้วยเอฟเฟกต์การเข้าที่เหมาะสม (I62226, b/167092035)
  • แก้ไขปัญหาที่ Animator ของ hide() ไม่ทำงาน (Id7ffe)
  • ตอนนี้เศษข้อความจะปรากฏอย่างถูกต้องเมื่อเลื่อนเวลาออกแล้วเริ่มทันที (Ie713b, b/170022857)
  • ข้อมูลโค้ดที่นํามุมมองที่มีโฟกัสออกระหว่างภาพเคลื่อนไหวจะไม่พยายามคืนค่าโฟกัสในมุมมองที่แยกออกอีกต่อไปเมื่อถึง RESUMED (I38c65, b/172925703)

การมีส่วนร่วมจากภายนอก

  • ตอนนี้ FragmentFactory จะแคชคลาสของข้อบังคับแยกกันสำหรับอินสแตนซ์ ClassLoader แต่ละรายการ ขอขอบคุณ Simon Schiller (#87, b/113886460)

เวอร์ชัน 1.3.0-beta01

1 ตุลาคม 2020

androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 และ androidx.fragment:fragment-testing:1.3.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ setMaxLifecycle() รองรับการตั้งค่าสถานะ Lifecycle เป็น INITIALIZING ตราบใดที่ยังไม่ได้ย้ายข้อมูลไปยัง CREATED (b/159662173)

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

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

  • ไฟล์ทรัพยากรของข้อมูลโค้ดได้ตั้งค่าเป็นส่วนตัวอย่างถูกต้องแล้ว (aosp/1425237)

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

  • ตอนนี้ ข้อมูลโค้ดที่ขยายโดยใช้แท็ก <fragment> จะรออย่างถูกต้องจนกว่าระบบจะเพิ่มมุมมองลงในคอนเทนเนอร์ก่อนที่จะเปลี่ยนสถานะเป็น "เริ่มต้นแล้ว" (I02f4c)
  • ตอนนี้เศษที่มองเห็นได้และ setMaxLifecycle() ถึง CREATED จะแสดงเอฟเฟกต์การออกอย่างถูกต้องแล้ว (b/165822335)
  • การนำส่วนที่แยกออกซึ่งไม่ได้เพิ่มลงในกองซ้อนที่ซ้อนกันอยู่ออกจะไม่ทำให้เกิดปัญหาหน่วยความจำรั่วอีกต่อไป ขอขอบคุณ Nicklas Ansman Giertz (b/166489383)
  • ตอนนี้ ข้อมูลโค้ดที่ใช้งานอยู่จะมี FragmentManager ที่ไม่ใช่ค่า Null เสมอ และระบบจะถือว่าข้อมูลโค้ดที่มี FragmentManager ที่ไม่ใช่ค่า Null ใช้งานอยู่เสมอ (aosp/1422346)
  • ตอนนี้เอฟเฟกต์เริ่มต้นของส่วนย่อย TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE และ TRANSIT_FRAGMENT_FADE ใช้ Animator แทน Animation แล้ว (b/166155034)

การแก้ไขข้อบกพร่องของเครื่องมือจัดการสถานะใหม่

  • ตอนนี้ Fragment คืนค่าสถานะโฟกัสมุมมองได้อย่างถูกต้องก่อนเริ่มภาพเคลื่อนไหว (Icc256)
  • ตอนนี้เศษที่มีเฉพาะทรานซิชันองค์ประกอบที่แชร์จะแสดงเอฟเฟกต์พิเศษอย่างถูกต้องแล้ว ซึ่งหมายความว่าเศษจะเปลี่ยนเป็นสถานะสุดท้าย (Iaebc7, b/166658128)
  • ตอนนี้ระบบจะนำมุมมองข้อมูลโค้ดออกจากคอนเทนเนอร์เสมอก่อนที่จะทำลาย (Id5876)
  • ตอนนี้ตัวจัดการสถานะใหม่จะนํามุมมองที่กำลังจะออกออกอย่างสม่ำเสมอก่อนที่จะเพิ่มมุมมองที่กำลังจะเข้า (I41a6e)
  • ตอนนี้ตัวจัดการสถานะใหม่จะพิจารณาการเปลี่ยนแปลงที่ชัดเจนเกี่ยวกับระดับการแชร์ของมุมมองรายการย่อย ซึ่งหมายความว่าหากคุณตั้งค่ามุมมองของกลุ่มที่กำลังจะเข้าสู่หน้าเว็บเป็น INVISIBLE ก่อนเริ่มภาพเคลื่อนไหว ชิ้นส่วนนั้นก็จะยังคงมองไม่เห็น (b/164481490)
  • ตอนนี้ระบบจะจัดลําดับความสําคัญของ Animators เหนือ Animations ซึ่งหมายความว่าข้อมูลโค้ดที่มีทั้ง 2 รายการจะทํางานเฉพาะ Animator และละเว้น Animation (b/167579557)
  • ตัวจัดการสถานะใหม่จะไม่ทําให้ชิ้นส่วนแฟลชอีกต่อไปเมื่อใช้ภาพเคลื่อนไหวของ "เข้าสู่" (b/163084315)

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

เมื่อใช้ตัวจัดการสถานะใหม่ หากคุณกดกลับขณะที่เข้าสู่เอฟเฟกต์พิเศษแทนที่จะกลับไปที่ข้อมูลโค้ดก่อนหน้า ระบบจะไม่เพิ่มข้อมูลโค้ดเก่าอีก ซึ่งส่งผลให้หน้าจอว่างเปล่า (b/167259187, b/167092035, b/168442830)

เวอร์ชัน 1.3.0-alpha08

19 สิงหาคม 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 และ androidx.fragment:fragment-testing:1.3.0-alpha08 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha08 มีการคอมมิตเหล่านี้

New State Manager

เวอร์ชันนี้มีการรีแฟกทอริงการจัดการสถานะภายในของ FragmentManager ครั้งใหญ่ ซึ่งส่งผลต่อการส่งวิธีการของวงจร การเคลื่อนไหว และการเปลี่ยนรูปแบบ รวมถึงวิธีจัดการธุรกรรมที่เลื่อนเวลาไว้ ซึ่งจะเปิดใช้งานโดยค่าเริ่มต้น ดูรายละเอียดเพิ่มเติมได้ที่Fragments: บล็อกโพสต์เกี่ยวกับการสร้าง Internals ขึ้นใหม่ (b/139536619, b/147749580)

  • คุณสามารถใช้ API เวอร์ชันทดลองใน FragmentManager.enableNewStateManager(boolean) เพื่อควบคุมว่า FragmentManager จะใช้ตัวจัดการสถานะใหม่หรือไม่ (I7b6ee)

ปัญหาต่อไปนี้จะได้รับการแก้ไขเมื่อใช้ตัวจัดการสถานะใหม่เท่านั้น

  • ตอนนี้ระบบหยุดการดำเนินการ replace ก่อนหน้าอย่างถูกต้องแล้วก่อนที่จะเริ่มการดำเนินการใหม่ (b/161654580)
  • ตอนนี้ ฟรแอกเมนต์จะป้องกันไม่ให้มีการแสดงภาพเคลื่อนไหวหลายรายการที่แข่งขันกันในฟรแอกเมนต์เดียวกัน ซึ่งจะช่วยหลีกเลี่ยงกรณีที่ Animation จะลบล้างเอฟเฟกต์ Transition ทั้งหมด หรือทั้ง Animator และ Transition ในฟรแอกเมนต์แต่ละรายการจะทำงานพร้อมกัน (b/149569323)
  • ระบบจะเรียกใช้ enterTransition และ exitTranstion ของข้อมูลโค้ดที่ทั้งหมดซึ่งเข้าและออกแทนที่จะเรียกใช้เฉพาะข้อมูลโค้ดที่เข้ามาล่าสุดและข้อมูลโค้ดที่ออกก่อนสุด (b/149344150)
  • ข้อมูลโค้ดที่เลื่อนเวลาไว้จะไม่ติดอยู่ที่สถานะ CREATED อีกต่อไป แต่จะไปอยู่ที่ STARTED กับข้อมูลโค้ดอื่นๆ (b/129035555)
  • แก้ไขปัญหาที่ FragmentManager จะดำเนินการไม่ตามลำดับเมื่อมีการผสมธุรกรรมที่เรียงลำดับใหม่ซึ่งเลื่อนออกไปแล้วกับธุรกรรมที่ไม่ได้เรียงลำดับใหม่ (b/147297731)
  • การปรากฏของหลายข้อความพร้อมกันจะไม่ทําให้ข้อความระดับกลางปรากฏขึ้นชั่วคราวอีกต่อไปเมื่อเลื่อนข้อความ (b/37140383)
  • ตอนนี้ FragmentManager จะแสดงผลข้อมูลโค้ดที่ถูกต้องเมื่อเรียกใช้ findFragmentById() หรือ findFragmentByTag() จากภายในการเรียกกลับ onAttachFragment() (b/153082833)
  • ฟรแอ็กเมนต์จะไม่เรียก onCreateView() ในฟรแอ็กเมนต์ที่กำลังจะทำลายอีกต่อไปเมื่อมีการเลื่อนเวลาการแทนที่ฟรแอ็กเมนต์ (b/143915710)
  • ตอนนี้ข้อความแสดงข้อผิดพลาดเมื่อพยายามรวมอินสแตนซ์เฟรมเวิร์ก Transition กับ AndroidX Transition จะกล่าวถึงส่วนที่เปลี่ยนเฟรมไม่ถูกต้อง (b/155574969)

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

  • ตอนนี้คุณสามารถเรียก launch() ใน ActivityResultLauncher ในเมธอดวงจรชีวิตของ onCreate() ของแฟรกเมนต์ได้แล้ว (b/161464278)
  • ตอนนี้การเรียกใช้ registerForActivityResult() หลัง onCreate() จะแสดงข้อยกเว้นที่ระบุว่าไม่อนุญาต แทนที่จะแสดงผลลัพธ์ไม่สำเร็จโดยไม่มีการแจ้งเตือนหลังจากการเปลี่ยนแปลงการกําหนดค่า (b/162255449)
  • ตอนนี้ FragmentActivity ใช้ OnContextAvailableListener API ที่เปิดตัวในกิจกรรม 1.2.0-alpha08 เพื่อกู้คืนสถานะของ FragmentManager Listener ที่เพิ่มลงในคลาสย่อยของ FragmentActivity จะทำงานหลังจาก Listener นี้ (I513da)

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

  • ระบบจะเคารพ ActivityOptions ที่ส่งผ่านเมื่อใช้ startIntentSenderForResult() (b/162247961)

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

  • เมื่อใช้ตัวจัดการสถานะใหม่ การตั้งค่าระดับการมองเห็นของมุมมองรูทของข้อมูลโค้ดหลังจาก onViewCreated() และก่อน onResume() โดยตรงจะทำให้ FragmentManager ซึ่งควบคุมระดับการมองเห็นของมุมมองรูท ลบล้างระดับการมองเห็นที่คุณตั้งไว้ วิธีแก้ปัญหาคือคุณควรใช้การดำเนินการ hide() และ show() เสมอเพื่อเปลี่ยนระดับการเข้าถึงของข้อมูลโค้ด (b/164481490)

เวอร์ชัน 1.3.0-alpha07

22 กรกฎาคม 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 และ androidx.fragment:fragment-testing:1.3.0-alpha07 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha07 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentScenario รองรับการตั้งค่าสถานะวงจรเริ่มต้นเป็น CREATED, STARTED หรือ RESUMED แทนที่จะย้าย Fragment ไปยังสถานะ RESUMED เสมอ (b/159662750)
  • เพิ่มทางเลือกสำหรับ FragmentScenario API ของ onFragment ในรูปแบบเมธอดการขยายที่แปลงเป็นคลาสของ Kotlin withFragment ซึ่งช่วยให้คุณแสดงผลค่าได้ สิ่งที่น่าสังเกตคือ การดำเนินการนี้จะโยนข้อยกเว้นที่ยกขึ้นในบล็อกที่ระบุอีกครั้ง (b/158697631)

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

  • ตอนนี้ FragmentScenario ใช้ setMaxLifecycle() เพื่อติดตั้งใช้งาน moveToState() เพื่อให้มีการทำงานที่สอดคล้องกันใน API ทุกระดับ และแยกสถานะของ Fregment ออกจากกิจกรรมที่อยู่เบื้องหลัง (b/156527405)
  • ตอนนี้ SavedStateRegistryOwner ที่ ViewTreeSavedStateRegistryOwner แสดงผลจะเชื่อมโยงกับวงจรชีวิตของมุมมองข้อมูลโค้ด วิธีนี้ช่วยให้มั่นใจว่าระบบจะบันทึกสถานะของรายการและกู้คืนสถานะดังกล่าวพร้อมกันกับมุมมองของรายการดังกล่าว (b/158503763)

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

  • ตอนนี้ระบบจะรอให้แนบมุมมองของข้อมูลโค้ดที่ฝังไว้ก่อนที่จะเรียก ViewCompat.requestApplyInsets() เพื่อหลีกเลี่ยงกรณีที่ระบบจะทิ้งคําขอฝัง (b/158095749)
  • การเรียก clearFragmentResultListener จะล้างเครื่องมือตรวจสอบวงจรอย่างถูกต้องแล้ว (b/159274993)

เวอร์ชัน 1.3.0-alpha06

10 มิถุนายน 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 และ androidx.fragment:fragment-testing:1.3.0-alpha06 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha06 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เลิกใช้งาน Callback onAttachFragment() ใน FragmentActivity และ Fragment แล้ว เราได้เพิ่ม FragmentOnAttachListener ใหม่เพื่อใช้เป็นทางเลือกที่มีความยืดหยุ่นมากขึ้น ซึ่งช่วยให้สามารถมอบสิทธิ์ onAttachFragment() ให้กับ Listener ที่แยกต่างหากและทดสอบได้ รวมถึงรองรับการเพิ่ม Listener ไปยัง FragmentManager อื่นนอกเหนือจาก FragmentManager ย่อยโดยตรง (I06d3d)

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

  • ตอนนี้ระบบจะกู้คืนสถานะมุมมองของรายการหลักก่อนรายการย่อย ซึ่งจะช่วยแก้ไขปัญหาการจัดเรียงภาพหลังจากการเปลี่ยนแปลงการกําหนดค่าเมื่อ DialogFragment จะแสดง DialogFragment รายการอื่นเป็นรายการย่อย (b/157195715)
  • แก้ไขปัญหาที่การตรวจสอบ Lint ของ UseRequireInsteadOfGet ไม่จัดการการใช้งานแบบเชนของอ operators ?. และ !! อย่างถูกต้อง (b/157677616)

เวอร์ชัน 1.3.0-alpha05

20 พฤษภาคม 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 และ androidx.fragment:fragment-testing:1.3.0-alpha05 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

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

  • ตอนนี้ setFragmentResult() และ setFragmentResultListener() API จะใช้ Bundle และ FragmentResultListener ที่ไม่ใช่ค่า Null ตามลำดับ หากต้องการล้างผลลัพธ์หรือ Listener ที่กําหนดไว้ก่อนหน้านี้อย่างชัดเจน ให้ใช้เมธอด clearFragmentResult() และ clearFragmentResultListener() ใหม่ (b/155416778)
  • ตอนนี้setFragmentResultListener()ส่วนขยาย Kotlin ที่ใช้ Lambda จะมีเครื่องหมายเป็น inline (b/155323404)

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

  • startActivityForResult(), startIntentSenderForResult() และ requestPermissions ใน Fragment ที่เลิกใช้งานไปก่อนหน้านี้ตอนนี้ใช้ ActivityResultRegistry ภายในแล้ว จึงยกเลิกข้อจํากัดในการใช้เฉพาะบิตที่ต่ำกว่า (ต่ำกว่า 0xFFFF) สําหรับรหัสคําขอเมื่อใช้ API เหล่านั้น (b/155518741)

การอัปเดตเอกสารประกอบ

  • ขยายเอกสารประกอบเกี่ยวกับตัวสร้าง Fragment(@LayoutRes int) และ DialogFragment(@LayoutRes int) เพื่อชี้แจงว่าควรเรียกใช้ตัวสร้างเหล่านี้จากตัวสร้างที่ไม่มีอาร์กิวเมนต์ของคลาสย่อยเมื่อใช้ FragmentFactory เริ่มต้น (b/153042497)

เวอร์ชัน 1.3.0-alpha04

29 เมษายน 2020

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 และ androidx.fragment:fragment-testing:1.3.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการส่งผลลัพธ์ระหว่าง 2 ฟragment ผ่าน API ใหม่ใน FragmentManager ซึ่งใช้ได้กับ Fragment ลําดับชั้น (หลัก/ย่อย), DialogFragment และ Fragment ในการนําทาง และช่วยให้มั่นใจว่าระบบจะส่งผลลัพธ์ไปยัง Fragment ของคุณเมื่อ Fragment นั้นมีค่าอย่างน้อย STARTED (b/149787344)

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

  • เราเลิกใช้งาน API ของกลุ่มเป้าหมายแล้ว หากต้องการส่งข้อมูลระหว่างข้อมูลโค้ดที่แยกส่วน คุณควรใช้ Fragment Result API ใหม่แทน (b/149787344)
  • API startActivityForResult()/onActivityResult() และ requestPermissions()/onRequestPermissionsResult() ใน Federated Learning เลิกใช้งานแล้ว โปรดใช้ Activity Result API (aosp/1290887)
  • การเปลี่ยนแปลงที่สําคัญจากกิจกรรม 1.2.0-alpha04: เปลี่ยนชื่อเมธอด prepareCall() เป็น registerForActivityResult() (aosp/1278717)

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

  • ตอนนี้ getViewLifecycleOwner() ของข้อมูลโค้ดจะหยุดลงก่อนที่จะเรียก onSaveInstanceState() ซึ่งสอดคล้องกับลักษณะการทำงานของวงจรของข้อมูลโค้ด (b/154645875)
  • ตอนนี้การเรียก setMenuVisibility(false) ในข้อมูลโค้ดจะเปลี่ยนการแสดงผลของเมนูที่ข้อมูลโค้ดย่อยระบุอย่างถูกต้อง (b/153593580)
  • แก้ไข illegalStateException เมื่อเพิ่มข้อมูลโค้ดไปยังลําดับชั้นมุมมองของ DialogFragment ด้วย FragmentContainerView (b/154366601)
  • เมธอด getDefaultViewModelProviderFactory() ในรายการจะไม่ขัดข้องอีกต่อไปเมื่อโฮสต์รายการไว้นอกกิจกรรม (b/153762914)

เวอร์ชัน 1.3.0-alpha03

1 เมษายน 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 และ androidx.fragment:fragment-testing:1.3.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้

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

  • ตอนนี้วิธีการ prepareCall ใน Fragment เปลี่ยนเป็น final แล้ว (b/152439361)

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

  • แก้ไขการเกิดปัญหาซ้ำที่เกิดขึ้นในข้อมูลโค้ด 1.3.0-alpha02 เมื่อใช้ BottomSheetDialogFragment (b/151652127, aosp/1263328, aosp/1265163)
  • แก้ไขข้อขัดข้องเมื่อใช้ prepareCall จากข้อมูลโค้ดที่ตัดตอนมาหลังจากการเปลี่ยนแปลงการกําหนดค่า (b/152137004)
  • แก้ไขปัญหาที่ระบบละเว้นองค์ประกอบที่แชร์และทรานซิชันออกเมื่อใช้ setTargetFragment() (b/152023196)
  • จาก Fragment 1.2.4: อัปเดตกฎ ProGuard ของ Fragment เพื่ออนุญาตให้มีการสร้างความสับสนให้กับส่วนที่เก็บไว้ (b/151605338)
  • จากส่วน 1.2.4: ปิดใช้กฎ Lint FragmentLiveDataObserve ในคลาส DialogFragment เนื่องจากวงจรชีวิตของคลาสและวงจรชีวิตของมุมมองจะซิงค์กันเสมอ ทำให้สามารถใช้ this หรือ viewLifecycleOwner ได้อย่างปลอดภัยเมื่อเรียกใช้ observe (b/151765086)

การเปลี่ยนแปลงทรัพยากร Dependency

  • ข้อมูลโค้ดที่ฝังจะขึ้นอยู่กับ กิจกรรม 1.2.0-alpha03 ซึ่งมีการปรับปรุง Activity Result API ที่สำคัญซึ่งเปิดตัวในกิจกรรม 1.2.0-alpha02

เวอร์ชัน 1.3.0-alpha02

18 มีนาคม 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 และ androidx.fragment:fragment-testing:1.3.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับ ActivityResultRegistry API ที่เปิดตัวใน Activity 1.2.0-alpha02 เพื่อจัดการกับโฟลว์ startActivityForResult()+onActivityResult() และ requestPermissions()+onRequestPermissionsResult() โดยไม่ต้องลบล้างเมธอดในฟragment นอกเหนือจากการระบุฮุกสําหรับการทดสอบโฟลว์เหล่านี้ ดูการรับผลลัพธ์จากกิจกรรมที่อัปเดตแล้ว (b/125158199)

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

  • ตอนนี้ DialogFragment มีคอนสตรคเตอร์ที่ใช้ @LayoutRes ซึ่งระบุเลย์เอาต์ที่ onCreateView() ควรขยายโดยค่าเริ่มต้น (b/150327080)
  • เลิกใช้งานเมธอด onActivityCreated() แล้ว โค้ดที่ทำงานกับมุมมองของข้อมูลควรอยู่ใน onViewCreated() (ซึ่งเรียกใช้ก่อน onActivityCreated() ทันที) และโค้ดเริ่มต้นอื่นๆ ควรอยู่ใน onCreate() หากต้องการรับการติดต่อกลับโดยเฉพาะเมื่อ onCreate() ของกิจกรรมเสร็จสมบูรณ์ คุณควรลงทะเบียน LifeCycleObserver ใน Lifecycle ของกิจกรรมใน onAttach() และนำออกเมื่อได้รับการติดต่อกลับ onCreate() (b/144309266)

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

  • จากข้อมูลโค้ด 1.2.3: แก้ไขข้อบกพร่องใน DialogFragment ที่ทําให้ StackOverflowError เมื่อเรียก getLayoutInflater() จากภายใน onCreateDialog() (b/117894767, aosp/1258664)
  • จาก Fragment 1.2.3: ลดขอบเขตของกฎ ProGuard ที่รวมไว้ของ Fragment เพื่อให้มั่นใจว่าระบบจะนำคลาส Fragment ที่ไม่ได้ใช้ออกได้ (b/149665169)
  • จากส่วน 1.2.3: แก้ไขการแจ้งเตือนที่ผิดพลาดในการตรวจสอบ Lint ของ UseRequireInsteadOfGet เมื่อใช้ชื่อตัวแปรภายในที่บดบังชื่อพร็อพเพอร์ตี้ Kotlin (b/149891163)
  • จากส่วน 1.2.3: FragmentContainerView จะไม่แสดงข้อผิดพลาด UnsupportedOperationException อีกต่อไปสำหรับการใช้ตัวสร้างที่ไม่ถูกต้องในตัวอย่างเลย์เอาต์ (b/149707833)

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

  • BottomSheetDialogFragment ไม่ได้จัดตำแหน่งกล่องโต้ตอบบนหน้าจออย่างเหมาะสมอีกต่อไป (b/151652127)

เวอร์ชัน 1.3.0-alpha01

4 มีนาคม 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 และ androidx.fragment:fragment-testing:1.3.0-alpha01 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับ ViewTreeLifecycleOwner.get(View) API ที่เพิ่มในวงจร 2.3.0-alpha01 เพื่อให้แสดงผล viewLifecycleOwner ของข้อมูลโค้ดเป็น LifecycleOwner สำหรับมุมมองที่ onCreateView() แสดง (aosp/1182955)

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

  • เลิกใช้งานเมธอด setRetainInstance() ในฟragments แล้ว ViewModel ช่วยให้นักพัฒนาแอปมี API เฉพาะสำหรับการเก็บสถานะที่เชื่อมโยงกับกิจกรรม ฟragment และกราฟการนําทางได้ วิธีนี้ช่วยให้นักพัฒนาซอฟต์แวร์ใช้ ViewModel ปกติที่ไม่ได้เก็บรักษาไว้ได้ และแยกสถานะที่เฉพาะเจาะจงที่ต้องการเก็บรักษาไว้ หลีกเลี่ยงแหล่งที่มาที่พบบ่อยของการรั่วไหล และรักษาพร็อพเพอร์ตี้ที่มีประโยชน์ของการสร้างและการทำลายสถานะที่เก็บรักษาไว้เพียงครั้งเดียว (กล่าวคือ ตัวสร้างของ ViewModel และคอลแบ็ก onCleared() ที่ได้รับ) (b/143911815)
  • เมื่อมีการเปิดตัว ViewPager2 1.0.0 ระบบได้เลิกใช้งานคลาส FragmentPagerAdapter และ FragmentStatePagerAdapter สำหรับการโต้ตอบกับ ViewPager แล้ว ดูย้ายข้อมูลจาก ViewPager ไปยัง ViewPager2 (b/145132715)

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

  • ตอนนี้กฎ ProGuard ของ Fragment จะเก็บเฉพาะคลาส Constructor เริ่มต้น Fragment ที่ใช้เท่านั้นแทนที่จะเก็บสำหรับอินสแตนซ์ Fragment ทั้งหมด ซึ่งเป็นการแก้ไขการถดถอยที่เกิดขึ้นใน Fragment 1.2.1 (b/149665169
  • require___()กฎ Lint ที่เพิ่มในส่วน 1.2.2 จะไม่แสดงผลบวกลวงอีกต่อไปสำหรับตัวแปรภายในที่มีชื่อเดียวกับชื่อพร็อพเพอร์ตี้ Kotlin ที่บดบัง (เช่น view) (b/149891163)
  • FragmentContainerView ไม่แสดง UnsupportedOperationException อีกต่อไปเมื่อใช้ตัวอย่างเลย์เอาต์ใน Android Studio (b/149707833)
  • แก้ไขปัญหาที่ระบบจะไม่สร้างส่วนที่เก็บไว้ซึ่งเพิ่มหลังจากบันทึกสถานะแล้วขึ้นมาใหม่อย่างต่อเนื่องแล้วทำลายหลังจากการเปลี่ยนแปลงการกําหนดค่าแต่ละครั้ง (b/145832397)

เวอร์ชัน 1.2.5

เวอร์ชัน 1.2.5

10 มิถุนายน 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 และ androidx.fragment:fragment-testing:1.2.5 เผยแพร่แล้ว เวอร์ชัน 1.2.5 มีคอมมิตเหล่านี้

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

  • ตอนนี้ getViewLifecycleOwner() ของข้อมูลโค้ดจะหยุดลงก่อนที่จะเรียก onSaveInstanceState() ซึ่งสอดคล้องกับลักษณะการทำงานของวงจรของข้อมูลโค้ด ก่อนหน้านี้ฟีเจอร์นี้เปิดตัวในส่วนที่ 1.3.0-alpha04 (b/154645875)
  • ตอนนี้การเรียก setMenuVisibility(false) ในข้อมูลโค้ดจะเปลี่ยนการแสดงผลของเมนูที่ข้อมูลโค้ดย่อยระบุอย่างถูกต้อง ก่อนหน้านี้ฟีเจอร์นี้เปิดตัวในส่วนที่ 1.3.0-alpha04 (b/153593580)

เวอร์ชัน 1.2.4

เวอร์ชัน 1.2.4

1 เมษายน 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 และ androidx.fragment:fragment-testing:1.2.4 เผยแพร่แล้ว เวอร์ชัน 1.2.4 มีการคอมมิตเหล่านี้

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

  • อัปเดตกฎ ProGuard ของข้อมูลโค้ดเพื่ออนุญาตให้มีการสร้างความสับสนให้กับข้อมูลโค้ดที่เก็บไว้ (b/151605338)
  • ปิดใช้กฎ Lint FragmentLiveDataObserve ในคลาส DialogFragment เนื่องจากวงจรชีวิตของคลาสและวงจรชีวิตของมุมมองจะซิงค์กันเสมอ ทำให้สามารถใช้ this หรือ viewLifecycleOwner ได้อย่างปลอดภัยเมื่อเรียกใช้ observe (b/151765086)

เวอร์ชัน 1.2.3

เวอร์ชัน 1.2.3

18 มีนาคม 2020

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 และ androidx.fragment:fragment-testing:1.2.3 เผยแพร่แล้ว เวอร์ชัน 1.2.3 มีคอมมิตเหล่านี้

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

  • แก้ไขข้อบกพร่องใน DialogFragment ที่ทำให้เกิด StackOverflowError เมื่อเรียก getLayoutInflater() จากภายใน onCreateDialog() (b/117894767, aosp/1258665)
  • ลดขอบเขตของกฎ ProGuard ที่รวมไว้ของ Fragment เพื่อให้มั่นใจว่าคลาส Fragment ที่ไม่ได้ใช้จะถูกนำออก (b/149665169)
  • แก้ไขการแจ้งเตือนที่ผิดพลาดในUseRequireInsteadOfGet การตรวจสอบ Lint เมื่อใช้ชื่อตัวแปรภายในที่บดบังชื่อพร็อพเพอร์ตี้ Kotlin (b/149891163)
  • FragmentContainerView จะไม่แสดงข้อผิดพลาด UnsupportedOperationException อีกต่อไปหากใช้ตัวสร้างที่ไม่ถูกต้องในการแสดงตัวอย่างเลย์เอาต์ (b/149707833)

เวอร์ชัน 1.2.2

เวอร์ชัน 1.2.2

19 กุมภาพันธ์ 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 และ androidx.fragment:fragment-testing:1.2.2 เผยแพร่แล้ว เวอร์ชัน 1.2.2 มีคอมมิตเหล่านี้

การตรวจสอบ Lint ใหม่

  • Lint แนะนำให้ใช้ viewLifecycleOwner เป็น LifecycleOwner เพื่อโทรเข้า OnBackPressedDispatcher ใน onCreateView(), onViewCreated() และ onActivityCreated() (b/142117657)
  • เพิ่มการตรวจสอบ Lint ใหม่เพื่อยืนยันว่าคุณใช้ debugImplementation ที่ถูกต้องเมื่อใช้อาร์ติแฟกต์ fragment-testing (b/141500106)
  • ตอนนี้ฟรแอ็กเมนต์จะแนะนำให้ใช้เมธอด require___() ที่เชื่อมโยงกันเพื่อให้ข้อความแสดงข้อผิดพลาดที่สื่อความหมายมากขึ้นแทนการใช้ checkNotNull(get___()), requireNonNull(get___()) หรือ get___()!! สำหรับ Fragment API ทั้งหมดที่มีทั้ง get และ require ที่เทียบเท่า (aosp/1202883)

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

  • แก้ไขไฟล์ ProGuard ของ Frgament เพื่อหลีกเลี่ยงคำเตือน R8 (b/148963981)
  • ปรับปรุงการตรวจสอบ Lint ที่มีอยู่ซึ่งแนะนำให้ใช้ viewLifecycleOwner เมื่อใช้ observe เพื่อจัดการกับเวอร์ชันเมธอดส่วนขยาย livedata-ktx ของ observe ด้วย (b/148996309)
  • แก้ไขการจัดรูปแบบสำหรับการตรวจสอบ Lint จำนวนมาก (aosp/1157012)

การมีส่วนร่วมจากภายนอก

  • ขอขอบคุณ Zac Sweers ที่มีส่วนร่วมในrequire___() การตรวจสอบ Lint ในนามของ Slack (aosp/1202883)

เวอร์ชัน 1.2.1

เวอร์ชัน 1.2.1

5 กุมภาพันธ์ 2020

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 และ androidx.fragment:fragment-testing:1.2.1 เผยแพร่แล้ว เวอร์ชัน 1.2.1 มีการคอมมิตเหล่านี้

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

  • ตอนนี้ ProGuard จะเก็บคอนสตรัคเตอร์เริ่มต้นของแฟรกเมนต์ที่เพิ่มผ่านเมธอด add และ replace ที่ใช้อินสแตนซ์ Class (หรือเวอร์ชันที่แปลงเป็นโค้ดจริงของ Kotlin) (b/148181315)
  • FragmentStatePagerAdapter และ FragmentPagerAdapter จะไม่จับข้อยกเว้นที่ FragmentManager โยนเมื่อเรียกใช้ finishUpdate() อีกต่อไป (aosp/1208711)
  • แก้ไขปัญหาที่ FragmentManager.findFragment() ไม่ทำงานกับส่วนที่เพิ่มผ่านแท็ก <fragment> (b/147784323)
  • ตอนนี้ ข้อมูลโค้ดที่ขยายโดยใช้แท็ก <fragment> จะได้รับการเรียกใช้ onInflate() ก่อน onCreate() เสมอเมื่ออยู่ในเลย์เอาต์ (aosp/1215856)
  • การเรียกใช้ toString() ในอินสแตนซ์ FragmentManager จะไม่แสดงข้อยกเว้น NullPointerException อีกต่อไปเมื่อมีการทำลายกิจกรรมแล้ว (b/148189412)

การเปลี่ยนแปลงทรัพยากร Dependency

เวอร์ชัน 1.2.0

เวอร์ชัน 1.2.0

22 มกราคม 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 และ androidx.fragment:fragment-testing:1.2.0 เผยแพร่แล้ว เวอร์ชัน 1.2.0 มีการคอมมิตเหล่านี้

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

  • FragmentContainerView: FragmentContainerView เป็นคอนเทนเนอร์ที่แนะนําอย่างยิ่งสําหรับการใส่ข้อมูลไปยัง Framgnet แบบไดนามิก ซึ่งจะแทนที่การใช้ FrameLayout หรือเลย์เอาต์อื่นๆ นอกจากนี้ ยังรองรับ class, android:name และ android:tag (ไม่บังคับ) เดียวกันกับแท็ก <fragment> แต่จะใช้สํานวน FragmentTransaction ปกติเพื่อเพิ่มข้อมูลโค้ดเริ่มต้นนี้แทนเส้นทางโค้ดที่กําหนดเองซึ่ง <fragment> ใช้
  • การกำหนดเวลา onDestroyView(): ตอนนี้ เศษจะรอให้ภาพเคลื่อนไหวในการออก การเปลี่ยนเฟรมเวิร์กในการออก และการเปลี่ยน AndroidX ในการออก (เมื่อใช้ Transition 1.3.0) เสร็จสมบูรณ์ก่อนที่จะเรียก onDestroyView()
  • add() และ replace() ตามคลาส: เพิ่มการโอเวอร์โหลดใหม่ของ add() และ replace() ใน FragmentTransaction ที่ใช้ Class<? extends Fragment> และ Bundle (ไม่บังคับ) ของอาร์กิวเมนต์ วิธีการเหล่านี้ใช้ FragmentFactory เพื่อสร้างอินสแตนซ์ของ Fragment เพื่อเพิ่ม นอกจากนี้ ระบบยังเพิ่มส่วนขยาย Kotlin ที่ใช้ประเภทที่แปลงแล้ว (เช่น fragmentTransaction.replace<YourFragment>(R.id.container)) ลงใน fragment-ktx ด้วย
  • การผสานรวม SavedState ของ Lifecycle ViewModel: ตอนนี้ SavedStateViewModelFactory เป็นโรงงานเริ่มต้นที่ใช้เมื่อใช้ by viewModels(), by activityViewModels(), ตัวสร้าง ViewModelProvider หรือ ViewModelProviders.of() กับ Fragment
  • การตรวจสอบ Lint ใหม่: เพิ่มการตรวจสอบ Lint ใหม่เพื่อให้มั่นใจว่าคุณใช้ getViewLifecycleOwner() เมื่อสังเกต LiveData จาก onCreateView(), onViewCreated() หรือ onActivityCreated()
  • การเลิกใช้งาน getFragmentManager(): เราได้เลิกใช้งานเมธอด getFragmentManager() และ requireFragmentManager() ใน Fregment แล้ว และแทนที่ด้วยเมธอด getParentFragmentManager() เดียว ซึ่งจะแสดงผล FragmentManager ที่ไม่ใช่ค่า Null ที่เพิ่ม Fregment เข้าไป (คุณใช้ isAdded() เพื่อระบุว่าเรียกใช้ได้อย่างปลอดภัยหรือไม่)
  • การเลิกใช้งาน FragmentManager.enableDebugLogging(): เลิกใช้งานเมธอด FragmentManager.enableDebugLogging แบบคงที่แล้ว ตอนนี้ FragmentManager จะใช้ Log.isLoggable() สำหรับแท็ก FragmentManager ซึ่งจะช่วยให้คุณเปิดใช้การบันทึก DEBUG หรือ VERBOSE ได้โดยไม่ต้องคอมไพล์แอปอีกครั้ง

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

  • ProGuard จะไม่เก็บรักษาส่วนที่อ้างอิงผ่านแอตทริบิวต์ class หรือ android:name ใน FragmentContainerView โดยอัตโนมัติ คุณจึงต้องเพิ่มกฎการเก็บรักษาสำหรับคลาสแต่ละคลาสของส่วนดังกล่าวด้วยตนเอง (b/142601969)
  • เมื่อเพิ่ม NavHostFragment โดยใช้ class หรือ android:name ใน XML ที่มี FragmentContainerView คุณจะไม่สามารถใช้ findNavController() ใน onCreate() ของกิจกรรม (b/142847973)

เวอร์ชัน 1.2.0-rc05

8 มกราคม 2020

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 และ androidx.fragment:fragment-testing:1.2.0-rc05 เผยแพร่แล้ว เวอร์ชัน 1.2.0-rc05 มีการคอมมิตเหล่านี้

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

  • แก้ไขการถดถอยในข้อมูลโค้ด 1.2.0-rc04 เมื่อใช้แท็ก <fragment> ซึ่งทําให้เรียก onViewCreated() อย่างไม่ถูกต้องระหว่างการทำลายกิจกรรม (b/146290333)
  • ตอนนี้ระบบจะล้างข้อมูลที่ไม่ได้รับการกําหนดค่าของข้อมูลโค้ดที่เพิ่มด้วยแท็ก <fragment> อย่างถูกต้องแล้ว แม้ว่าข้อมูลโค้ดจะอยู่ในเลย์เอาต์เป็นครั้งคราวเท่านั้น (เช่น ในเลย์เอาต์แนวนอนเท่านั้น) ด้วยเหตุนี้ ตอนนี้ระบบจึงย้ายข้อมูล Frgment เหล่านี้ไปยัง CREATED อย่างถูกต้องแม้ว่าจะไม่อยู่ในเลย์เอาต์แทนที่จะสร้างอินสแตนซ์แต่ไม่เคยผ่านเมธอดวงจรชีวิตของ Frgment (b/145769287)

เวอร์ชัน 1.2.0-rc04

18 ธันวาคม 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 และ androidx.fragment:fragment-testing:1.2.0-rc04 เผยแพร่แล้ว เวอร์ชัน 1.2.0-rc04 มีการคอมมิตเหล่านี้

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

  • ปรับภาพเคลื่อนไหวสำหรับ TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE และ TRANSIT_FRAGMENT_FADE เพื่อหลีกเลี่ยงปัญหาด้านภาพ (b/145468417)

เวอร์ชัน 1.2.0-rc03

4 ธันวาคม 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 และ androidx.fragment:fragment-testing:1.2.0-rc03 เผยแพร่แล้ว เวอร์ชัน 1.2.0-rc03 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาการเปลี่ยนแปลงลักษณะการทํางานโดยไม่ตั้งใจ ซึ่ง findFragmentById() / findFragmentByTag() จะยังคงแสดงผลรายการที่นําออกแล้วขณะที่ภาพเคลื่อนไหว/การเปลี่ยนรูปแบบในการออกแสดงอยู่ (b/143982969, aosp/1167585)
  • ตอนนี้ระบบจะหยุดรายการย่อยก่อนรายการหลักอย่างถูกต้องเมื่อกิจกรรมที่รวมอยู่เรียก onSaveInstanceState() (b/144380645)
  • แก้ไขปัญหาที่ระบบทำเครื่องหมายมุมมองเป็น INVISIBLE อย่างไม่ถูกต้องหลังจากแสดงข้อมูลโค้ดที่ฝังไว้ซึ่งซ่อนอยู่ (b/70793925)
  • ตอนนี้องค์ประกอบแบบใช้ร่วมกันในการเปลี่ยนภาพสำหรับส่วนที่แสดงจะจัดการกับมุมมองที่หมุน ปรับขนาด ฯลฯ แล้ว (b/142835261)

การอัปเดตเอกสารประกอบ

  • ชี้แจงเอกสารประกอบเกี่ยวกับการเลิกใช้งานรอบ setUserVisibleHint() (b/143897055)
  • ปรับปรุงเอกสารประกอบเกี่ยวกับ setFragmentFactory() และ getFragmentFactory() เพื่อชี้แจงให้ชัดเจนยิ่งขึ้นว่าการกําหนด FragmentFactory จะส่งผลต่อ FragmentManager ย่อยด้วย (aosp/1170095)

การเปลี่ยนแปลงทรัพยากร Dependency

  • ตอนนี้ Fragment ขึ้นอยู่กับ Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 และ Activity 1.1.0-rc03

เวอร์ชัน 1.2.0-rc02

7 พฤศจิกายน 2019

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 และ androidx.fragment:fragment-testing:1.2.0-rc02 เผยแพร่แล้ว เวอร์ชัน 1.2.0-rc02 มีการคอมมิตเหล่านี้

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

  • เมื่ออยู่ใน Kotlin ตอนนี้ LintFix สำหรับการใช้ getViewLifecycleOwner() เมื่อสังเกต LiveData จาก onCreateView(), onViewCreated() หรือ onActivityCreated() (ซึ่งเปิดตัวใน Fragment 1.2.0-rc01) จะใช้ไวยากรณ์การเข้าถึงพร็อพเพอร์ตี้ Kotlin viewLifecycleOwner แทน getViewLifecycleOwner() (aosp/1143821)

เวอร์ชัน 1.2.0-rc01

23 ตุลาคม 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 และ androidx.fragment:fragment-testing:1.2.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentContainerView รองรับแอตทริบิวต์ class นอกเหนือจาก android:name แล้ว ซึ่งจะทํางานเหมือนกับแท็ก <fragment> (b/142722242)
  • เพิ่มการตรวจสอบ Lint ใหม่เพื่อให้มั่นใจว่าคุณใช้ getViewLifecycleOwner() เมื่อสังเกต LiveData จาก onCreateView(), onViewCreated() หรือ onActivityCreated() (b/137122478)

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

  • ตอนนี้การเรียกกลับ onDismiss และ onCancel ใน DialogFragment รับประกันว่า DialogInterface ที่ส่งให้จะไม่เป็นค่า Null และ getDialog() จะแสดงผลเป็นค่าที่ไม่ Null เมื่อเรียกใช้ (b/141974033)
  • ตอนนี้ FragmentContainerView จะเพิ่มส่วนที่ class หรือ android:name กำหนดไว้เป็นส่วนหนึ่งของการขยาย เพื่อให้ findFragmentById() และ findFragmentByTag() ทํางานได้ทันทีหลังจากนั้น (b/142520327)
  • แก้ไข IllegalStateException ใน FragmentContainerView เนื่องจากมีการบันทึกสถานะไว้ (b/142580713)
  • แก้ไข UnsupportedOperationException ใน FragmentContainerView เมื่อคลาส FragmentContainerView มีการสร้างความสับสน (b/142657034)

ปัญหาที่ทราบแล้ว

  • ProGuard จะไม่เก็บรักษาส่วนที่อ้างอิงผ่านแอตทริบิวต์ class หรือ android:name ใน FragmentContainerView โดยอัตโนมัติ คุณจึงต้องเพิ่มกฎการเก็บรักษาสำหรับคลาสแต่ละคลาสของส่วนด้วยตนเอง เราได้ปิดใช้กฎ Lint ที่แนะนำให้เปลี่ยนไปใช้ FragmentContainerView จนกว่าปัญหานี้จะได้รับการแก้ไขผ่าน aapt2 (b/142601969)

เวอร์ชัน 1.2.0-beta02

11 ตุลาคม 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 และ androidx.fragment:fragment-testing:1.2.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้

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

  • แก้ไขปัญหาที่ onInflate() ของข้อมูลโค้ดโค้ดไม่ได้รับการระบุแอตทริบิวต์ที่เหมาะสมจาก FragmentContainerView ซึ่งทำให้กรณีต่างๆ เช่น NavHostFragment ใช้งานไม่ได้ (b/142421837)

เวอร์ชัน 1.2.0-beta01

9 ตุลาคม 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 และ androidx.fragment:fragment-testing:1.2.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • FragmentContainerView เพิ่มการรองรับการเพิ่มข้อมูลโค้ดเริ่มต้นที่รองรับแอตทริบิวต์ XML android:name และแอตทริบิวต์ android:tag ที่ไม่บังคับ FragmentContainerView ต่างจากแท็ก <fragment> ตรงที่ใช้ FragmentTransaction ปกติในเบื้องหลังเพื่อเพิ่มข้อมูลโค้ดเริ่มต้น ซึ่งช่วยให้ดำเนินการ FragmentTransaction เพิ่มเติมใน FragmentContainerView ได้ และเปิดใช้การใช้การเชื่อมโยงมุมมองสำหรับเลย์เอาต์ (b/139830628, b/141177981)
  • ตอนนี้ Fragment มีคำเตือนของ Lint ที่เสนอวิธีแก้ไขด่วนในการแทนที่ <fragment> ด้วย FragmentContainerView (b/139830056)

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

  • แก้ไข ClassCastException เมื่อใช้ androidx.transition (b/140680619)
  • เมื่อใช้ Transition 1.3.0-beta01 ตอนนี้ Fragment จะรอให้ androidx.transition Transition (นอกเหนือจาก Transition และภาพเคลื่อนไหวของเฟรมเวิร์กซึ่งได้รับการแก้ไขใน Fragment 1.2.0-alpha03 และ Fragment 1.2.0-alpha02 ตามลำดับ) เสร็จสิ้นก่อนส่ง onDestroyView() (aosp/1119841)
  • เมื่อใช้ทรานซิชัน 1.3.0-beta01 ตอนนี้ฟragment จะยกเลิกทรานซิชัน androidx.transition อย่างถูกต้องก่อนที่จะเริ่มทรานซิชัน / ภาพเคลื่อนไหวใหม่ในคอนเทนเนอร์เดียวกัน (aosp/1119841)
  • แก้ไขปัญหาใน API 17 และต่ำกว่าเมื่อใช้ทรานซิชัน androidx.transition ในมุมมองรูทของ Fregment เมื่อใช้ FragmentContainerView (b/140361893)
  • ตอนนี้อาร์ติแฟกต์ fragment-testing ขึ้นอยู่กับ AndroidX Test 1.2.0 ซึ่งจะแก้ไขการใช้งานร่วมกับ Espresso 3.2.0 เวอร์ชันล่าสุดไม่ได้ (b/139100149)
  • นำการใช้ Log.w ใน FragmentManager ออก (aosp/1126468)

ปัญหาที่ทราบแล้ว

  • onInflate() ของข้อมูลโค้ดไม่ได้รับการระบุแอตทริบิวต์ที่เหมาะสมจาก FragmentContainerView ซึ่งทำให้กรณีต่างๆ เช่น NavHostFragment ใช้งานไม่ได้ (b/142421837)

เวอร์ชัน 1.2.0-alpha04

18 กันยายน 2019

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 และ androidx.fragment:fragment-testing:1.2.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.2.0-alpha04 มีการคอมมิตเหล่านี้

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

  • ระบบเลิกใช้งานเมธอด getFragmentManager() และ requireFragmentManager() ใน Fragment แล้วแทนที่ด้วยเมธอด getParentFragmentManager() เดียว ซึ่งจะแสดงผล FragmentManager ที่ไม่ใช่ค่า Null ที่เพิ่มไปยัง Fregment (คุณใช้ isAdded() เพื่อระบุว่าเรียกเมธอดดังกล่าวได้หรือไม่) (b/140574496)
  • เลิกใช้งานเมธอด FragmentManager.enableDebugLogging แบบคงที่แล้ว ตอนนี้ FragmentManager จะยึดตาม Log.isLoggable() สำหรับแท็ก FragmentManager ซึ่งจะช่วยให้คุณเปิดใช้การบันทึก DEBUG หรือ VERBOSE ได้โดยไม่ต้องคอมไพล์แอปอีกครั้ง (aosp/1116591)

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

  • ตอนนี้ระบบจะทำลายข้อมูลในฟragment อย่างถูกต้องขณะที่ภาพเคลื่อนไหวในการออกจากฟragment อื่นๆ กำลังทำงานอยู่ (b/140574199)
  • แก้ไขปัญหาที่ Framgnets จะเรียก Activity.findViewById() ในกรณีที่ก่อนหน้านี้ไม่ได้เรียก (aosp/1116431)

เวอร์ชัน 1.2.0-alpha03

5 กันยายน 2019

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 และ androidx.fragment:fragment-testing:1.2.0-alpha03 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • FragmentContainerView เปลี่ยนชื่อเป็น final แล้ว (b/140133091)

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

  • ตอนนี้ FragmentContainerView จะกลับลำดับการวาดอย่างถูกต้องเมื่อป๊อปเศษออกจากกองซ้อนด้านหลัง (b/139104187)
  • แก้ปัญหาที่ภาพเคลื่อนไหวที่ไม่ถูกต้องจะทำงานเมื่อทั้งแสดงข้อมูลโค้ดแบบแฟรกเมนต์และเพิ่มข้อมูลโค้ดแบบแฟรกเมนต์ใหม่พร้อมกัน (b/111659726)
  • ตอนนี้ส่วนย่อยจะรอให้ทรานซิชัน (นอกเหนือจากภาพเคลื่อนไหวซึ่งได้รับการแก้ไขใน Fragment 1.2.0-alpha02) เสร็จสิ้นก่อนส่ง onDestroyView() (b/138741697)

เวอร์ชัน 1.2.0-alpha02

7 สิงหาคม 2019

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 และ androidx.fragment:fragment-testing:11.2.0-alpha02 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้ SavedStateViewModelFactory เป็นโรงงานเริ่มต้นที่ใช้เมื่อใช้ by viewModels(), by activityViewModels(), ตัวสร้าง ViewModelProvider หรือ ViewModelProviders.of() ที่มี Fragment (b/135716331)
  • ภาพเคลื่อนไหวเริ่มต้นเมื่อใช้ TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE กับ setTransition ใน FragmentTransaction ได้รับการอัปเดตให้ตรงกับภาพเคลื่อนไหวที่กิจกรรมในอุปกรณ์ Android 10 ใช้ (aosp/1012812, aosp/1014730)

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

  • แนะนำ FragmentContainerView เป็นตัวคอนเทนเนอร์ที่แนะนำอย่างยิ่งสำหรับการแสดงผลที่เพิ่มแบบไดนามิก ซึ่งมาแทนที่การใช้ FrameLayout ฯลฯ เนื่องจากช่วยแก้ไขปัญหาการจัดลำดับ z ของภาพเคลื่อนไหวและการแยกการส่งข้อมูลส่วนเกินของหน้าต่างไปยังการแสดงผล (b/37036000, aosp/985243, b/136494650)
  • เพิ่มเมธอด FragmentManager.findFragment(View) แบบคงที่เพื่อดึงข้อมูล Fragment ที่มีจากมุมมองที่ขยายโดย Fragment ส่วนขยาย Kotlin มีให้บริการใน fragment-ktx ด้วย (aosp/1090757)
  • เพิ่มการโอเวอร์โหลดใหม่ของ add() และ replace() ใน FragmentTransaction ที่ใช้ Class<? extends Fragment> และ Bundle ของอาร์กิวเมนต์ (ไม่บังคับ) วิธีการเหล่านี้ใช้ FragmentFactory เพื่อสร้างอินสแตนซ์ของ Fragment เพื่อเพิ่ม นอกจากนี้ ยังมีการเพิ่มส่วนขยาย Kotlin ที่ใช้ประเภทที่แปลงแล้ว (เช่น fragmentTransaction.replace<YourFragment>(R.id.container)) ลงใน fragment-ktx ด้วย (b/126124987)
  • เพิ่มคำอธิบายประกอบ @MainThread ลงใน Fragment lifecycle callbacks แล้ว (b/127272564)
  • API ที่เกี่ยวข้องกับชื่อเบรดครัมบ์ใน FragmentTransaction และ FragmentManager.BackStackEntry เลิกใช้งานแล้ว (b/138252944)
  • เราเลิกใช้งานเมธอด setTransitionStyle ใน FragmentTransaction แล้ว (aosp/1011537)
  • เมธอดหลายรายการใน FragmentManager ไม่ได้เป็น abstract อีกต่อไป FragmentManager ยังคงเป็น abstract และไม่ควรสร้างอินสแตนซ์หรือขยายโดยตรง คุณควรรับเฉพาะอินสแตนซ์ที่มีอยู่จาก getSupportFragmentManager(), getChildFragmentManager() และอื่นๆ ต่อไป

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

  • จาก Fragment 1.1.0-rc04: ตอนนี้ระบบยกเลิกการเปลี่ยนที่เลื่อนออกไปแล้วในส่วนที่แสดงตัวอย่างอย่างถูกต้อง (b/138251858)
  • จากข้อมูลโค้ด 1.1.0-rc03: แก้ไขปัญหาการเรียก postponeEnterTransition() ที่มีการกำหนดเวลาหมดอายุมากกว่า 1 ครั้งจะไม่ยกเลิกการกำหนดเวลาหมดอายุก่อนหน้านี้ (b/137797118)
  • จาก Fragment 1.1.0-rc02: แก้ไขข้อขัดข้องใน FragmentPagerAdapter และ FragmentStatePagerAdapter เมื่อนำรายการปัจจุบันออก (b/137209870)
  • ตอนนี้ เศษจะรอให้ภาพเคลื่อนไหวเสร็จสิ้นก่อนที่จะส่ง onDestroyView() (b/136110528)
  • ตอนนี้ระบบจัดการภาพเคลื่อนไหวของแฟรกเมนต์จากแฟรกเมนต์ย่อยและรายการที่สืบทอดอย่างถูกต้องเมื่อสร้างภาพเคลื่อนไหวของแฟรกเมนต์หลัก (b/116675313)
  • แก้ไข NullPointerException เมื่อใช้ทรานซิชันองค์ประกอบที่แชร์และการรวมการดำเนินการป๊อปและเพิ่ม (b/120507394)
  • เพิ่มวิธีแก้ปัญหาสำหรับ IllegalStateException เมื่อใช้ FragmentPagerAdapter และ FragmentStatePagerAdapter ในการทดสอบ Robolectric (b/137201343)

เวอร์ชัน 1.2.0-alpha01

2 กรกฎาคม 2019

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 และ androidx.fragment:fragment-testing:1.2.0-alpha01 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้ FragmentManager จะเรียก requestApplyInsets() หลังจากแนบมุมมองของ Fragment และเรียก onViewCreated() โดยตรง เพื่อให้แน่ใจว่ามุมมองของคุณจะมีส่วนตัดที่ถูกต้องเสมอ (b/135945162)

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

  • แก้ไข NullPointerException เมื่อแสดง FragmentTransaction ที่ใช้ setPrimaryNavigationFragment() ก่อน replace() (b/134673465)

เวอร์ชัน 1.1.0

เวอร์ชัน 1.1.0

5 กันยายน 2019

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 และ androidx.fragment:fragment-testing:1.1.0 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • fragment-testing: อาร์ติแฟกต์ fragment-testing มีคลาส FragmentScenario สำหรับการทดสอบส่วนย่อยแยกต่างหาก ดูรายละเอียดเพิ่มเติมได้ที่เอกสารประกอบการทดสอบข้อมูลโค้ดที่แยกส่วนย่อยของแอป
  • FragmentFactory: ตอนนี้คุณตั้งค่า FragmentFactory ใน FragmentManager เพื่อจัดการการสร้างอินสแตนซ์ของข้อบังคับได้แล้ว ซึ่งจะนําข้อกําหนดแบบเข้มงวดที่ต้องมีตัวสร้างที่ไม่มีอาร์กิวเมนต์ออก
  • ตัวรับพร็อพเพอร์ตี้ Kotlin สําหรับ ViewModel: ตอนนี้อาร์ติแฟกต์ fragment-ktx มีตัวรับพร็อพเพอร์ตี้ Kotlin 2 รายการ ได้แก่ by viewModels() สําหรับการเข้าถึง ViewModel ที่เชื่อมโยงกับแต่ละ Fragment และ by activityViewModels() สําหรับการเข้าถึง ViewModel ที่มีขอบเขตระดับกิจกรรม
  • วงจรสูงสุด: ตอนนี้คุณตั้งค่าสถานะวงจรสูงสุดสําหรับข้อมูลโค้ดได้โดยเรียกใช้ setMaxLifecycle() ใน FragmentTransaction ซึ่งมาแทนที่ setUserVisibleHint() ที่เลิกใช้งานแล้ว FragmentPagerAdapter และ FragmentStatePagerAdapter มีเครื่องมือสร้างแบบใหม่ที่ให้คุณเปลี่ยนไปใช้ลักษณะการทำงานแบบใหม่ได้
  • เครื่องมือสร้าง LayoutId ของ FragmentActivity: ตอนนี้คลาสย่อยของ FragmentActivity สามารถเรียกใช้เครื่องมือสร้างใน FragmentActivity ที่ใช้รหัส R.layout ซึ่งระบุเลย์เอาต์ที่ควรตั้งเป็นมุมมองเนื้อหาแทนการเรียกใช้ setContentView() ใน onCreate() การดำเนินการนี้จะไม่เปลี่ยนแปลงข้อกำหนดที่ว่าคลาสย่อยต้องมีตัวสร้างที่ไม่มีอาร์กิวเมนต์
  • เครื่องมือสร้าง LayoutId ของส่วนย่อย: ตอนนี้คลาสย่อยของ Fragment สามารถเรียกใช้เครื่องมือสร้างใน Fragment ที่ใช้รหัส R.layout ซึ่งระบุเลย์เอาต์ที่ควรใช้สำหรับส่วนย่อยนี้แทนการลบล้าง onCreateView() คุณกําหนดค่าเลย์เอาต์แบบขยายได้ใน onViewCreated()
  • เลื่อนเวลาโดยมีการหมดเวลา: มีการเพิ่มการโอเวอร์โหลดใหม่ของ postponeEnterTransition() ซึ่งใช้การหมดเวลา

เวอร์ชัน 1.1.0-rc04

7 สิงหาคม 2019

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 และ androidx.fragment:fragment-testing:1.1.0-rc04 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • ตอนนี้ระบบยกเลิกการเปลี่ยนที่เลื่อนออกไปอย่างถูกต้องแล้วในฟragments ที่ปรากฏขึ้น (b/138251858)

เวอร์ชัน 1.1.0-rc03

19 กรกฎาคม 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 และ androidx.fragment:fragment-testing:1.1.0-rc03 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • แก้ไขปัญหาการเรียก postponeEnterTransition() ที่มีระยะหมดเวลามากกว่า 1 ครั้งจะไม่ยกเลิกระยะหมดเวลาก่อนหน้า (b/137797118)

เวอร์ชัน 1.1.0-rc02

17 กรกฎาคม 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 และ androidx.fragment-testing:fragment:1.1.0-rc02 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • แก้ไขข้อขัดข้องใน FragmentPagerAdapter และ FragmentStatePagerAdapter เมื่อนำรายการปัจจุบันออก (b/137209870)

เวอร์ชัน 1.1.0-rc01

2 กรกฎาคม 2019

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 และ androidx.fragment:fragment-testing:1.1.0-rc01 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • ตอนนี้ระบบจะอัปเดตการแสดงผลของข้อมูลโค้ดอย่างถูกต้องเมื่อใช้การดำเนินการ show() หรือ hide() ขณะทรานซิชันทำงานอยู่ (b/133385058)
  • แก้ไข NullPointerException เมื่อแสดง FragmentTransaction ที่ใช้ setPrimaryNavigationFragment() ก่อน replace() (b/134673465)

เวอร์ชัน 1.1.0-beta01

5 มิถุนายน 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 และ androidx.fragment:fragment-testing:1.1.0-beta01 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • ตอนนี้ androidx.lifecycle.Lifecycle callbacks (โดยเฉพาะที่เกี่ยวข้องกับ STARTED, RESUMED, PAUSED, STOPPED และ DESTROYED) สำหรับ Fragment ที่ฝังอยู่จะฝังอย่างถูกต้องแล้ว (b/133497591)
  • ตอนนี้อินสแตนซ์ OnBackPressedCallback ที่ลงทะเบียนใน onCreate() ของ Fragment จะมีลำดับความสำคัญเหนือกว่า FragmentManager ย่อยอย่างเหมาะสม (b/133175997)
  • จะไม่แสดงภาพเคลื่อนไหวของข้อมูลโค้ดย่อยอีกต่อไปเมื่อมีการแทนที่ข้อมูลโค้ดหลัก (b/121017790)
  • ตอนนี้ระบบจะไม่สนใจภาพเคลื่อนไหวและทรานซิชันของ Fraktment เมื่อใช้ animateLayoutChanges="true" เพื่อแก้ไขปัญหาที่ระบบทำลาย Fraktment อย่างไม่ถูกต้อง (b/116257087)

เวอร์ชัน 1.1.0-alpha09

16 พฤษภาคม 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 และ androidx.fragment:fragment-testing:1.1.0-alpha09 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

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

  • ตอนนี้ Fragment จะได้รับการติดต่อกลับไปยังเมธอด onPrimaryNavigationFragmentChanged(boolean) ใหม่เมื่อส่วนการนำทางหลักมีการเปลี่ยนแปลง aosp/960857

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

  • ตอนนี้ระบบจะนำรายการเมนูที่ขยายโดย FRGMENT ย่อยออกอย่างถูกต้องเมื่อนำ FRGMENT หลักออกแล้ว b/131581013

เวอร์ชัน 1.1.0-alpha08

7 พฤษภาคม 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 และ androidx.fragment:fragment-testing:1.1.0-alpha08 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

รุ่นนี้ใช้ร่วมกับ Preferences 1.1.0-alpha01 ถึง 1.1.0-alpha04 ไม่ได้ โปรดอัปเกรดเป็นค่ากําหนด 1.1.0-alpha05 เมื่อใช้ Fragments เวอร์ชันนี้

ฟีเจอร์ใหม่

  • เพิ่มการโอเวอร์โหลดใหม่ของ postponeEnterTransition() ที่มีการกำหนดเวลาหมดอายุ หลังจากนั้น ข้อมูลโค้ดจะเรียก startPostponedEnterTransition() โดยอัตโนมัติ b/120803208

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

  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: ระบบได้นำเมธอด FragmentFactory instantiate ที่ใช้ Bundle ออกแล้ว ซึ่งก่อนหน้านี้ได้เลิกใช้งานแล้ว aosp/953856
  • การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง: เปลี่ยนชื่อค่าคงที่ RESUME_ONLY_CURRENT_FRAGMENT และ USE_SET_USER_VISIBLE_HINT ใน FragmentPagerAdapter และ FragmentStatePagerAdapter เป็น BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT และ BEHAVIOR_SET_USER_VISIBLE_HINT ตามลำดับแล้ว aosp/954782

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

  • ระบบจะไม่กลับมาดำเนินการกับส่วนที่สิ้นสุดวงจรผ่าน setMaxLifecycle() ก่อนถึงสถานะสุดท้ายอีกต่อไป b/131557151
  • เมื่อใช้ setMaxLifecycle(Lifecycle.State.CREATED) ระบบจะทำลายมุมมองของ Fragment อย่างเหมาะสม aosp/954180

เวอร์ชัน 1.1.0-alpha07

25 เมษายน 2019

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 และ androidx.fragment:fragment-testing:1.1.0-alpha07 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้คุณตั้งค่าสถานะวงจรของลูกค้าสูงสุดสำหรับข้อมูลโค้ดได้โดยเรียกใช้ setMaxLifecycle() ใน FragmentTransaction ซึ่งมาแทนที่ setUserVisibleHint() ที่เลิกใช้งานแล้ว FragmentPagerAdapter และ FragmentStatePagerAdapter มีเครื่องมือสร้างแบบใหม่ที่ให้คุณเปลี่ยนไปใช้ลักษณะการทำงานแบบใหม่ได้ (b/129780800)

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

  • ตอนนี้ moveToState(STARTED) ใน FragmentScenario จะเรียกใช้ได้ในอุปกรณ์ API ระดับ 24 ขึ้นไปเท่านั้น (b/129880016)

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

  • ผลที่ตามมาของ (b/129907905) คือ ข้อมูลโค้ดในกองซ้อนด้านหลังจะไม่ได้รับการเรียกกลับไปยัง onCreateView() เมื่อสร้างกิจกรรมโฮสติ้งขึ้นมาใหม่ ตอนนี้ onCreateView() จะเรียกใช้ก็ต่อเมื่อมีการทำให้ข้อมูลโค้ดที่แยกส่วนแสดง (เช่น มีการแยกกองซ้อนที่ซ้อนกันออก)

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

  • แก้ไขปัญหาเมื่อใช้แท็ก <fragment> ใน XML และตัวสร้าง contentLayoutId ของ FragmentActivity หรือ AppCompatActivity (b/129907905)
  • แก้ไขข้อบกพร่องที่ระบบไม่ย้ายข้อมูลในกองซ้อนด้านหลังไปยัง CREATED อย่างน้อยหลังจากการเปลี่ยนแปลงการกําหนดค่า ซึ่งทําให้ ViewModel และส่วนที่เก็บไว้ของรายการย่อยไม่ได้รับการทิ้งอย่างถูกต้อง (b/129593351)
  • แก้ไขข้อขัดข้องใน restoreSaveState ที่เกิดจากข้อมูลโค้ดที่เก็บไว้ไม่ได้ซิงค์กันหลังจากบันทึกสถานะอินสแตนซ์แล้ว (b/130433793) (aosp/947824)
  • แก้ไขปัญหาที่ระบบจะไม่เรียก OnBackPressedCallback ที่เพิ่มด้วยวงจรชีวิตของ Fragment หาก FragmentManager มีกองซ้อนย้อนกลับ ดูรายละเอียดเพิ่มเติมได้ที่ androidx.activity 1.0.0-alpha07 (aosp/948209)
  • ฟragment จะไม่บังคับใช้ LAYER_TYPE_HARDWARE สำหรับภาพเคลื่อนไหวอีกต่อไป หากต้องการภาพเคลื่อนไหวของเลเยอร์ฮาร์ดแวร์โดยเฉพาะ โปรดตั้งค่าให้เป็นส่วนหนึ่งของภาพเคลื่อนไหว (b/129486478)

เวอร์ชัน 1.1.0-alpha06

3 เมษายน 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 และ androidx.fragment:fragment-testing:1.1.0-alpha06 เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้ข้อยกเว้นที่ FragmentManager โยนจะรวมชื่อของ Fragment ไว้ในข้อความด้วย (b/67759402)

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

  • ตอนนี้ Fragment และ FragmentActivity มีตัวสร้างที่ 2 ที่ใช้ @LayoutRes int ซึ่งมาแทนที่ลักษณะการทำงานก่อนหน้านี้ของการกำกับเนื้อหาในคลาสด้วย @ContentView แนวทางนี้ใช้ได้ทั้งในโมดูลแอปและโมดูลไลบรารี (b/128352521)
  • ตอนนี้ onActivityResult() ของ FragmentActivity มีการทำเครื่องหมายเป็น @CallSuper อย่างถูกต้องแล้ว (b/127971684)
  • เราได้เลิกใช้งานเมธอด instantiate ของ FragmentFactory ที่ใช้อาร์กิวเมนต์ Bundle แล้ว และแอปควรใช้การโอเวอร์โหลด instantiate ใหม่ที่ไม่ใช้ Bundle (b/128836103)
  • ตอนนี้เมธอด FragmentScenario ได้รับการกำกับเนื้อหาด้วย @StyleRes อย่างถูกต้องแล้ว (aosp/924193)
  • FragmentTabHost เลิกใช้งานแล้ว (b/127971835)
  • getThemedContext() ของ FragmentActivity ถูกนำออกแล้ว (aosp/934078)

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

  • แก้ไขการถดถอยใน 1.1.0-alpha05 ซึ่งทําให้ Fragment ที่เข้ามากะพริบบนหน้าจอ (b/129405432)
  • แก้ปัญหาที่รายการนำทางหลักจะหายไปหลังจากการดำเนินการชุด popBackStack+replace+popBackStack (b/124332597)
  • แก้ไขปัญหาเมื่อใช้ตัวสร้าง @ContentView ในกิจกรรมเมื่อกู้คืนสถานะ Fregment (b/127313094)
  • แก้ไขตรรกะของ setTargetFragment() เมื่อแทนที่ Fragment เป้าหมายที่มีอยู่ด้วย Fragment ที่ยังไม่ได้แนบกับ FragmentManager (aosp/932156)

เวอร์ชัน 1.1.0-alpha05

13 มีนาคม 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 และ androidx.fragment:fragment-testing:1.1.0-alpha05 เผยแพร่แล้ว ดูรายการคอมมิตทั้งหมดที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • ตอนนี้การค้นหาคำอธิบายประกอบ @ContentView ได้รับการแคชแล้ว (b/123709449)

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

  • ตอนนี้การเรียกใช้ remove(), hide(), show(), detach() และ setPrimaryNavigationFragment() ที่มี Fragment แนบอยู่กับ FragmentManager อื่นจะแสดงข้อผิดพลาด IllegalStateException แทนที่จะแสดงข้อผิดพลาดโดยไม่มีการแจ้งเตือน (aosp/904301)

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

  • ขณะนี้ onNewIntent สำหรับ FragmentActivity มีการทำเครื่องหมาย @CallSuper อย่างถูกต้องแล้ว (b/124120586)
  • แก้ไขปัญหาที่ระบบอาจเรียก onDismiss() ของ DialogFragment 2 ครั้งเมื่อใช้ getDialog().dismiss() หรือ getDialog().cancel() (b/126563750)

เวอร์ชัน 1.1.0-alpha04

7 กุมภาพันธ์ 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 และ androidx.fragment:fragment-testing 1.1.0-alpha04 เผยแพร่แล้ว

ฟีเจอร์ใหม่

  • เพิ่มการรองรับคําอธิบายประกอบคลาส @ContentView ซึ่งช่วยให้คุณระบุไฟล์ XML เลย์เอาต์ที่จะขยายแทนการลบล้าง onCreateView() ได้ เราขอแนะนำให้ดูงานที่เกี่ยวข้องใน onViewCreated() (aosp/837619)
  • ตอนนี้ fragment-testing ต้องใช้ androidx.test:core-ktx 1.1.0 เวอร์ชันเสถียร (b/121209673)
  • ตอนนี้คุณใช้ openActionBarOverflowOrOptionsMenu กับ FragmentScenario เพื่อทดสอบเมนูตัวเลือกที่โฮสต์ในรายการย่อยได้แล้ว (b/121126668)

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

  • เพิ่มเมธอด requireArguments() ซึ่งแสดงผล @NonNull Bundle หรือแสดงข้อผิดพลาด IllegalStateException (b/121196360)
  • เพิ่มหมายเหตุว่าไม่ควรลบล้าง getLifecycle(), getViewLifecycleOwner() และ getViewLifecycleOwnerLiveData() และจะถือเป็นเวอร์ชันสุดท้ายในรุ่นที่จะออกในอนาคต โปรดส่งคําขอฟีเจอร์หากคุณกำลังลบล้างเมธอดนี้ (aosp/880714)
  • เพิ่มหมายเหตุว่าไม่ควรลบล้าง getViewModelStore() และจะใช้เป็นค่าสุดท้ายในรุ่นต่อๆ ไป โปรดส่งคําขอฟีเจอร์หากคุณกำลังลบล้างเมธอดนี้ (aosp/880713)
  • แก้ไขปัญหาความเข้ากันได้ของไบนารีกับ Fragments เวอร์ชันก่อนหน้า (aosp/887877) (aosp/889834)

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

  • ระบบจะล้างข้อมูลแฟรกเมนต์เป้าหมายอย่างถูกต้องเมื่อคุณส่ง null ไปยัง setTargetFragment() (aosp/849969)
  • แก้ปัญหาที่บางครั้งข้อมูลโค้ดที่ติดทั่วเว็บไซต์เป้าหมายไม่พร้อมใช้งานในหรือหลังจาก onDestroy() (b/122312935)
  • ตอนนี้ระบบจะเรียก onDismiss() ของ DialogFragment ก่อน onDestroy() (aosp/874133) (aosp/890734)

เวอร์ชัน 1.1.0-alpha03

17 ธันวาคม 2018

ฟีเจอร์ใหม่

  • ตอนนี้ Fragment ใช้ BundleSavedStateRegistryOwner และขึ้นอยู่กับไลบรารี SavedState ที่เพิ่งเปิดตัว [aosp/824380]
  • เพิ่มby activityViewModels Kotlin property delegate เพื่อดึงข้อมูล ViewModel ที่เชื่อมโยงกับ Activity ที่มี [b/119050253]
  • เราได้ขยาย by viewModels Kotlin property delegate เพื่อใช้เมธอด Lambda ที่ไม่บังคับในการรับ ViewModelStoreOwner ซึ่งจะช่วยให้คุณส่ง Fragment หลักหรือ ViewModelStoreOwner ที่กำหนดเองอื่นๆ ด้วยโค้ด เช่น val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

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

  • ตอนนี้ FragmentScenario ให้คุณระบุธีมได้ เช่น Theme.AppCompat [b/119054431] การเปลี่ยนแปลงนี้ส่งผลกับส่วนอื่นในระบบ
  • เพิ่มเมธอด requireView() ซึ่งแสดงผล @NonNull View หรือแสดงข้อผิดพลาด IllegalStateException [b/120241368]
  • เพิ่มเมธอด requireParentFragment() ซึ่งแสดงผล @NonNull Fragment หรือแสดงข้อผิดพลาด IllegalStateException [b/112103783]

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

  • แก้ไข IllegalStateException: บันทึกสถานะไม่สำเร็จ b/120814739
  • ตอนนี้ เศษที่กู้คืนจากสถานะอินสแตนซ์ที่บันทึกไว้จะได้รับ Bundle ที่ไม่ใช่ค่า Null เสมอ [b/119794496]
  • ระบบจะไม่นำออบเจ็กต์ Lifecycle ของส่วนที่นำออกแล้วมาใช้ซ้ำอีกหากมีการเพิ่มส่วนนั้นอีกครั้ง [b/118880674]

เวอร์ชัน 1.1.0-alpha02

3 ธันวาคม 2018

ฟีเจอร์ใหม่

  • ตอนนี้ส่วนขยาย Kotlin ของ FragmentScenario ให้คุณใช้ Lambda สำหรับการสร้าง Fragment แทนการส่งอินสแตนซ์ FragmentFactory (aosp/812913)

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

  • แก้ไข IllegalStateException เมื่อใช้ Fragments ที่ฝังอยู่ในกองซ้อนที่ซ้อนกัน (b/119256498)
  • แก้ไขข้อขัดข้องเมื่อใช้ FragmentScenario.recreate() กับ FragmentFactory (aosp/820540)
  • แก้ไขปัญหาที่เข้าถึง Frgament เป้าหมายไม่ได้หลังจากนํา Frgament ออกแล้ว (aosp/807634)

เวอร์ชัน 1.1.0-alpha01

5 พฤศจิกายน 2018

นี่เป็นรุ่นแรกของfragment-testingอาร์ติแฟกต์และ FragmentScenario ซึ่งสร้างขึ้นจาก androidx.test:core APIs ดูรายละเอียดเพิ่มเติมในเอกสารประกอบการทดสอบข้อมูลโค้ด

ฟีเจอร์ใหม่

  • คลาส FragmentScenario ใหม่สําหรับการทดสอบส่วนย่อยแยกต่างหาก
  • ตอนนี้คุณตั้งค่า FragmentFactory ใน FragmentManager ใดก็ได้เพื่อควบคุมวิธีสร้างอินสแตนซ์ใหม่ของ Fragment
  • เพิ่มby viewModels()ตัวรับช่วงพร็อพเพอร์ตี้ Kotlin ใหม่สําหรับการดึงข้อมูล ViewModel จาก Fregment
  • ตอนนี้ระบบจะยกเลิกเหตุการณ์อินพุตที่รอดำเนินการ (เช่น การคลิก) ใน onStop() ของข้อมูลโค้ด

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

  • ขยายคําอธิบายประกอบเกี่ยวกับ Nullability ไปยังแพลตฟอร์มต่างๆ ของ Fragment API อย่างมีนัยสําคัญ

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

  • แก้ไขปัญหาที่ทำให้การดำเนินการกับ Fragment ล้มเหลวจากภายใน LiveData (b/77944637)

ปัญหาที่ทราบแล้ว

  • คุณจะเข้าถึง Fragment เป้าหมายไม่ได้หลังจากที่นำ Fragment ออกจาก FragmentManager แล้ว
  • fragment-testing ขึ้นอยู่กับ androidx.test:core:1.0.0-beta01 แทนที่จะเป็น androidx.test:core:1.0.0 ที่ถูกต้อง