ใช้ FragmentContainerView พร้อมองค์ประกอบการนำทางหรือไม่


38

หลังจากการปรับปรุงเพื่อนำร่อง2.2.0-beta01จากรุ่นก่อนหน้าผ้าสำลีให้คำเตือนเกี่ยวกับการเปลี่ยนเป็นแท็กที่มี<fragment>FragmentContainerView

อย่างไรก็ตามการแทนที่แท็กเพียงอย่างเดียวดูเหมือนว่าจะป้องกันไม่ให้กราฟการนำทางขยายตัว

ตามที่2.2.0-alpha01 , FragmentContainerViewถูกใช้ภายใน เราควรเพิกเฉยต่อคำเตือนที่เป็นขุยหรือไม่?


activity_main.xml

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Lint warning: "Replace the <fragment> tag with FragmentContainerView. -->
    <fragment
        android:id="@+id/nav_host_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph_main"/>

    <!-- other elements -->

</androidx.constraintlayout.widget.ConstraintLayout>

3
ข้อดีของการใช้FragmentContainerViewคืออะไร?
IgorGanapolsky

@IgorGanapolsky ดูเอกสารอย่างเป็นทางการ: developer.android.com/reference/androidx/fragment/app/ …
Eugen Pechanec

@EugenPechanec ทำไมเราต้องใช้เมื่อเรามี Jetpack Navigation
IgorGanapolsky

@IgorGanapolsky เป็นคำถามที่ดีมาก Jetpack Navigation นำทางระหว่างแฟรกเมนต์ Fragment เปลี่ยน (ป้อน / ภาพเคลื่อนไหวออก) ทำงานแตกต่างกันเมื่อเศษอยู่ในFragmentContainerViewและในรูปแบบภาชนะอื่น ๆ ความแตกต่างได้อธิบายไว้ในเอกสาร FCV ที่ลิงก์ด้านบน โดยทั่วไป FCV ควรจะทำให้ช่วงการเปลี่ยนภาพทำงานได้มากขึ้นตามที่คุณคาดหวัง หรือการนำทาง Jetpack ขึ้นอยู่กับชิ้นส่วน หากแฟรกเมนต์แตกคุณจะได้รับไลบรารี่แบบคงที่ใหม่หรือรอเวอร์ชันการนำทางใหม่ซึ่งขึ้นอยู่กับชิ้นส่วนคงที่ใหม่
Eugen Pechanec

@EugenPechanec ฉันเข้าใจในสิ่งที่คุณพูด อย่างไรก็ตามฉันคิดว่ามันเป็นเรื่องน่ารำคาญสำหรับนักพัฒนาที่จะติดตาม API ที่แตกต่างกันสองรายการเมื่อ Google ได้สนับสนุน Jetpack Navigation อย่างชัดเจนโดยเฉพาะ ...
IgorGanapolsky

คำตอบ:


13

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


ในตอนนี้คุณควรประกาศการพึ่งพา Fragment 1.2.0-beta02 เนื่องจากมีการแก้ไขสำหรับกรณีการใช้งานนี้

implementation "androidx.fragment:fragment:1.2.0-beta02"

รุ่น 1.2.0-beta02

11 ตุลาคม 2019

แก้ไขข้อผิดพลาด

แก้ไขปัญหาที่ส่วนของonInflate()ไม่ได้รับคุณลักษณะที่เหมาะสมจากการทำลายกรณีเช่นFragmentContainerView NavHostFragment( b / 142421837 )

ที่มา: https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0-beta02


6
วิธีนี้ไม่ได้ผลสำหรับฉัน
Glend

@glend กรุณาเตรียมโครงการน้อยที่สุดที่ reproduces ปัญหาและรายงานอย่างเป็นทางการติดตามปัญหา ขอบคุณ!
Eugen Pechanec

11

NavigationBasicSampleได้รับการปรับปรุง 2.2.0-alpha01 แต่ยังคงใช้fragmentแท็ก NavigationAdvancedSampleแสดงให้เห็นถึงการใช้งานของFragmentContainerViewแต่กราฟ nav จะพองในรหัส (พวกเขามีกราฟที่แตกต่างกัน) FragmentContainerViewและส่วนโฮสต์ที่สอดคล้องกันจะถูกเพิ่มใน ดังนั้นฉันจะบอกว่าในเวลานี้เราควรละเว้นคำเตือนถ้าเราต้องการอัตราเงินเฟ้ออัตโนมัติ


ฉันสังเกตสิ่งนี้ด้วยในตัวอย่าง ดูเหมือนว่าการเพิ่มการFragmentพึ่งพาล่าสุดจะดูแลคำเตือนผ้าสำลี
เกือบ

ทำไมเราต้องมี FragmentContainerView
IgorGanapolsky

ฉันตรวจสอบรหัสใน AdvancedSample แล้ว มันทำให้ฉันอาเจียนออกมา! ฉันไม่รู้ว่าทำไมทีมที่ google ต้องสร้างและทำลายสิ่งต่าง ๆ ในลักษณะที่น่าอึดอัดใจเช่นนั้น ตอนนี้ฉันอาจจะต้องคัดลอกฟังก์ชั่นเสริมในวันนี้ แต่นี่อาจทำให้ Tomorrow แตกอีกครั้งด้วยการอัพเดตบางอย่างในไลบรารีการนำทาง มันแย่มาก !!
sud007
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.