मेरा प्रश्न स्पष्ट विरासत मतभेदों के अलावा है, Fragment
और FragmentActivity
के बीच मुख्य अंतर क्या हैं? प्रत्येक वर्ग किस परिदृश्य में सबसे उपयुक्त है? मैं समझने की कोशिश कर रहा हूं कि इन दोनों कक्षाओं में क्यों मौजूद है ...टुकड़े टुकड़े और टुकड़े के बीच अंतर
उत्तर
एक Fragment
एक Activity
का एक वर्ग है, जो है:
- अपने स्वयं के जीवन चक्र
- स्वयं के इनपुट ईवेंट
- या जोड़ा जा सकता है हटा दिया, जबकि
Activity
चल रहा है प्राप्त करता है।
ए Fragment
हमेशा Activity
में एम्बेड किया जाना चाहिए।
Fragments
हनीकॉम्ब (3.0) से पहले एपीआई का हिस्सा नहीं हैं। यदि आप हनीकॉम्ब से पहले प्लेटफ़ॉर्म संस्करण को लक्षित करने वाले ऐप में Fragments
का उपयोग करना चाहते हैं, तो आपको अपनी परियोजना में Support Package जोड़ने और का उपयोग अपने Fragments
को पकड़ने के लिए करना होगा। FragmentActivity
कक्षा में Fragments
से निपटने के लिए एक एपीआई है, जबकि Activity
कक्षा, हनीकॉम्ब से पहले, नहीं है।
यदि आपकी परियोजना केवल हनीकॉम्ब या नए को लक्षित कर रही है, तो आपको Activity
का उपयोग करना चाहिए और को पकड़ने के लिए FragmentActivity
का उपयोग करना चाहिए।
कुछ विवरण:
उपयोग Activity
साथ android.app.Fragment
। android.support.v4.app.Fragment
FragmentActivity
के साथ उपयोग करें। Fragment
को Activity
पर समर्थन पैकेज न जोड़ें क्योंकि इससे अपवाद को फेंक दिया जाएगा।
एक बात सावधान साथ रहने के लिए: FragmentManager
और LoaderManager
FragmentActivity के लिए अलग से समर्थन संस्करण है:
आप एक Activity
में एक Fragment
(Honeycomb और ऊपर) का उपयोग कर रहे हैं, तो फोन
getFragmentManager()
पाने के लिएandroid.app.FragmentManager
getLoaderManager()
पाने के लिएandroid.app.LoaderManager
यदि आप एक FragmentActivity
(पूर्व-हनीकोम्ब) में एक Fragment
उपयोग कर रहे हैं, कहते हैं:
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
लेआउट का हिस्सा नहीं होना चाहिए। इसे गतिविधि के लिए एक अदृश्य कार्यकर्ता के रूप में उपयोग किया जा सकता है, जिसमें कोई यूआई नहीं है।
फ्रैगमेंटएक्टिविटी हमारी क्लासिक गतिविधि है जो टुकड़े समर्थन के साथ है, और कुछ नहीं। इसलिए फ्रैगमेंट एक्टिविटी की आवश्यकता होती है, जब एक फ्रैगमेंट गतिविधि से जुड़ा होगा।
अच्छी तरह से टुकड़ा एक अच्छा घटक है जो गतिविधि के मूल व्यवहार की प्रतिलिपि बनाता है, फिर भी कार्य के क्रम में गतिविधि के साथ गतिविधि से जुड़े अकेले अनुप्रयोग घटक नहीं हैं। अधिक जानकारी के
बीटीडब्ल्यू, पुराना उत्तर, जो केवल उन ऐप्स पर लागू होता है जो एपीआई 11 से पुराने उपकरणों पर काम करना चाहते हैं। – ToolmakerSteve
@ToolmakerSteve क्या आप अधिक जानकारी प्रदान कर सकते हैं? यदि संभव हो, तो क्या आप उत्तर को अद्यतित संस्करण के साथ संपादित कर सकते हैं? –
एक FragmentActivity के लिए
देखो here एक तदर्थ गतिविधि कि टुकड़ा होता है। इन कुछ शब्दों में मैंने आपको मुख्य महत्वपूर्ण परिवर्तनों में से एक बताया है, एंड्रॉइड 3.0 (हनीकॉम्ब) के साथ, एंड्रॉइड टीम एंड्रॉइड एसडीके में डाली गई है।
इन नई तरह की अवधारणा के साथ कोड और लेआउट के आपके टुकड़े अधिक लचीला और रखरखाव हो जाते हैं। यदि आप Google पर खोज करते हैं तो बहुत सारे उदाहरण हैं।
फ्रैगमेंट एक्टिविटी को एक नियमित गतिविधि वर्ग के रूप में सोचें जो टुकड़ों का समर्थन कर सकता है। हनीकॉम से पहले, एक गतिविधि वर्ग सीधे टुकड़ों को supoprt नहीं कर सका, इसलिए यह उन गतिविधियों में जरूरी है जो टुकड़ों का उपयोग करते हैं।
यदि आपका लक्षित वितरण हनीकॉम्ब है और इससे परे आप गतिविधि का विस्तार कर सकते हैं।
इसके अलावा एक टुकड़ा को 'उप-गतिविधि' के रूप में माना जाना है। यह एक गतिविधि के बिना अस्तित्व में नहीं हो सकता है। हमेशा उप-गतिविधि के रूप में एक टुकड़े के बारे में सोचें और आपको अच्छा होना चाहिए। तो गतिविधि माता-पिता और टुकड़े बच्चे के प्रतीकात्मक संबंध होंगे।
हालांकि, एक लेआउट गतिविधि लेआउट का हिस्सा होने की आवश्यकता नहीं है; आप गतिविधि के लिए एक अदृश्य कार्यकर्ता के रूप में अपने यूआई के बिना एक टुकड़े का भी उपयोग कर सकते हैं। – uzay95
@ uzay95 इस बात को इंगित करने के लिए धन्यवाद। मैंने इसका उल्लेख करने के अंत में एक खंड जोड़ा। –
@ गुन्नारकारल्सन क्या हम विखंडन में विखंडन जोड़ सकते हैं? – Dhasneem