2012-05-15 4 views
133

मेरा प्रश्न स्पष्ट विरासत मतभेदों के अलावा है, Fragment और FragmentActivity के बीच मुख्य अंतर क्या हैं? प्रत्येक वर्ग किस परिदृश्य में सबसे उपयुक्त है? मैं समझने की कोशिश कर रहा हूं कि इन दोनों कक्षाओं में क्यों मौजूद है ...टुकड़े टुकड़े और टुकड़े के बीच अंतर

उत्तर

255

एक Fragment एक Activity का एक वर्ग है, जो है:

  • अपने स्वयं के जीवन चक्र
  • स्वयं के इनपुट ईवेंट
  • या जोड़ा जा सकता है हटा दिया, जबकि Activity चल रहा है प्राप्त करता है।

Fragment हमेशा Activity में एम्बेड किया जाना चाहिए।

Fragments हनीकॉम्ब (3.0) से पहले एपीआई का हिस्सा नहीं हैं। यदि आप हनीकॉम्ब से पहले प्लेटफ़ॉर्म संस्करण को लक्षित करने वाले ऐप में Fragments का उपयोग करना चाहते हैं, तो आपको अपनी परियोजना में Support Package जोड़ने और का उपयोग अपने Fragments को पकड़ने के लिए करना होगा। FragmentActivity कक्षा में Fragments से निपटने के लिए एक एपीआई है, जबकि Activity कक्षा, हनीकॉम्ब से पहले, नहीं है।

यदि आपकी परियोजना केवल हनीकॉम्ब या नए को लक्षित कर रही है, तो आपको Activity का उपयोग करना चाहिए और को पकड़ने के लिए FragmentActivity का उपयोग करना चाहिए।

कुछ विवरण:

उपयोग Activity साथ android.app.Fragmentandroid.support.v4.app.FragmentFragmentActivity के साथ उपयोग करें। 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 लेआउट का हिस्सा नहीं होना चाहिए। इसे गतिविधि के लिए एक अदृश्य कार्यकर्ता के रूप में उपयोग किया जा सकता है, जिसमें कोई यूआई नहीं है।

+5

हालांकि, एक लेआउट गतिविधि लेआउट का हिस्सा होने की आवश्यकता नहीं है; आप गतिविधि के लिए एक अदृश्य कार्यकर्ता के रूप में अपने यूआई के बिना एक टुकड़े का भी उपयोग कर सकते हैं। – uzay95

+1

@ uzay95 इस बात को इंगित करने के लिए धन्यवाद। मैंने इसका उल्लेख करने के अंत में एक खंड जोड़ा। –

+0

@ गुन्नारकारल्सन क्या हम विखंडन में विखंडन जोड़ सकते हैं? – Dhasneem

14

फ्रैगमेंटएक्टिविटी हमारी क्लासिक गतिविधि है जो टुकड़े समर्थन के साथ है, और कुछ नहीं। इसलिए फ्रैगमेंट एक्टिविटी की आवश्यकता होती है, जब एक फ्रैगमेंट गतिविधि से जुड़ा होगा।

अच्छी तरह से टुकड़ा एक अच्छा घटक है जो गतिविधि के मूल व्यवहार की प्रतिलिपि बनाता है, फिर भी कार्य के क्रम में गतिविधि के साथ गतिविधि से जुड़े अकेले अनुप्रयोग घटक नहीं हैं। अधिक जानकारी के

+1

बीटीडब्ल्यू, पुराना उत्तर, जो केवल उन ऐप्स पर लागू होता है जो एपीआई 11 से पुराने उपकरणों पर काम करना चाहते हैं। – ToolmakerSteve

+0

@ToolmakerSteve क्या आप अधिक जानकारी प्रदान कर सकते हैं? यदि संभव हो, तो क्या आप उत्तर को अद्यतित संस्करण के साथ संपादित कर सकते हैं? –

1

एक FragmentActivity के लिए

देखो here एक तदर्थ गतिविधि कि टुकड़ा होता है। इन कुछ शब्दों में मैंने आपको मुख्य महत्वपूर्ण परिवर्तनों में से एक बताया है, एंड्रॉइड 3.0 (हनीकॉम्ब) के साथ, एंड्रॉइड टीम एंड्रॉइड एसडीके में डाली गई है।

इन नई तरह की अवधारणा के साथ कोड और लेआउट के आपके टुकड़े अधिक लचीला और रखरखाव हो जाते हैं। यदि आप Google पर खोज करते हैं तो बहुत सारे उदाहरण हैं।

8

फ्रैगमेंट एक्टिविटी को एक नियमित गतिविधि वर्ग के रूप में सोचें जो टुकड़ों का समर्थन कर सकता है। हनीकॉम से पहले, एक गतिविधि वर्ग सीधे टुकड़ों को supoprt नहीं कर सका, इसलिए यह उन गतिविधियों में जरूरी है जो टुकड़ों का उपयोग करते हैं।

यदि आपका लक्षित वितरण हनीकॉम्ब है और इससे परे आप गतिविधि का विस्तार कर सकते हैं।

इसके अलावा एक टुकड़ा को 'उप-गतिविधि' के रूप में माना जाना है। यह एक गतिविधि के बिना अस्तित्व में नहीं हो सकता है। हमेशा उप-गतिविधि के रूप में एक टुकड़े के बारे में सोचें और आपको अच्छा होना चाहिए। तो गतिविधि माता-पिता और टुकड़े बच्चे के प्रतीकात्मक संबंध होंगे।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^