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

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

หากต้องการเพิ่มทรัพยากร Dependency ของ Fragment คุณต้องเพิ่มที่เก็บ Google Maven ไปยังโปรเจ็กต์ของคุณ อ่านข้อมูลเพิ่มเติมในที่เก็บ 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.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)
  • Fragment ที่เพิ่มผ่านเมธอด 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 ผ่านชื่อคลาสของข้อมูลโค้ด โดยจะจัดการการบันทึกและกู้คืนสถานะของ Fragment โดยอัตโนมัติ วิธีการนี้ควรใช้แทนแนวทางที่แนะนำก่อนหน้านี้ในการใช้ AndroidViewBinding เพื่อขยาย Fragment
  • ตอนนี้ Callback onBackStackChangeCancelled ในอินเทอร์เฟซ OnBackStackChangedListener ของ FragmentManager เริ่มทำงานแล้วโดยเป็นส่วนหนึ่งของการดำเนินการใน FragmentManager โดยจะย้ายให้ใกล้เคียงกับช่วงเวลาของ Callback ของ 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)

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

เวอร์ชัน 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/การเปลี่ยน ก่อนตัดสินใจทำธุรกรรมผ่านการดำเนินการทำท่าทางสัมผัสให้เสร็จสมบูรณ์หรือยกเลิก
ระบบทรานซิชัน ทรัพยากร 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 มีการคอมมิตเหล่านี้

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

เวอร์ชัน 1.7.0-beta01

20 มีนาคม 2024

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

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

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

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

  • แก้ไขปัญหาที่เมื่อบันทึกท่าทางสัมผัส "กลับแบบคาดการณ์" บนส่วนที่ไม่ได้อยู่ในคอนเทนเนอร์ ระบบจะไม่ทำลายส่วนที่บันทึกไว้ ระบบจะย้าย Fragment ไปยังสถานะสุดท้ายทันที (Ida0d9)
  • แก้ไขปัญหาใน Fragments ที่การรบกวนการเปลี่ยนขาเข้าด้วยท่าทางสัมผัสการย้อนกลับแบบคาดการณ์จะทำลายมุมมองการเข้าออกและปล่อยให้หน้าจอว่างเปล่า (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 ของ Fragment แต่ละรายการได้ง่ายขึ้นโดยการสร้าง 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 มีการคอมมิตเหล่านี้

ล้างข้อมูล

เวอร์ชัน 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, Host และรหัสจะเข้าถึงได้ใน 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 มีคอมมิตเหล่านี้

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

เวอร์ชัน 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)

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

  • ปัจจุบันมีปัญหาเกิดขึ้นหลังจากที่ยกเลิกท่าทางสัมผัสการย้อนกลับที่มีการเปลี่ยนครั้งหนึ่งแล้ว ครั้งต่อไปที่คุณเริ่มท่าทางสัมผัส "ย้อนกลับ" จะเรียกใช้การเปลี่ยนไม่ได้ ทำให้หน้าจอว่างเปล่า ปัญหานี้อาจเกิดจากปัญหาในคลังทรานซิชัน (b/300157785) หากพบปัญหานี้ โปรดรายงานปัญหาเกี่ยวกับ Fragment พร้อมแสดงตัวอย่างโปรเจ็กต์ที่ทำให้ปัญหาเกิดขึ้นอีกครั้ง คุณปิดใช้การย้อนกลับแบบคาดการณ์ได้โดยใช้ 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 มีคอมมิตเหล่านี้

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

  • แก้ไขปัญหาเกี่ยวกับ Fraktment เมื่อใช้การย้อนกลับแบบคาดการณ์ ซึ่งทำให้ระบบข้าม Fraktment แรกในกองซ้อนการย้อนกลับของเครื่องมือจัดการ Fraktment และทำให้กิจกรรมเสร็จสิ้นเมื่อใช้การย้อนกลับของระบบผ่านการไปยังส่วนต่างๆ ด้วยปุ่ม 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 แล้ว ซึ่งจะช่วยให้คุณใช้ท่าทางสัมผัส "กลับ" เพื่อดูส่วนที่แล้วด้วย 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 จะแยกออกเป็นสถานะไลบรารีส่วนตัว (คลาส Parcelable ที่กำหนดเอง) กับสถานะที่นักพัฒนาแอประบุไว้ ซึ่งตอนนี้จะจัดเก็บใน Bundle เสมอ ซึ่งช่วยให้ระบุได้ว่าสถานะของส่วนย่อยเกิดขึ้นที่ใด
  • อินเทอร์เฟซ FragmentManager.OnBackStackChangedListener ได้รับการขยายให้มี 2 รายการเพิ่มเติมสำหรับ onBackStackChangeStarted และ onBackStackChangeCommitted ซึ่งจะเรียกใช้กับ Fragment แต่ละรายการทันทีก่อนที่จะเพิ่ม/นำออกจากกองซ้อนด้านหลังของ Fraktment และทันทีหลังจากทำธุรกรรมเสร็จสมบูรณ์ตามลำดับ
  • FragmentStrictMode เพิ่ม WrongNestedHierarchyViolation ใหม่ซึ่งจะตรวจจับเมื่อมีการฝังข้อมูลโค้ดย่อยภายในลําดับชั้นของมุมมองของรายการหลัก แต่ไม่ได้เพิ่มลงใน childFragmentManager ของรายการหลัก
  • ตอนนี้ API Fragment และ FragmentManager ที่ใช้ Intent หรือ IntentSender ได้รับการกำกับเนื้อหาอย่างเหมาะสมด้วย @NonNull เพื่อป้องกันการส่งค่า Null เนื่องจากค่า Null จะทําให้ API เฟรมเวิร์ก Android ที่เกี่ยวข้องซึ่งเมธอดเหล่านี้เรียกใช้ขัดข้องทันที
  • ตอนนี้ DialogFragment ให้สิทธิ์เข้าถึง ComponentDialog ที่เกี่ยวข้องผ่าน requireComponentDialog() API แล้ว
  • ตอนนี้ Fragment จะขึ้นอยู่กับวงจร 2.6.1
  • ตอนนี้ Fragment จะขึ้นอยู่กับ 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 มีการคอมมิตเหล่านี้

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

  • มีการปรับช่วงเวลาของ Callback OnBackStackChangedListener.onBackStackChangeCommited ให้ทำงานก่อนการดำเนินการ Fragment จะทำงาน การดำเนินการนี้จะทำให้ไม่มีการส่งผ่านส่วนย่อยที่ถูกปลดออก (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 ใหม่ใน 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 ที่เป็นค่าว่าง จะทำให้ 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)

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

  • จาก Fragment 1.5.5: Fragment จะไม่บันทึกสถานะ 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 มีคอมมิตเหล่านี้

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

  • จาก Fragment 1.5.2: แก้ไขปัญหาที่การดำเนินการธุรกรรม popBackStack() และ replace() พร้อมกันอาจทำให้ Fragment ออกเพื่อเรียกใช้ 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 จะแยกออกเป็นสถานะไลบรารีส่วนตัว (คลาส Parcelable ที่กำหนดเอง) กับสถานะที่นักพัฒนาแอประบุไว้ ซึ่งตอนนี้จะจัดเก็บใน Bundle เสมอ ซึ่งช่วยให้ระบุได้ว่าสถานะของส่วนย่อยเกิดขึ้นที่ใด (b/207158202)

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

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

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

รุ่น 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 ที่กำหนดเองกับโฮสต์ที่ไม่ได้ใช้อินเทอร์เฟซ Callback ของผู้ให้บริการ (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) และการเรียกใช้ฟังก์ชันมอบหมายที่เลิกใช้งานแล้วจะเผยแพร่ไปยัง Fragment ย่อยไม่สำเร็จ (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)

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

  • ตอนนี้ไลบรารี Fragment จะขึ้นอยู่กับวงจร 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() แสดง
  • การเปลี่ยนโครงสร้างอินสแตนซ์ที่บันทึกไว้ - ส่วนย่อยเริ่มเปลี่ยนวิธีบันทึกสถานะอินสแตนซ์แล้ว การดำเนินการนี้จะช่วยระบุสถานะที่บันทึกไว้ในข้อมูลโค้ดและแหล่งที่มาของสถานะได้อย่างชัดเจน การเปลี่ยนแปลงปัจจุบันมีดังต่อไปนี้
    • ตอนนี้ FragmentManager จะบันทึกสถานะอินสแตนซ์ที่บันทึกไว้ลงใน Bundle แทนที่จะบันทึกใน Parcelable ที่กําหนดเองโดยตรง
    • ตอนนี้ระบบจะบันทึกผลลัพธ์ที่ตั้งค่าไว้ผ่าน Fragment Result APIs ที่ยังไม่ได้แสดงแยกต่างหากจากสถานะภายในของ FragmentManager
    • ตอนนี้ระบบจะบันทึกสถานะที่เชื่อมโยงกับแต่ละรายการแยกจากสถานะภายในของ FragmentManager ซึ่งจะช่วยให้คุณเชื่อมโยงจำนวนสถานะที่บันทึกไว้ซึ่งเชื่อมโยงกับแต่ละรายการกับรหัสที่ไม่ซ้ำกันซึ่งอยู่ในบันทึกการแก้ไขข้อบกพร่องของ FragmentManager ได้Fragment

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

  • ตอนนี้ FragmentStrictMode ช่วยให้ Fragment ส่วนตัวของบุคคลที่สามในการข้ามบทลงโทษการละเมิดที่เฉพาะเจาะจงได้โดยใช้ 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 ช่วยให้ Fragment ส่วนตัวของบุคคลที่สามในการข้ามบทลงโทษการละเมิดที่เฉพาะเจาะจงได้โดยใช้ 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 ที่กําหนดเองแทนที่จะใช้ฟีเจอร์ของเศษส่วนของ defaultViewModelProviderFactory เสมอ (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

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

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

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

  • ระบบได้นำ 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)
  • ตอนนี้แป้นพิมพ์จะปิดโดยอัตโนมัติเมื่อเปลี่ยนจากส่วนที่เปิดแป้นพิมพ์อยู่ไปยังส่วนที่แสดง Recycler View (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 มีคอมมิตเหล่านี้

เชิงเส้น

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

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

  • ตอนนี้ข้อความการเลิกใช้งานสำหรับ API ได้รับการจัดการโดย 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 เคารพความสามารถในการเว้นว่างอย่างเหมาะสม (If694a, b/189629145)
  • FragmentStrictMode เขียนเป็นภาษา Kotlin (I11767, b/199183506)

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

  • แก้ไขปัญหาที่ระบบไม่ล้างสถานะของข้อมูลโค้ดที่เพิ่มด้วย 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 มีคอมมิตเหล่านี้

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

  • ปรับปรุงการตรวจสอบ Lint ของ UseRequireInsteadOfGet เพื่อจัดการวงเล็บที่ซ้ำซ้อนได้ดียิ่งขึ้น (I2d865)
  • ปรับปรุงUseGetLayoutInflaterการตรวจสอบ Lint เพื่อจัดการกับกรณีขอบเพิ่มเติม (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 มีการคอมมิตเหล่านี้

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

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

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

เวอร์ชัน 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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • คลาส Fragment StrictMode Violation ทั้งหมดได้รับการอัปเดตด้วยข้อความแสดงข้อผิดพลาดที่ละเอียดมากขึ้นซึ่งอธิบายรายละเอียดของการละเมิด (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)
  • การตรวจสอบ Lint ของ 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() ซึ่งจะช่วยให้คุณแสดงธุรกรรมเหล่านั้นและกลับไปยังสถานะก่อนหน้าได้โดยใช้กลไกสำหรับการบันทึกสถานะด้วยข้อมูลโค้ดที่แยกส่วนเพื่อให้ข้อมูลโค้ดที่แยกส่วนกู้คืนสถานะได้อย่างเหมาะสม

รุ่นนี้ต่อยอดจากกลไกเหล่านี้ด้วยการให้บริการ API ของ FragmentManager ใหม่ 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

API ของ FragmentStrictMode มีการตรวจสอบรันไทม์ที่ช่วยให้คุณยืนยันได้ว่าแอปหรือไลบรารีที่คุณใช้ไม่ได้เรียกใช้ Fragment API ที่เลิกใช้งานแล้ว เมื่อตรวจพบการละเมิด คุณสามารถเลือกพิมพ์ข้อความบันทึก เรียก Listener ที่กำหนดเองของคุณเอง หรือทำให้แอปขัดข้องได้ 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 เป็นคอนเทนเนอร์สำหรับ Fragment ในเลย์เอาต์เสมอ (#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 แล้ว ซึ่งจะช่วยให้คุณใช้ 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 เอง และคุณควรลบล้าง onCancel() และ onDismiss() เพื่อให้ได้รับ Callback เหล่านี้ (#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 ออกจากกลุ่มผลลัพธ์ของ Fragment ได้หลังจากที่กระบวนการสิ้นสุดลง (I65932, b/187443158)
  • จาก Fragment 1.3.4: เมื่อทำการเปลี่ยนองค์ประกอบที่แชร์ใน ViewGroup หาก ViewGroup มีการตั้งค่า transitionGroup เป็นเท็จ ตอนนี้การเปลี่ยนจะทำงานอย่างถูกต้อง (I99675)

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

  • ขอบคุณ simonschiller ให้ FragmentScenario ติดตั้งใช้งาน Closeable (#121, b/143774122)
  • ขอขอบคุณ simonschiller ที่เพิ่ม FragmentStrictMode API ทั้งหมดในรุ่นนี้
  • ขอขอบคุณ tatocaster ที่เพิ่มUseGetLayoutInflater การตรวจสอบขุย (#156, b/170781346)
  • ขอขอบคุณ tatocaster ที่เพิ่มการตรวจสอบ Lint DialogFragmentCallbacksDetector (#171, b/181780047)

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

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

เวอร์ชัน 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 ที่ Fragment ของคุณได้อย่างถูกต้องหากลบล้าง getDefaultViewModelProviderFactory() (เหมือนกับที่ Fragment ที่มีคำอธิบายประกอบ @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() กับมุมมองของ Fragment (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 Fragment ผ่าน 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 และแยกสถานะของ Fragment ออกจากกิจกรรมที่สำคัญ
    • ตอนนี้ 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)

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

  • มุมมองของ Fragment Lifecycle จะจัดการกรณีที่มุมมองของ Fragment ถูกทำลายก่อนที่ 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)
  • ตอนนี้โฟกัสจะได้รับการกู้คืนไปยังมุมมองรูทของ Fregment อย่างถูกต้องเมื่อกลับมาทำงานอีกครั้ง (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)

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

  • FragmentContainerViews ที่ไม่ทำให้ส่วนย่อยพองขึ้นโดยใช้แอตทริบิวต์ class หรือ android:name สามารถนำมาใช้นอก FragmentActivity ได้แล้ว (Id4397, b/172266337)
  • การพยายามตั้งค่าวงจรชีวิตของข้อมูลโค้ดสูงสุดเป็น DESTROYED จะแสดงข้อผิดพลาด IllegalArgumentException (Ie7651, b/170765622)
  • ตอนนี้การเริ่มต้น FragmentStatus ด้วยสถานะ 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)

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

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

ผู้จัดการสถานะคนใหม่

เวอร์ชันนี้มีการรีแฟกทอริงที่สำคัญในการจัดการสถานะภายในของ 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)
  • ฟragment จะไม่เรียก onCreateView() ในฟragment ที่ถูกทำลายอีกต่อไปเมื่อมีการเลื่อนเวลาการแทนที่ฟragment (b/143915710)
  • ตอนนี้ข้อความแสดงข้อผิดพลาดเมื่อพยายามรวมอินสแตนซ์เฟรมเวิร์ก Transition กับ AndroidX Transition จะกล่าวถึงส่วนที่มีค่าการเปลี่ยนที่ไม่ถูกต้อง (b/155574969)

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

  • ตอนนี้คุณสามารถเรียก launch() ใน ActivityResultLauncher ในเมธอดวงจรชีวิตของ onCreate() ของ Fragment ได้แล้ว (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 ออกจาก Activity ที่เกี่ยวข้อง (b/156527405)
  • ตอนนี้ SavedStateRegistryOwner ที่ ViewTreeSavedStateRegistryOwner แสดงผลจะเชื่อมโยงกับวงจรชีวิตของมุมมองข้อมูลโค้ด วิธีนี้ช่วยให้มั่นใจว่ามีการบันทึกสถานะและกู้คืนสถานะพร้อมกันกับมุมมองของข้อมูลโค้ด (b/158503763)

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

  • ตอนนี้ Fragment จะรอให้แนบมุมมองของ Fragment ก่อนเรียก 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

  • ตอนนี้ API ของ setFragmentResult() และ setFragmentResultListener() จะใช้ Bundle และ FragmentResultListener ตามลําดับ หากต้องการล้างผลการค้นหาหรือ 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() ใน Fragment แล้ว โปรดใช้ 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: อัปเดตกฎ Fragment 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() โดยไม่ต้องลบล้างเมธอดใน Fregment นอกเหนือจากการระบุฮุกสําหรับการทดสอบโฟลว์เหล่านี้ ดูการรับผลลัพธ์จากกิจกรรมที่อัปเดตแล้ว (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)
  • จาก Fragment 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() ใน Fragments เลิกใช้งานแล้ว ในการเปิดตัว ViewModels ทำให้นักพัฒนาซอฟต์แวร์มี API เฉพาะสำหรับการเก็บรักษาสถานะที่สามารถเชื่อมโยงกับกราฟกิจกรรม ส่วนย่อย และการนำทาง วิธีนี้ช่วยให้นักพัฒนาซอฟต์แวร์ใช้ ViewModel ปกติที่ไม่ได้เก็บรักษาไว้ได้ และแยกสถานะที่เฉพาะเจาะจงที่ต้องการเก็บรักษาไว้ หลีกเลี่ยงแหล่งที่มาที่พบบ่อยของการรั่วไหล และคงคุณสมบัติที่เป็นประโยชน์ของการสร้างและการทำลายสถานะที่เก็บรักษาไว้เพียงครั้งเดียว (กล่าวคือ ตัวสร้างของ ViewModel และคอลแบ็ก onCleared() ที่ได้รับ) (b/143911815)
  • การเปิดตัว ViewPager2 1.0.0 ทำให้คลาส FragmentPagerAdapter และ FragmentStatePagerAdapter สำหรับโต้ตอบกับ ViewPager เลิกใช้งานแล้ว ดูย้ายข้อมูลจาก ViewPager ไปยัง ViewPager2 (b/145132715)

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

  • ตอนนี้กฎของ Fragment ProGuard จะเก็บเฉพาะคลาส 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)
  • แก้ไขข้อสันนิษฐานที่ผิดพลาดในการตรวจสอบ Lint ของ UseRequireInsteadOfGet เมื่อใช้ชื่อตัวแปรในเครื่องซึ่งบดบังชื่อพร็อพเพอร์ตี้ 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 ของ Fragment เพื่อหลีกเลี่ยงคำเตือน 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)

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

เวอร์ชัน 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 เป็นคอนเทนเนอร์ที่แนะนําอย่างยิ่งสําหรับการใส่ Fragment แบบไดนามิก ซึ่งมาแทนที่การใช้ FrameLayout หรือเลย์เอาต์อื่นๆ นอกจากนี้ ยังรองรับ class, android:name และ android:tag (ไม่บังคับ) เดียวกันกับแท็ก <fragment> แต่จะใช้สํานวน FragmentTransaction ปกติเพื่อเพิ่มข้อมูลโค้ดเริ่มต้นนี้แทนเส้นทางโค้ดที่กําหนดเองซึ่ง <fragment> ใช้
  • เวลาของ onDestroyView(): ตอนนี้ Fragment จะรอให้ภาพเคลื่อนไหวเมื่อออก ออกจากการเปลี่ยนเฟรมเวิร์ก และออกจากการเปลี่ยน AndroidX (เมื่อใช้การเปลี่ยน 1.3.0) เพื่อดำเนินการให้เสร็จสมบูรณ์ก่อนเรียกใช้ onDestroyView()
  • add() และ replace() ตามคลาส: เพิ่มการโอเวอร์โหลดใหม่ของ add() และ replace() ใน FragmentTransaction ที่ใช้ Class<? extends Fragment> และ Bundle (ไม่บังคับ) ของอาร์กิวเมนต์ วิธีการเหล่านี้ใช้ FragmentFactory เพื่อสร้างอินสแตนซ์ของ Fregment เพื่อเพิ่ม นอกจากนี้ เรายังได้เพิ่มส่วนขยาย 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 ไม่ได้เก็บ Fragment ที่อ้างอิงผ่านแอตทริบิวต์ class หรือ android:name ใน FragmentContainerView โดยอัตโนมัติ ซึ่งกำหนดให้คุณต้องเพิ่มกฎ Keep สำหรับแต่ละคลาสของ Fragment ด้วยตนเอง (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 หลังจากเปิด Fragment ที่ซ่อนอยู่ (b/70793925)
  • ตอนนี้การเปลี่ยนองค์ประกอบที่แชร์แบบ Fragment จะจัดการมุมมองที่มีการหมุน ปรับขนาด ฯลฯ แล้ว (b/142835261)

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

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

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

  • ตอนนี้ 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() ของ Fragment ไม่ได้รับแอตทริบิวต์ที่ถูกต้องจาก 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 และแอตทริบิวต์ XML ของ android:tag ที่ไม่บังคับ FragmentContainerView จะใช้ FragmentTransaction ปกติในส่วนฮู้ดเพื่อเพิ่มส่วนย่อยเริ่มต้น ซึ่งต่างจากแท็ก <fragment> ซึ่งทำให้ดำเนินการ FragmentTransaction ต่อไปได้ใน FragmentContainerView และทำให้สามารถใช้ View Binding สำหรับเลย์เอาต์ได้ (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 ตอนนี้ Fragments จะยกเลิกการเปลี่ยน 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 และเพิ่ม Fragment ลงไป (คุณสามารถใช้ isAdded() เพื่อพิจารณาว่าจะเรียกได้อย่างปลอดภัยหรือไม่) (b/140574496)
  • เลิกใช้งานเมธอด FragmentManager.enableDebugLogging แบบคงที่แล้ว ตอนนี้ FragmentManager จะยึดตาม Log.isLoggable() สำหรับแท็ก FragmentManager ซึ่งจะช่วยให้คุณเปิดใช้การบันทึก DEBUG หรือ VERBOSE ได้โดยไม่ต้องคอมไพล์แอปอีกครั้ง (aosp/1116591)

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

  • ตอนนี้ Fragment จะถูกทำลายอย่างถูกต้องขณะที่ภาพเคลื่อนไหวออกจาก Fragment อื่นๆ ทำงานอยู่ (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 จะรอให้การเปลี่ยน (นอกเหนือจากภาพเคลื่อนไหวซึ่งแก้ไขแล้วใน 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)
  • ตอนนี้ Fragment จะรอให้ภาพเคลื่อนไหวเสร็จสิ้นก่อนที่จะส่ง 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)
  • ตอนนี้ระบบจะไม่สนใจภาพเคลื่อนไหวและการเปลี่ยนภาพของ Fragment เมื่อใช้ animateLayoutChanges="true" ซึ่งเป็นการแก้ไขปัญหาที่ Fragments ไม่ได้รับการทำลายอย่างถูกต้อง (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

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

  • ตอนนี้รายการในเมนูที่ขยายตัวจากส่วนย่อยย่อยจะถูกนำออกอย่างถูกต้องเมื่อนำส่วนย่อยหลักออก 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)
  • Fragment จะไม่บังคับใช้ 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)
  • แก้ไขปัญหาที่ DialogFragment เรียก onDismiss() 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 artifact และ FragmentScenario ซึ่งสร้างขึ้นจาก androidx.test:core APIs ดูรายละเอียดเพิ่มเติมในเอกสารประกอบการทดสอบข้อมูลโค้ด

ฟีเจอร์ใหม่

  • คลาส FragmentScenario ใหม่สําหรับการทดสอบส่วนย่อยแยกต่างหาก
  • ตอนนี้คุณตั้งค่า FragmentFactory ใน FragmentManager ใดก็ได้เพื่อควบคุมวิธีสร้างอินสแตนซ์ใหม่ของ Fragment
  • เพิ่มผู้รับมอบสิทธิ์พร็อพเพอร์ตี้ Kotlin ของ by viewModels() สำหรับการเรียกข้อมูล ViewModels จาก Fragment
  • ตอนนี้ระบบจะยกเลิกเหตุการณ์อินพุตที่รอดำเนินการ (เช่น การคลิก) ใน 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 ที่ถูกต้อง