मेरा प्रश्न स्पष्ट वंशानुगत मतभेदों के अलावा है, मुख्य अंतर क्या हैं 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और LoaderManagerFragmentActivity के लिए अलग समर्थन संस्करण हैं:
यदि आप Fragmentएक Activity(हनीकोम्ब और अप) में एक का उपयोग कर रहे हैं , तो कॉल करें
getFragmentManager() लेना android.app.FragmentManagergetLoaderManager() लेना 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 पर सर्च करते हैं तो बहुत सारे उदाहरण हैं।