ฉันมีชิ้นส่วนบางอย่างที่ต้องแสดงกล่องโต้ตอบปกติ ในกล่องโต้ตอบเหล่านี้ผู้ใช้สามารถเลือกคำตอบใช่ / ไม่ใช่จากนั้นส่วนควรทำงานตามนั้น
ตอนนี้Fragment
ชั้นไม่ได้มีวิธีการที่จะแทนที่ดังนั้นผมคิดว่าผมต้องใช้ไดอะล็อกนอกในที่มีonCreateDialog()
Activity
ไม่เป็นไร แต่Activity
จำเป็นต้องรายงานกลับคำตอบที่เลือกไปยังส่วนย่อย แน่นอนว่าฉันสามารถใช้รูปแบบการโทรกลับได้ที่นี่ดังนั้นแฟรกเมนต์จึงลงทะเบียนตัวเองที่Activity
คลาสของผู้ฟังและกิจกรรมจะรายงานคำตอบกลับผ่านสิ่งนั้นหรืออะไรทำนองนั้น
แต่ดูเหมือนว่าจะค่อนข้างยุ่งยากสำหรับงานง่ายๆเนื่องจากการแสดงกล่องโต้ตอบใช่ไม่ใช่ "แบบธรรมดา" ในส่วนย่อย ด้วยวิธีนี้ฉันFragment
จะมีความเป็นตัวเองน้อยลง
มีวิธีที่สะอาดกว่านี้ไหม
แก้ไข:
คำตอบสำหรับคำถามนี้ไม่ได้อธิบายรายละเอียดว่าควรใช้ DialogFragments เพื่อแสดงกล่องโต้ตอบจาก Fragments อย่างไร AFAIK วิธีที่จะไปคือ:
- แสดงส่วนย่อย
- เมื่อจำเป็นให้สร้าง DialogFragment
- ตั้งค่า Fragment ดั้งเดิมเป็นเป้าหมายของ DialogFragment นี้ด้วย
.setTargetFragment()
. - แสดง DialogFragment ด้วย. show () จาก Fragment ดั้งเดิม
- เมื่อผู้ใช้เลือกตัวเลือกบางอย่างใน DialogFragment นี้ให้แจ้ง Fragment ดั้งเดิมเกี่ยวกับการเลือกนี้ (เช่นผู้ใช้คลิก 'ใช่') คุณจะได้รับการอ้างอิงของ Fragment ดั้งเดิมด้วย .getTarget ()
- ปิด DialogFragment