android - एंड्रॉइड-मुझे टुकड़े बनाम गतिविधियों और विचारों के कुछ स्पष्टीकरण की आवश्यकता है




android-layout android-fragments (8)

एंड्रॉइड एपीआई 11+ में, Google ने Fragment नामक एक नई कक्षा जारी की है।

वीडियो में, Google सुझाव देता है कि जब भी संभव हो ( link1 , link1 ), हमें गतिविधियों की बजाय टुकड़ों का उपयोग करना चाहिए, लेकिन उन्होंने बिल्कुल समझाया नहीं कि क्यों।

टुकड़ों का उद्देश्य और उनमें से कुछ संभावित उपयोग क्या हैं (कुछ यूआई उदाहरणों के अलावा जिन्हें सरल विचार / लेआउट द्वारा आसानी से हासिल किया जा सकता है)?

मेरा सवाल टुकड़ों के बारे में है:

  1. एक टुकड़े का उपयोग करने के उद्देश्य क्या हैं?
  2. गतिविधियों / विचार / लेआउट का उपयोग करने के मुकाबले टुकड़ों का उपयोग करने के फायदे और नुकसान क्या हैं?

बोनस प्रश्न:

  1. क्या आप टुकड़ों के लिए कुछ वाकई दिलचस्प उपयोग कर सकते हैं? जिन चीजों ने Google ने अपने वीडियो में उल्लेख नहीं किया है?
  2. टुकड़ों और उन गतिविधियों के बीच संवाद करने का सबसे अच्छा तरीका क्या है?
  3. जब आप टुकड़ों का उपयोग करते हैं तो याद रखने के लिए सबसे महत्वपूर्ण चीजें क्या हैं? आपके अनुभव से कोई सुझाव और चेतावनियां?

# 1 और # 2 एक टुकड़े का उपयोग करने के उद्देश्य क्या हैं और गतिविधियों / विचार / लेआउट का उपयोग करने के बजाय टुकड़ों का उपयोग करने के फायदे और नुकसान क्या हैं?

टुकड़े पुन: प्रयोज्य उपयोगकर्ता इंटरफेस बनाने के लिए एंड्रॉइड का समाधान हैं। आप गतिविधियों और लेआउट का उपयोग करके कुछ चीजों को प्राप्त कर सकते हैं (उदाहरण के लिए उपयोग करके)। तथापि; हनीकॉम्ब से एंड्रॉइड एपीआई में टुकड़े तारित किए जाते हैं, और ऊपर। मुझे विस्तार से बताएं;

  • ActionBar । यदि आप अपने ऐप पर नेविगेट करने के लिए टैब चाहते हैं, तो आप जल्दी से देखते हैं कि onTabSelectedonTabSelected इंटरफ़ेस आपको onTabSelected विधि के इनपुट तर्क के रूप में एक FragmentTransaction देता है। आप शायद इसे अनदेखा कर सकते हैं, और कुछ और चालाक कर सकते हैं, लेकिन आप एपीआई के खिलाफ काम करेंगे, इसके साथ नहीं।

  • FragmentManager आपके लिए एक बहुत चालाक तरीके से «वापस» संभालती है। पिछली गतिविधि के लिए पिछली गतिविधि का मतलब वापस नहीं है, जैसे नियमित गतिविधियों के लिए। इसका मतलब पिछले खंड राज्य में है।

  • आप स्वाइप इंटरफेस बनाने के लिए एक FragmentPagerAdapter साथ कूल ViewPager उपयोग कर सकते हैं। FragmentPagerAdapter कोड नियमित एडाप्टर की तुलना में अधिक क्लीनर है, और यह अलग-अलग टुकड़ों के तत्काल नियंत्रण को नियंत्रित करता है।

  • यदि आप फोन और टैबलेट दोनों के लिए एप्लिकेशन बनाने का प्रयास करते हैं तो आप अपने जीवन को बहुत आसान बना देंगे। चूंकि टुकड़े हनीकॉम + एपीआई के साथ इतने बंधे हुए हैं, इसलिए आप फोन पर उनका उपयोग कोड के पुन: उपयोग के लिए भी करना चाहते हैं। यही वह जगह है जहां संगतता लाइब्रेरी काम में आती है।

  • आप केवल फोन के लिए ऐप्स के लिए टुकड़े का उपयोग और उपयोग करना चाहिए। यदि आपके पास दिमाग में पोर्टेबिलिटी है। मैं ActionBarSherlock और संगतता पुस्तकालयों का उपयोग "आईसीएस लुकिंग" ऐप्स बनाने के लिए करता हूं, जो संस्करण 1.6 पर वापस वैसे ही दिखते हैं। आपको ActionBar जैसी नवीनतम सुविधाएं मिलती हैं, टैब, ओवरफ्लो, स्प्लिट एक्शन बार, व्यूपर आदि के साथ।

बोनस 2

टुकड़ों के बीच संवाद करने का सबसे अच्छा तरीका इराद हैं। जब आप एक टुकड़े में कुछ दबाते हैं तो आप आमतौर पर StartActivity() को डेटा के साथ कॉल करेंगे। आपके द्वारा लॉन्च की गई गतिविधि के सभी टुकड़ों पर इरादा पारित किया जाता है।


  1. टुकड़ा एक गतिविधि का एक हिस्सा है, जो उस गतिविधि के लिए अपना यूआई योगदान देता है। टुकड़ा एक उप गतिविधि की तरह सोचा जा सकता है। जहां पूरी स्क्रीन के साथ उपयोगकर्ता इंटरैक्ट करता है उसे गतिविधि के रूप में जाना जाता है। एक गतिविधि में कई टुकड़े हो सकते हैं। प्रारूप ज्यादातर गतिविधि का एक उप हिस्सा होते हैं।

  2. एक गतिविधि में स्क्रीन आकार के आधार पर 0 या कई टुकड़े हो सकते हैं। कई गतिविधियों में एक टुकड़े का पुन: उपयोग किया जा सकता है, इसलिए यह गतिविधियों में पुन: प्रयोज्य घटक की तरह कार्य करता है।

  3. एक टुकड़ा स्वतंत्र रूप से अस्तित्व में नहीं हो सकता है। यह हमेशा एक गतिविधि का हिस्सा होना चाहिए। जहां गतिविधि में किसी भी टुकड़े के साथ गतिविधि मौजूद हो सकती है।


एक टुकड़ा एक गतिविधि के अंदर रहता है।

जबकि एक गतिविधि स्वयं पर रहता है।


एक टुकड़ा किसी एप्लिकेशन के उपयोगकर्ता इंटरफ़ेस या व्यवहार का एक टुकड़ा है जिसे एक गतिविधि में रखा जा सकता है जो अधिक मॉड्यूलर गतिविधि डिज़ाइन को सक्षम बनाता है। अगर हम कहते हैं कि एक टुकड़ा एक प्रकार की निष्क्रियता है तो यह गलत नहीं होगा।

एक टुकड़े के बारे में महत्वपूर्ण मुद्दे निम्नलिखित हैं:

  1. एक टुकड़े का अपना लेआउट और अपने जीवन के कॉलबैक के साथ अपना व्यवहार होता है।

  2. गतिविधि चल रही है, जबकि आप गतिविधि में टुकड़े जोड़ या निकाल सकते हैं।

  3. मल्टी-फलक यूआई बनाने के लिए आप एक ही गतिविधि में एकाधिक टुकड़े जोड़ सकते हैं।

  4. कई गतिविधियों में एक टुकड़ा का उपयोग किया जा सकता है।

  5. खंड जीवन चक्र अपनी मेजबान गतिविधि के जीवन चक्र से निकटता से संबंधित है।

  6. जब गतिविधि रोका जाता है, तो एसिविटी में उपलब्ध सभी टुकड़े भी बंद कर दिए जाएंगे।

  7. एक टुकड़ा उस व्यवहार को कार्यान्वित कर सकता है जिसमें कोई उपयोगकर्ता इंटरफ़ेस घटक नहीं है।

  8. एपीआई संस्करण 11 के साथ Android 3 (हनीकॉम) में एंड्रॉइड एपीआई में टुकड़े जोड़े गए थे।

अधिक जानकारी के लिए, कृपया आधिकारिक साइट, Fragments


कुछ मामलों में टुकड़े विशेष रूप से उपयोग किए जाते हैं जैसे कि हम अपने सभी पृष्ठों में नेविगेशन ड्रॉवर रखना चाहते हैं। आप जो भी टुकड़ा चाहते हैं उसके साथ एक फ्रेम लेआउट फुला सकते हैं और अभी भी नेविगेशन ड्रॉवर तक पहुंच है।

यदि आपने एक गतिविधि का उपयोग किया था, तो आपको सभी गतिविधियों में दराज रखना होगा जो अनावश्यक कोड बनाता है। यह एक टुकड़े का एक दिलचस्प उपयोग है।

मैं एंड्रॉइड के लिए नया हूं और अभी भी लगता है कि एक टुकड़ा इस तरह सहायक है।


टुकड़े गतिविधि के भीतर रहते हैं और है:

  • अपनी खुद की जीवन चक्र
  • इसका अपना लेआउट
  • अपने बच्चे के टुकड़े और आदि

टुकड़ों के बारे में सोचें जो मुख्य गतिविधि की उप गतिविधि के रूप में हैं, यह स्वयं का अस्तित्व नहीं हो सकता है और इसे बार-बार कहा जा सकता है। उम्मीद है की यह मदद करेगा :)


यह महत्वपूर्ण जानकारी है जो मैंने टुकड़ों पर पाया:

ऐतिहासिक रूप से एक एंड्रॉइड ऐप में प्रत्येक स्क्रीन को एक अलग गतिविधि के रूप में लागू किया गया था। यह स्क्रीन के बीच जानकारी पास करने में एक चुनौती बनाता है क्योंकि एंड्रॉइड इंटेंट तंत्र सीधे गतिविधियों के बीच एक संदर्भ प्रकार (यानी ऑब्जेक्ट) पास करने की अनुमति नहीं देता है। इसके बजाय ऑब्जेक्ट को क्रमबद्ध किया जाना चाहिए या उपलब्ध वैश्विक स्तर पर सुलभ संदर्भ होना चाहिए।

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


सुनिश्चित नहीं है कि आप किस वीडियो का जिक्र कर रहे हैं, लेकिन मुझे संदेह है कि वे कह रहे हैं कि आपको गतिविधियों के बजाय टुकड़ों का उपयोग करना चाहिए, क्योंकि वे सीधे विनिमय नहीं कर सकते हैं। वास्तव में देव गाइड में काफी विस्तृत प्रविष्टि है, इसे विवरण के लिए पढ़ने पर विचार करें।

संक्षेप में, टुकड़े गतिविधियों के अंदर रहते हैं, और प्रत्येक गतिविधि कई टुकड़ों को होस्ट कर सकती है। गतिविधियों की तरह, उनके पास एक विशिष्ट जीवन चक्र है, गतिविधियों के विपरीत, वे शीर्ष-स्तर के अनुप्रयोग घटक नहीं हैं। टुकड़ों के लाभों में कोड पुन: उपयोग और मॉड्यूलरिटी (उदाहरण के लिए, कई गतिविधियों में एक ही सूची दृश्य का उपयोग करना शामिल है), जिसमें मल्टी-फलक इंटरफेस (टैबलेट पर अधिकतर उपयोगी) बनाने की क्षमता शामिल है। मुख्य नुकसान (कुछ) जटिलता जोड़ा गया है। आप आमतौर पर एक गैर-मानक और कम मजबूत तरीके से (कस्टम) विचारों के साथ एक ही चीज़ प्राप्त कर सकते हैं।








android-3.0-honeycomb