เหตุใดจึงใช้ Android Fragments


15

ฉันได้อ่านเอกสารประกอบและหัวข้อคำถามอื่น ๆเกี่ยวกับหัวข้อนี้และฉันไม่รู้สึกมั่นใจจริงๆ ฉันไม่เห็นข้อ จำกัด ของการใช้เทคนิคนี้อย่างชัดเจน

เศษจะเห็นในขณะนี้เป็นวิธีที่ดีที่สุด ; ทุกกิจกรรมควรเป็นส่วนสนับสนุนอย่างน้อยหนึ่งแฟรกเมนต์และไม่เรียกเลย์เอาต์โดยตรง

แฟรกเมนต์ถูกสร้างขึ้นเพื่อ:

  1. อนุญาตให้Activityใช้ชิ้นส่วนจำนวนมากเปลี่ยนระหว่างหน่วยเหล่านี้เพื่อนำหน่วยเหล่านี้กลับมาใช้ใหม่ ... ==> Fragmentทั้งหมดขึ้นอยู่กับContextกิจกรรมดังนั้นหากฉันต้องการสิ่งทั่วไปที่ฉันสามารถนำมาใช้ใหม่และจัดการกับกิจกรรมมากมายฉันสามารถ สร้างเลย์เอาต์ที่กำหนดเองของตัวเองหรือมุมมอง ... ฉันจะไม่สนใจเกี่ยวกับเลเยอร์การพัฒนาความซับซ้อนเพิ่มเติมที่ชิ้นส่วนจะเพิ่ม

  2. การจัดการความละเอียดที่แตกต่างกันดีกว่า ==> ตกลงสำหรับแท็บเล็ต / โทรศัพท์ในกรณีที่กระบวนการที่ยาวนานซึ่งเราสามารถแสดงสองชิ้น (หรือมากกว่า) ในกิจกรรมเดียวกันในแท็บเล็ตและหนึ่งต่อหนึ่งในโทรศัพท์ แต่ทำไมฉันถึงต้องใช้แฟรกเมนต์เสมอ ?

  3. การจัดการการเรียกกลับเพื่อนำทางระหว่าง Fragments (เช่น: หากผู้ใช้เข้าสู่ระบบฉันจะแสดงส่วนอื่นฉันแสดงส่วนอื่น) ===> เพียงแค่ลองดูว่ามีข้อบกพร่องมากมายในการลงชื่อเข้าใช้ SDK ของ Facebook เพราะเหตุนี้เพื่อให้เข้าใจว่าเป็นจริง (?) ...

  4. การพิจารณาว่าแอปพลิเคชัน Android นั้นยึดตามกิจกรรม ... การเพิ่มวงจรชีวิตอีกอันในกิจกรรมจะดีกว่าในการออกแบบแอปพลิเคชัน ... ฉันหมายถึงโมดูลสถานการณ์การจัดการข้อมูลและการเชื่อมต่อจะได้รับการออกแบบที่ดีขึ้น ทาง ===> นี่คือคำตอบของใครบางคนที่เคยเห็น Android SDK และ Android Framework พร้อมกับ Fragments Vision ฉันไม่คิดว่ามันผิด แต่ฉันไม่แน่ใจว่ามันจะให้ผลลัพธ์ที่ดี ... และมันเป็นนามธรรมจริง ๆ ...

====> ทำไมฉันต้องทำให้ชีวิตมีความซับซ้อนมากขึ้นเขียนโปรแกรมมากขึ้นในการใช้มันตลอดเวลา? มิฉะนั้นแล้วทำไมจึงเป็นวิธีปฏิบัติที่ดีที่สุดหากเป็นเพียงเครื่องมือสำหรับบางกรณี กรณีเหล่านี้คืออะไร


1
มันไม่ชัดเจนในสิ่งที่คุณถามคุณช่วยสรุปคำถามได้อาจจะต่ำกว่าการแจกแจงข้อดีและคำวิจารณ์ของคุณ
logc

ฉันเพิ่มคำถามโดยละเอียด
ahmed_khan_89

ฉันหลงทางเหมือน @logc คุณจะจัดการกับกรณีเหล่านี้ได้อย่างไรโดยไม่มีแฟรกเมนต์
neontapir

ฉันให้สิ่งที่ฉันจะทำโดยไม่มีแฟรกเมนต์: (1) สร้างตัวควบคุมทั่วไปที่กำหนดเองและนำกลับมาใช้ใหม่ตามที่ฉันต้องการ (2) โดยใช้ 2 กิจกรรมและนำทางด้วย startActivityForResult หรือเปลี่ยนระหว่างมุมมอง (แสดง / ซ่อน โดยไม่มีการเข้ารหัสมาก ... (3) คุณสามารถใช้การโทรกลับแม้ในกิจกรรมที่มีมุมมอง (4) มันเป็นคำตอบที่เป็นนามธรรมที่ฉันมักจะได้รับเมื่อฉันอภิปรายหัวข้อนี้ ... ซึ่งต้องการคำอธิบายเพิ่มเติม ...
ahmed_khan_89

1
อืมมม คำถาม & คำตอบนี้แสดงข้อ จำกัด ของการออกแบบ stackexchange ที่โปสเตอร์ดั้งเดิมเลือกคำตอบที่ "ดีที่สุด" (ตรงข้ามกับ slant.co ที่ทุกคนโหวต) ไม่เหมาะสำหรับคำถามทั่วไปเช่นนี้ ที่นี่คำถามที่คลุมเครือจะได้รับคำตอบที่เห็นได้ชัดว่าเห็นด้วยกับสิ่งที่ผู้ถามต้องการได้ยิน หากคุณไม่เห็นเหตุผลที่จะใช้แฟรกเมนต์ในสถานการณ์ของคุณโปรดอย่าทำเช่นนั้น คำถามที่ดีกว่าจะขอข้อดี / ข้อเสียของชิ้นส่วน VS กิจกรรม และมีหลายหัวข้อในหัวข้อที่แน่นอนนั้น
ToolmakerSteve

คำตอบ:


5

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

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

ตอนนี้ ...

====> ทำไมฉันต้องทำให้ชีวิตมีความซับซ้อนเข้ารหัสมากกว่า ... ?

แม้ว่าจะแนะนำคุณไม่จำเป็นต้องเว้นเสียแต่ว่าคุณวางแผนที่จะควบคุมวงจรชีวิตของแต่ละองค์ประกอบและ / หรือการนำสถานะสแต็กหรือประวัติของมุมมองก่อนหน้ามาใช้ซ้ำ


5

หากมีกรณี "เกตเวย์" ใช้สำหรับผู้ที่มีข้อกังขามันอาจจะเป็นกล่องโต้ตอบ วิธีการเลิกยาวshowDialog(...), onCreateDialog(...)ฯลฯ มีความสุขในที่กรอบจะเรียกพวกเขาจะทำลายโดยอัตโนมัติและสร้างไดอะล็อกของคุณเมื่อกิจกรรมโฮสติ้งถูกทำลายและสร้าง หากคุณสร้างกล่องโต้ตอบของคุณเองโดยตรงคุณจะต้องจัดการทุกอย่างด้วยตัวคุณเอง แต่ถ้าคุณใช้ a DialogFragmentคุณสามารถให้เฟรมเวิร์กจัดการให้คุณได้อีกครั้ง ในกรณีนี้ชิ้นส่วนสามารถทำให้การเข้ารหัสของคุณง่ายขึ้นอย่างมาก


1

ฉันถามคำถามนี้มากกว่าหนึ่งปีที่ผ่านมา

ฉันใช้ชิ้นส่วนทุกวันและฉันอยากจะแนะนำ

ก่อนอื่นผมอยากจะบอกว่าการใช้ชิ้นส่วนเป็นเพียงตัวเลือกและจะเป็นตัวสะท้อนให้เห็นเมื่อคุณเริ่มใช้มัน

ข้อดี:

1 / มันช่วยในการทำให้เป็นโมดูลรหัสที่คุณสามารถมีการไหลเต็มรูปแบบในหนึ่งกิจกรรมในชิ้นส่วนที่แยกจากกัน ตัวอย่าง: + รายการ / ตาราง & รายละเอียด + ล็อกอิน & ลงทะเบียน & ลืมรหัสผ่าน + ฯลฯ นี่เป็นสิ่งที่ยอดเยี่ยมที่จะได้รับรหัสที่ใช้ซ้ำได้ซึ่งคุณสามารถคัดลอกและวางในโครงการที่แตกต่างกันได้ตลอดเวลา

2 / คุณมีวงจรชีวิตใหม่เต็มไปด้วยความยุ่งยากที่เป็นจริง แต่ก็มีข้อดีเช่นกัน ตัวอย่าง: ชิ้นส่วนอินสแตนซ์ที่เก็บรักษาไว้นั้นยอดเยี่ยมมากเพราะสามารถแก้ไขปัญหาการวางแนวได้

3 / คุณสามารถจัดการการไหลของชิ้นส่วนของคุณตามเหตุการณ์และผู้ฟังจากกิจกรรม

4 / เศษของคุณในกิจกรรมของคุณ

5 / ใช้แถบการกระทำเดียวกันในหลายหน้าจอ

และอื่น ๆ อีกมากมาย...

ฉันยังคงใช้กิจกรรมเป็นที่จัดเก็บเฉพาะบางครั้งโดยเฉพาะอย่างยิ่งสำหรับเคสกล้อง Android API บางตัวและบางไลบรารีของบุคคลที่สามนั้นไม่ใช่เรื่องง่ายที่จะนำไปใช้ในแฟรกเมนต์

มันก็เหมือนกับเครื่องมือใด ๆ ที่คุณต้องพิจารณาและตัดสินด้วยตัวเองถ้ามันจะดีกว่าที่จะใช้มันในกรณีหรืออื่น ๆ

ฉันหวังว่านี่จะช่วยได้ !!!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.