मेरा प्रश्न स्पष्ट वंशानुगत मतभेदों के अलावा है, मुख्य अंतर क्या हैं Fragment
और FragmentActivity
? प्रत्येक वर्ग के लिए सबसे उपयुक्त कौन से परिदृश्य हैं? मैं यह समझने की कोशिश कर रहा हूं कि इन दोनों वर्गों का अस्तित्व क्यों है ...
मेरा प्रश्न स्पष्ट वंशानुगत मतभेदों के अलावा है, मुख्य अंतर क्या हैं Fragment
और FragmentActivity
? प्रत्येक वर्ग के लिए सबसे उपयुक्त कौन से परिदृश्य हैं? मैं यह समझने की कोशिश कर रहा हूं कि इन दोनों वर्गों का अस्तित्व क्यों है ...
जवाबों:
A Fragment
का एक भाग है Activity
, जिसमें:
Activity
चल रहा है, जबकि जोड़ा या हटाया जा सकता है।एक Fragment
हमेशा एक में सन्निहित होना चाहिए Activity
।
Fragments
हनीकोम्ब (3.0) से पहले एपीआई का हिस्सा नहीं हैं। यदि आप Fragments
हनीकोम्ब से पहले प्लेटफ़ॉर्म संस्करण को लक्षित करने वाले ऐप में उपयोग करना चाहते हैं , तो आपको अपने प्रोजेक्ट में सपोर्ट पैकेज जोड़ना होगा और FragmentActivity
अपने होल्ड करने के लिए प्लेटफ़ॉर्म का उपयोग करना होगा Fragments
। FragmentActivity
वर्ग से निपटने के लिए एक API है Fragments
, जबकि Activity
वर्ग, मधुकोश करने से पहले, नहीं करता है।
यदि आपका प्रोजेक्ट केवल हनीकोम्ब या नए को टारगेट कर रहा है, तो आपको अपना होल्ड करने के लिए उपयोग करना चाहिए Activity
न FragmentActivity
कि Fragments
।
कुछ विवरण:
के android.app.Fragment
साथ प्रयोग करें Activity
। के android.support.v4.app.Fragment
साथ प्रयोग करें FragmentActivity
। समर्थन पैकेज Fragment
को न जोड़ें Activity
क्योंकि इससे अपवाद को फेंक दिया जाएगा।
के साथ सावधान रहने की बात: FragmentManager
और LoaderManager
FragmentActivity के लिए अलग समर्थन संस्करण हैं:
यदि आप Fragment
एक Activity
(हनीकोम्ब और अप) में एक का उपयोग कर रहे हैं , तो कॉल करें
getFragmentManager()
लेना android.app.FragmentManager
getLoaderManager()
लेना android.app.LoaderManager
यदि आप (प्री-हनीकोम्ब) Fragment
एक का उपयोग कर रहे हैं FragmentActivity
, तो कॉल करें:
getSupportFragmentManager()
पाने के लिए android.support.v4.app.FragmentManager
।getSupportLoaderManager()
लेना android.support.v4.app.LoaderManager
हां, मत करो
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
या
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
यह जानने के लिए भी उपयोगी है कि एक खंड में एम्बेडेड होना है, जबकि लेआउट Activity
का हिस्सा होना जरूरी नहीं है Activity
। यह गतिविधि के लिए एक अदृश्य कार्यकर्ता के रूप में इस्तेमाल किया जा सकता है, जिसमें स्वयं का कोई UI नहीं है।
FragmentActivity टुकड़े टुकड़े के साथ हमारी क्लासिक गतिविधि है, इससे ज्यादा कुछ नहीं। इसलिए FragmentActivity की जरूरत है, जब एक Fragment एक्टिविटी से जुड़ी होगी।
वेल फ्रैगमेंट एक अच्छा घटक है जो गतिविधि के बुनियादी व्यवहारों की नकल करता है, फिर भी गतिविधि की तरह एक स्टैंड-अलोन एप्लिकेशन घटक नहीं है और काम करने के लिए गतिविधि से जुड़ा होना आवश्यक है।
देखो यहाँ अधिक जानकारी के लिए
FragmentActivity को एक नियमित गतिविधि वर्ग के रूप में सोचें जो Fragments का समर्थन कर सकता है। हनीकॉम्ब से पहले, एक गतिविधि वर्ग सीधे फ्रैगमेंट को सुपरॉप्ट नहीं कर सकता था, इसलिए फ्रैगमेंट का उपयोग करने वाली गतिविधियों में इसकी आवश्यकता होती है।
यदि आपका लक्ष्य वितरण हनीकॉम्ब है और इससे परे आप इसके बजाय गतिविधि का विस्तार कर सकते हैं।
साथ ही एक खंड को एक 'उप-गतिविधि' माना जाना है। यह एक गतिविधि के बिना मौजूद नहीं हो सकता। हमेशा एक टुकड़ा एक उप-गतिविधि के रूप में सोचें और आपको अच्छा होना चाहिए। तो गतिविधि माता-पिता और टुकड़ा (बच्चे) प्रतीकात्मक संबंध का प्रकार होगा।
एक FragmentActivity एक तदर्थ गतिविधि है जिसमें Fragment होता है। इन कुछ शब्दों में मैंने आपको मुख्य महत्वपूर्ण परिवर्तनों में से एक समझाया है, जो कि एंड्रॉइड 3.0 (हनीकोम्ब) के साथ, एंड्रॉइड टीम ने एंड्रॉइड एसडीके में डाला है।
इन नई तरह की अवधारणा के साथ आपके कोड और लेआउट के टुकड़े अधिक लचीले और बनाए रखने योग्य हो जाते हैं। अगर आप google पर सर्च करते हैं तो बहुत सारे उदाहरण हैं।