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


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

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

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

मेरा प्रश्न टुकड़ों के बारे में है:

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

बोनस प्रश्न:

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



Answers


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

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

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

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

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

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

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

बोनस 2

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




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

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

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




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

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




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

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

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

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

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

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

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

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

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

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

अधिक जानकारी के लिए कृपया आधिकारिक साइट, टुकड़े देखें




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

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

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




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

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

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




मुझे पता है कि यह पहले से ही मृत्यु पर चर्चा की गई थी, लेकिन मैं कुछ और अंक जोड़ना चाहता हूं:

  • मेग्स को पॉप्युलेट करने के लिए फ्रैग्स का इस्तेमाल किया जा सकता है और मैन्युअल रूप से Menu इटेट क्लिक को नियंत्रित कर सकते हैं। इस प्रकार आपकी क्रियाकलापों के लिए बेहतर मॉडुलन विकल्प देना। आप कंसक्टिकल एक्शनबैर सामान और इसके बारे में अपनी गतिविधि के बिना ऐसा कर सकते हैं और मूल रूप से इसे अपने मूलभूत सामान (नेविगेशन / सेटिंग्स / के बारे में) से कम कर सकते हैं।

  • बच्चे Frags के साथ एक अभिभावक Frag आप अपने घटकों को कम करने के लिए और विकल्प दे सकते हैं। उदाहरण के लिए आप आसानी से फ्रैग को स्वैप कर सकते हैं, एक पेजर के अंदर नए फ्रेम्स डाल सकते हैं या उन्हें हटा सकते हैं, उन्हें पुन: व्यवस्थित कर सकते हैं। आपकी गतिविधि के बिना सब कुछ इसके बारे में कुछ भी जानने के लिए, केवल उच्च स्तर के सामान पर केंद्रित है




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

जबकि एक गतिविधि अपने आप में रहती है




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

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

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




1.एक टुकड़ा का उपयोग करने के उद्देश्य क्या हैं?

  • उत्तर:
    1. डिवाइस फॉर्म-फर्क मतभेद के साथ लेनदेन
    2. एप स्क्रीन के बीच जानकारी पास करना
    3. उपयोगकर्ता इंटरफ़ेस संगठन
    4. उन्नत UI रूपकों







Links