ความแตกต่างระหว่าง Activity และ FragmentActivity


228

ฉันกำลังทำงานกับชิ้นส่วนและเจอสองสิ่งActivityและFragmentActivityมีการใช้หลายครั้ง ฉันต้องการทราบว่ามีความแตกต่างระหว่างสองสิ่งนี้เพราะเมื่อฉันเปลี่ยนActivityด้วยFragmentActivityจะไม่มีผลกับแอป

คำตอบ:


316

FragmentActivityเป็น subclass ของActivityที่ถูกสร้างขึ้นสำหรับแพคเกจสนับสนุน Android

FragmentActivityระดับเพิ่มวิธีการใหม่คู่เพื่อให้เข้ากันกับรุ่นเก่าของ Android แต่นอกเหนือจากนั้นมีจริงๆไม่มากของความแตกต่างระหว่างคนทั้งสอง เพียงให้แน่ใจว่าคุณเปลี่ยนสายทั้งหมดไปgetLoaderManager()และgetFragmentManager()ไปgetSupportLoaderManager()และgetSupportFragmentManager()ตามลำดับ


4
สวัสดีฉันไม่ได้เปลี่ยนการโทรเป็น getSupportLoaderManager () และ getSupportFragmentManager () .. แต่ก็ยังใช้งานได้ดี
Rookie

31
นั่นคือสิ่งที่ทำให้มันอันตรายมาก: พี FragmentActivityการสืบทอดgetLoaderManagerและgetFragmentManagerวิธีการจากActivityและเป็นผลให้คอมไพเลอร์จะไม่บ่น โอกาสที่คุณจะนำเข้าที่ไม่ถูกต้องLoaderManagerและFragmentManagerชั้นเรียนด้วย ตรวจสอบให้แน่ใจว่าคุณกำลังนำเข้าคลาสเหล่านี้จากแพ็คเกจการสนับสนุน ( android.support.v4.app) ไม่ใช่ Android SDK ( android.app)
Alex Lockwood

1
เราสามารถพูดได้หรือไม่ว่าถ้าเราต้องการใช้แฟรกเมนต์สำหรับ Android 2.x เราจำเป็นต้องใช้ FragmentActivity nad สำหรับเวอร์ชั่นที่รองรับแฟรกเมนต์ที่เราจำเป็นต้องใช้กิจกรรม
Rookie

55
ฉันคิดว่าสิ่งที่คุณพูดนั้นถูกต้อง แต่เพียงเพื่อให้เป็น 100% ชัดเจน ... การใช้งานActivityถ้าคุณกำลังใช้android.app.Fragment; ใช้ถ้าคุณกำลังใช้FragmentActivity android.support.v4.app.Fragmentห้ามแนบ a android.support.v4.app.Fragmentไปยัง a android.app.Activityเนื่องจากจะทำให้เกิดข้อยกเว้น
Alex Lockwood

13
อันดับแรกลองใช้บทช่วยสอนนี้ (วิธีใช้Fragmentsในแอปพลิเคชัน) จากนั้นดำเนินการต่อในบทช่วยสอนนี้ (วิธีใช้ประโยชน์จากFragments จากแพ็คเกจสนับสนุน) เอกสารบนเว็บไซต์นักพัฒนาเป็นมูลค่าการอ่านเช่นกัน
Alex Lockwood

4

FragmentActivityเป็นส่วนหนึ่งของห้องสมุดสนับสนุนในขณะที่Activityเป็นชั้นเริ่มต้นของกรอบ พวกเขามีหน้าที่เทียบเท่า

คุณควรใช้FragmentActivityและandroid.support.v4.app.Fragmentแทนที่จะเป็นค่าเริ่มต้นของแพลตฟอร์มActivityและandroid.app.Fragmentคลาส การใช้ค่าเริ่มต้นของแพลตฟอร์มหมายความว่าคุณต้องพึ่งพาการใช้ชิ้นส่วนใดก็ตามที่ใช้ในอุปกรณ์ที่คุณใช้งานอยู่ สิ่งเหล่านี้มักจะมีอายุหลายปีและมีข้อบกพร่องที่ได้รับการแก้ไขในไลบรารีการสนับสนุน


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