Android Fragments का उपयोग क्यों करते हैं?


15

मैंने इस विषय के बारे में प्रलेखन और कुछ अन्य प्रश्नों के सूत्र पढ़े हैं और मैं वास्तव में आश्वस्त नहीं हूँ; मैं स्पष्ट रूप से इस तकनीक के उपयोग की सीमा नहीं देखता हूं।

फ्रेगमेंट को अब एक बेस्ट प्रैक्टिस के रूप में देखा जाता है ; हर गतिविधि मूल रूप से एक या एक से अधिक फ्रेगमेंट के लिए एक समर्थन होना चाहिए और सीधे लेआउट को कॉल नहीं करना चाहिए

क्रम में बनाए गए हैं:

  1. Activityकई टुकड़ों का उपयोग करने की अनुमति दें , उनके बीच में परिवर्तन करने के लिए, इन इकाइयों का पुन: उपयोग करने के लिए ... ==> Fragmentयह पूरी तरह Contextसे एक गतिविधि की निर्भरता है , इसलिए अगर मुझे कुछ सामान्य की आवश्यकता है जिसे मैं पुन: उपयोग कर सकता हूं और कई गतिविधियों में काम कर सकता हूं, तो मैं कर सकता हूं। अपने स्वयं के कस्टम लेआउट या दृश्य बनाएं ... मैं इस अतिरिक्त जटिलता के विकास के बारे में परवाह नहीं करूंगा कि टुकड़े जोड़ देगा।

  2. विभिन्न रिज़ॉल्यूशन के लिए एक बेहतर हैंडलिंग ==> लंबी प्रक्रिया के मामले में टैबलेट / फोन के लिए ठीक है कि हम टैबलेट में एक ही गतिविधि में दो (या अधिक) टुकड़े दिखा सकते हैं, और फोन में एक-एक करके। लेकिन मैं हमेशा टुकड़ों का उपयोग क्यों करूंगा ?

  3. फ्रैगमेंट के बीच नेविगेट करने के लिए कॉलबैक को संभालना (यानी: यदि उपयोगकर्ता लॉग-इन है तो मैं एक टुकड़ा दिखा सकता हूं और दूसरा टुकड़ा दिखाता हूं)। ===> बस यह देखने की कोशिश करें कि इसकी वजह से फ़ेसबुक एसडीके लॉग-इन कितने कीड़े हैं, यह समझने के लिए कि यह वास्तव में है (?) ...?

  4. यह देखते हुए कि एंड्रॉइड एप्लिकेशन गतिविधियों पर आधारित है ... गतिविधि में एक और जीवन चक्र जोड़ना एक एप्लीकेशन को डिजाइन करने के लिए बेहतर होगा ... मेरा मतलब है कि मॉड्यूल, परिदृश्य, डेटा प्रबंधन और कनेक्टिविटी बेहतर डिज़ाइन किए जाएंगे, उस में मार्ग। ===> यह एक ऐसे व्यक्ति का उत्तर है जो एंड्रॉइड एसडीके और एंड्रॉइड फ्रेमवर्क को फ्रैगमेंट्स दृष्टि से देखता था। मुझे नहीं लगता कि यह गलत है, लेकिन मुझे यकीन नहीं है कि यह अच्छे परिणाम देगा ... और यह वास्तव में सार है ...

====> मैं हमेशा उनके उपयोग में, अपने जीवन को और अधिक कोडित क्यों करूंगा? और, अगर यह कुछ मामलों के लिए एक उपकरण है तो यह सबसे अच्छा अभ्यास क्यों है? ये क्या मामले हैं?


1
यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं, क्या आप प्रश्न को संक्षेप में प्रस्तुत कर सकते हैं, हो सकता है कि कथित फायदे और प्रत्येक की आलोचना की गणना से नीचे हो?
log

मैंने एक विस्तृत प्रश्न जोड़ा।
ahmed_khan_89

मैं @logc की तरह खो गया हूं। आप इन मामलों को बिना फ्रेगमेंट के कैसे संभालेंगे?
नॉनटापिर

मैंने वह दिया जो मैं बिना किसी परिमार्जन के करूंगा: (1) कस्टम जेनेरिक नियंत्रण बनाना और उनका पुन: उपयोग करना जहां मैं चाहता हूं (2) 2 गतिविधियों का उपयोग करना और startActivityForResult के साथ नेविगेट करना, या बस विचारों के बीच बदलना (दिखाना / छिपाना, उकसाना / हटाना ...) इतना कोडिंग के बिना ... (3) आप विचारों के साथ गतिविधियों में भी एक कॉलबैक का उपयोग कर सकते हैं (4) यह एक अमूर्त उत्तर है जो मुझे हमेशा मिलता है जब मैं इस विषय पर चर्चा करता हूं ... जिसे अधिक खोज की आवश्यकता है ...
ahmed_khan_89

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

जवाबों:


5

फ्रैगमेंट एक गतिविधि का एक मॉड्यूलर खंड है जिसका अपना जीवनचक्र होता है, अपने स्वयं के इनपुट ईवेंट प्राप्त करता है, जिसे आप गतिविधि के चलने के दौरान जोड़ या हटा सकते हैं (एक "उप गतिविधि की तरह" जिसे आप विभिन्न गतिविधियों में पुन: उपयोग कर सकते हैं)

अलग-अलग स्क्रीनों पर टुकड़े, यूआई अनुकूलन का उपयोग करने के स्पष्ट लाभ के अलावा, यह आपको एक दृश्यमान उपयोगकर्ता इंटरफ़ेस घटक के बिना गतिविधि की पृष्ठभूमि प्रसंस्करण का प्रबंधन करने देता है।

अभी...

====> मैं अपने जीवन को जटिल क्यों बनाऊंगा, अधिक कोडिंग ... ??

Albeit की सिफारिश की है, जब तक आप अलग-अलग तत्वों के जीवनचक्र को नियंत्रित करने और / या पिछले विचारों के स्टैक-स्टेट या इतिहास का पुन: उपयोग करने की योजना नहीं बनाते हैं।


5

अगर वहाँ एक "गेटवे" टुकड़ा के लिए उपयोग मामला संदेह है, यह शायद संवाद है। लंबे समय से पदावनत किए गए तरीके showDialog(...), onCreateDialog(...)आदि, इस बात में अच्छे थे कि फ्रेमवर्क उन्हें स्वचालित रूप से नष्ट कर देगा और आपके संवादों को फिर से बनाएगा जब होस्टिंग गतिविधि को नष्ट कर दिया गया था और फिर से बनाया गया था। यदि आप सीधे अपने स्वयं के संवाद बनाते हैं, तो आपको उस सभी सामान को स्वयं प्रबंधित करना होगा। लेकिन यदि आप एक का उपयोग करते हैं DialogFragment, तो आप एक बार फिर से उन्हें आपके लिए प्रबंधित कर सकते हैं। इस मामले में, टुकड़े आपके कोडिंग को बहुत सरल कर सकते हैं ।


1

मैंने यह सवाल एक साल पहले पूछा था।

मैं रोज टुकड़ों का उपयोग कर रहा हूं और मैं इसकी सिफारिश करूंगा।

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

लाभ:

1 / यह कोड को संशोधित करने में मदद करता है जहां आप अलग-अलग टुकड़ों में एक गतिविधि में एक पूर्ण प्रवाह रख सकते हैं। उदाहरण: + सूची / ग्रिड और विवरण, + लॉगिन और पंजीकरण और पासवर्ड भूल जाना, + आदि यह पुन: प्रयोज्य कोड प्राप्त करने के लिए बहुत बढ़िया है, कि आप हमेशा विभिन्न परियोजनाओं में कॉपी और पेस्ट कर सकते हैं।

2 / आपके पास एक नया जीवनचक्र है, जो परेशानियों से भरा है जो सच है, लेकिन साथ ही साथ फायदे भी हैं। उदाहरण: बनाए रखा आवृत्ति खंड भयानक है क्योंकि यह अभिविन्यास की समस्या को हल करता है।

3 / आप गतिविधि से घटनाओं और श्रोताओं द्वारा अपने अंशों के प्रवाह का प्रबंधन कर सकते हैं।

आपकी गतिविधि में आपके अंशों का 4 / स्टैक।

5 / कई स्क्रीन में एक ही एक्शन बार का उपयोग करें।

और बहुत सारे...

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

ठीक है, यह किसी भी उपकरण की तरह है, आपको इस पर विचार करना होगा, और यदि किसी मामले या किसी अन्य मामले में इसका उपयोग करना बेहतर है तो अपने आप से न्याय करें।

मुझे आशा है कि यह मदद कर सकता है !!!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.