คำนำ
หลังจากเรียนรู้ Java และ Android เป็นเวลาเกือบหนึ่งปีผลลัพธ์ของช่วงเวลาควรจะทำให้ไคลเอนต์ Android เสร็จสมบูรณ์อย่างอิสระและสร้างความมั่นใจในความมั่นคงของรุ่นสายหลัก ในช่วงเวลานั้นฉันพบหลุมมากมายและฉันก็เรียนรู้ความรู้ Android มากมายกับพี่ชายของฉัน แต่ผู้คนมักจะยอมรับการเปลี่ยนแปลงและไม่ทำให้ตัวเองสบายเกินไป ที่นี่เราสรุปชิ้นส่วนส่วนใหญ่ที่ใช้ในรายการก่อนหน้า
บทนำเกี่ยวกับแฟรกเมนต์
ชิ้นส่วนสามารถเข้าใจได้ว่าเป็นพฤติกรรมหรือส่วนหนึ่งของส่วนต่อประสานผู้ใช้ในกิจกรรมและจะต้องซ้อนกันในกิจกรรม แต่แฟรกเมนต์มีไฟล์เลย์เอาต์ XML อิสระของตัวเองและมีบรรจุภัณฑ์ที่ดี
สร้างชิ้นส่วน
สร้างชิ้นส่วนและสร้างกิจกรรม
ไฟล์เลย์เอาต์ XML นั้นเหมือนกับไฟล์เลย์เอาต์อื่น ๆ
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8" match_pareat "Android: Orientation =" Vertical "> <TextView Android: id ="@+id /textView "Android: layout_width =" wrap_content "Android: la yout_height =" wrap_content "Android: text =" @string /test > <ปุ่ม Android: id = "@+id /button" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: text = "@string /button" /> < /linearLayout>
ในรหัส Java โดยทั่วไปวิธีวงจรชีวิตต่อไปนี้สามารถดำเนินการได้ตามต้องการ: แฟรกเมนต์:
1. ONATTACH (): เมื่อชิ้นส่วนขึ้นอยู่กับกิจกรรมคุณจะได้รับการจัดการกิจกรรมในวิธีนี้เพื่อให้ได้การสื่อสารระหว่างส่วนและกิจกรรม
2. onCreate (): เริ่มต้นเฟรม
3. OnCreateView (): ระบบเรียกใช้วิธีนี้เมื่อวาดส่วนต่อประสานผู้ใช้เป็นครั้งแรกสำหรับแฟรกเมนต์
4. OnActivityCreated (): หลังจากถูกดำเนินการโดยกิจกรรมโฮสต์ onCreate Acffical คุณสามารถดำเนินการอินสแตนซ์วิดเจ็ตของ Fragment และการประมวลผลตรรกะทางธุรกิจในวิธีนี้
5. OnDestoryView (): โทรหาเมื่อเฟรมเริ่มถูกทำลาย
6. onstart (): โทรหาเมื่อชิ้นส่วนสามารถมองเห็นได้
นอกจากนี้ยังมีฟังก์ชั่นการโทรกลับอื่น ๆ อีกมากมายที่ใช้ในการจัดการวงจรชีวิตของชิ้นส่วน
วงจรชีวิตของชิ้นส่วน
แต่ละส่วนมีชุดวิธีการโทรกลับวงจรชีวิตของตัวเองและจัดการเหตุการณ์อินพุตผู้ใช้ของตัวเอง วงจรชีวิตที่สอดคล้องกันแสดงในรูปด้านล่าง:
เพิ่มชิ้นส่วนในกิจกรรม
ก่อนอื่นคุณต้องตรวจสอบให้แน่ใจว่าการแสดงความสามารถสนับสนุนชิ้นส่วนดังนั้นกิจกรรมมักจะต้องสืบทอดจาก fragmentactivity โดยปกติจะมีสองวิธีในการเพิ่มแฟรกเมนต์ให้กับกิจกรรม: คงที่และไดนามิก
วิธีการคงที่เพิ่มชิ้นส่วนโดยตรงไปยังไฟล์เลย์เอาต์ XML ของกิจกรรมดังที่แสดงด้านล่าง:
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8" Match_parant "Android: Baselinealigned =" False "Android: Orientation =" แนวนอน "> <fragment Android: id ="@+id/First "Android: name =" com layout_height = "match_parent" Android: layout_weight = "1" /> <fragment Android: id = "@+id /วินาที" Android: name = "com.example.se condfragment" "match_parent" Android: layout_weight = "1" /> < /linearlayout>
เมื่อแอตทริบิวต์ Android: Name ใน <Fragment> ระบุคลาสแฟรกเมนต์อินสแตนซ์ในเค้าโครงเมื่อสร้างเค้าโครงกิจกรรมจะสร้างอินสแตนซ์แต่ละเฟรมในไฟล์เลย์เอาต์และเรียกพวกเขาให้เรียกพวกเขาว่าแต่ละรูปแบบ . ระบบแทรกมุมมองที่ส่งคืนโดยตำแหน่งองค์ประกอบ <แฟรกเมนต์> โดยตรง
หมายเหตุ: แต่ละส่วนต้องการการระบุที่ไม่ซ้ำกัน มีสามวิธีในการจัดหา ID สำหรับชิ้นส่วน: มีสามวิธี:
วิธีการแบบไดนามิก
ใช้ FragmentTranscation คุณสามารถใช้ API ของ FragmentTranscation เพื่อใช้งานส่วนของกิจกรรม (เช่นการเพิ่มลบหรือแทนที่แฟรกเมนต์) รหัสอ้างอิงมีดังนี้:
FragmentManager FragmentManager = GetFragmentManager () FragmentTransaction FragmentTraction = FragmentManager.beginTraction ();
พารามิเตอร์แรกของฟังก์ชั่น Add () คือ ViewGroup ของแฟรกเมนต์ซึ่งระบุโดย ID ทรัพยากร (ID ทรัพยากร) เมื่อเปลี่ยนผ่าน FragmentTranscation ควรมีผลกับการเปลี่ยนแปลงทางสายตา ()
การสื่อสารชิ้นส่วน
ชิ้นส่วนไม่ควรสื่อสารโดยตรงและการมีปฏิสัมพันธ์ระหว่างพวกเขาควรดำเนินการผ่านกิจกรรมโฮสต์ มีสามวิธีในการโต้ตอบกับชิ้นส่วนและความกระตือรือร้น:
1. กิจกรรมสร้างส่วนที่มีพารามิเตอร์
2. กิจกรรมรักษาวัตถุที่จับวัตถุของชิ้นส่วนซึ่งสามารถเรียกได้โดยตรงว่าวิธีการสาธารณะของชิ้นส่วนผ่านที่จับ
3. ชิ้นส่วนสามารถรับที่จับผู้ฟังที่กำหนดไว้ในฟังก์ชัน Onattach
สร้างเฟรมด้วยพารามิเตอร์
ในบางกรณีชิ้นส่วนอาจต้องใช้พารามิเตอร์เฉพาะเพื่อเริ่มต้น เนื่องจากแฟรกเมนต์ต้องมีตัวสร้างโสมเพียงหนึ่งตัวคุณสามารถพิจารณาใช้วิธีการนิวอินเซนต์แบบคงที่เพื่อสร้างส่วนที่มีพารามิเตอร์ รหัสตัวอย่างมีดังนี้:
นำเข้า Android.os.bundle; นำเข้า Android.support.v4.app.fragment; ;;
คุณสามารถโหลดพารามิเตอร์ด้วยพารามิเตอร์ในกิจกรรม:
FragmentTransaction ft = getSupportfragmentManager ()
วิธีการโทรชิ้นส่วน
เนื่องจากกิจกรรมสามารถรับการจัดการแฟรกเมนต์แบบฝังได้วิธีนี้สามารถเรียกได้โดยตรงผ่านการจับแฟรกเมนต์
TestFragment ระดับสาธารณะขยายส่วน {โมฆะสาธารณะ dosomething (พารามิเตอร์สตริง) {// ทำอะไรบางอย่างในแฟรกเมนต์}}}} ในกิจกรรมคุณสามารถเรียกวิธีนี้โดยตรงผ่านการจัดการวัตถุของชิ้นส่วน:
การเรียนรู้ระดับสาธารณะของชั้นเรียนขยายการแยกส่วน {@Override โมฆะสาธารณะ onCreate (Bundle Savedancestate) {super.oncreate (savedincestate); ผู้ฟังชิ้นส่วน
หากแฟรกเมนต์จำเป็นต้องแบ่งปันกิจกรรมในกิจกรรมต้องใช้วิธีนี้ แฟรกเมนต์กำหนดอินเทอร์เฟซและอินเทอร์เฟซนี้ใช้งานโดยกิจกรรม กิจกรรมของอินเทอร์เฟซจะเกิดขึ้นในวิธี Onattach ()
รหัสอินเทอร์เฟซที่กำหนดไว้ในแฟรกเมนต์มีดังนี้:
นำเข้า Android.support.v4.app.fragment; ใช้เพื่อสื่อสารอินเทอร์เฟซสาธารณะ onitemselectListener {โมฆะสาธารณะ onrsesitemselect (ลิงก์สตริง);} // จัดเก็บผู้ฟัง (กิจกรรม) ที่จะมีเหตุการณ์ที่ถูกยิงเมื่อชิ้นส่วนถูกแนบ @Override โมฆะสาธารณะ ; Listener.onrsSitemSelect ("บางลิงก์");}}ใช้อินเทอร์เฟซนี้ในกิจกรรม:
นำเข้า Android.support.v4.app.fragmentactivity; DetailFragment);} // ตอนนี้เราสามารถกำหนดการดำเนินการใน Activ it. เมื่อไฟล์เหตุการณ์ Fragment @Override โมฆะสาธารณะ onrSesItemSelect (ลิงก์สตริง) {ถ้า (แฟรกเมนต์! = null && fragment.isinlayout ()) {fragment.settext );}}}