ฉันกำลังเขียนแอปสำหรับแท็บเล็ต 4.0 และ 4.1 ซึ่งฉันไม่ต้องการใช้ไลบรารีสนับสนุน (หากไม่จำเป็น) แต่ใช้เฉพาะ 4.x api เท่านั้น
ดังนั้นแพลตฟอร์มเป้าหมายของฉันจึงถูกกำหนดไว้อย่างดีเช่น:> = 4.0 และ <= 4.1
แอปมีเค้าโครงหลายบานหน้าต่าง (สองส่วนเล็ก ๆ ทางซ้ายหนึ่งชิ้นส่วนเนื้อหาทางด้านขวา) และแถบการดำเนินการที่มีแท็บ
คล้ายกับสิ่งนี้:
การคลิกแท็บบนแถบการดำเนินการจะเปลี่ยนแฟรกเมนต์ 'ด้านนอก' จากนั้นแฟรกเมนต์ด้านในจะเป็นแฟรกเมนต์ที่มีแฟรกเมนต์ที่ซ้อนกันสองชิ้น (1. แฟรกเมนต์รายการเล็กทางซ้าย 2. แฟรกเมนต์เนื้อหากว้าง)
ตอนนี้ฉันสงสัยว่าแนวทางปฏิบัติที่ดีที่สุดในการเปลี่ยนชิ้นส่วนและชิ้นส่วนที่ซ้อนกันโดยเฉพาะอย่างยิ่งคืออะไร ViewPager เป็นส่วนหนึ่งของไลบรารีการสนับสนุนไม่มีทางเลือก 4.x ดั้งเดิมสำหรับคลาสนี้ ดูเหมือนว่า 'เลิกใช้แล้ว' ในความหมายของฉัน - http://developer.android.com/reference/android/support/v4/view/ViewPager.html
จากนั้นฉันอ่านบันทึกประจำรุ่นสำหรับ Android 4.2 เกี่ยวกับChildFragmentManager
ซึ่งน่าจะเหมาะสม แต่ฉันกำหนดเป้าหมายเป็น 4.0 และ 4.1 ดังนั้นจึงไม่สามารถใช้ได้เช่นกัน
ChildFragmentManager
มีเฉพาะใน 4.2
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager ()
น่าเสียดายที่แทบจะไม่มีตัวอย่างที่ดีที่แสดงแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้งานชิ้นส่วนโดยไม่มีไลบรารีการสนับสนุนแม้แต่ในคู่มือสำหรับนักพัฒนา Android ทั้งหมด และโดยเฉพาะอย่างยิ่งไม่มีอะไรเกี่ยวกับชิ้นส่วนที่ซ้อนกัน
ดังนั้นฉันจึงสงสัยว่า: เป็นไปไม่ได้ที่จะเขียน 4.1 แอพที่มีส่วนที่ซ้อนกันโดยไม่ใช้ไลบรารีการสนับสนุนและทุกสิ่งที่มาพร้อมกับมัน? (ต้องใช้ FragmentActivity แทน Fragment ฯลฯ ?) หรือแนวทางปฏิบัติที่ดีที่สุดคืออะไร?
ปัญหาที่ฉันกำลังมีในการพัฒนาคือคำแถลงนี้:
ขณะนี้ไลบรารีการสนับสนุน Android รองรับส่วนที่ซ้อนกันแล้วดังนั้นคุณสามารถใช้การออกแบบชิ้นส่วนที่ซ้อนกันบน Android 1.6 ขึ้นไป
หมายเหตุ: คุณไม่สามารถขยายเค้าโครงเป็นส่วนย่อยได้เมื่อเค้าโครงนั้นมีไฟล์
<fragment>
. ส่วนที่ซ้อนกันจะได้รับการสนับสนุนเมื่อเพิ่มลงในส่วนแบบไดนามิกเท่านั้น
เนื่องจากฉันใส่กำหนดส่วนที่ซ้อนกันใน XML ซึ่งทำให้เกิดข้อผิดพลาดเช่น:
Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_
ในขณะนี้ฉันสรุปด้วยตัวเอง: แม้ใน 4.1 เมื่อฉันไม่ต้องการกำหนดเป้าหมายแพลตฟอร์ม 2.x ชิ้นส่วนที่ซ้อนกันดังที่แสดงในภาพหน้าจอจะเป็นไปไม่ได้หากไม่มีไลบรารีสนับสนุน
(นี่อาจเป็นรายการวิกิมากกว่าคำถาม แต่อาจมีคนอื่นเคยจัดการมาก่อน)
ปรับปรุง:
คำตอบที่เป็นประโยชน์อยู่ที่: Fragment Inside Fragment
ActionBar
(ที่ Samsung สร้างขึ้นเอง) ดู ActionBarSherlock ให้ละเอียดยิ่งขึ้นมีแท็บใน ActionBar หากมีที่ว่าง