2011-03-16 11 views
7

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

Fragments API के उपलब्ध नमूने के विपरीत दाएं पैनल पर प्रदर्शित सामग्री में मेनू विकल्पों में से प्रत्येक के लिए एक पूरी तरह से अलग यूआई शामिल है।

चयनित अनुभाग के अनुसार सही टुकड़े को प्रतिस्थापित करने के लिए यह आकर्षक है, लेकिन इसका मतलब पूरे ऐप में केवल एक गतिविधि का उपयोग करना होगा, और यह अच्छा नहीं लगता है। इसके अलावा, टुकड़े की जीवन चक्र गतिविधि से जुड़ा हुआ है, इसलिए गतिविधि को मारने तक कोई टुकड़ा नहीं मारा जाएगा, जिसके परिणामस्वरूप बहुत सारे टुकड़े "जीवित" होते हैं।

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

यहां सर्वोत्तम अभ्यास क्या हैं?

उत्तर

6

This ब्लॉग पोस्ट गतिविधियों पर टुकड़े चुनने के लिए कारण सार रखते हैं:

ActivityGroup के माध्यम से

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

बनाए रखना डेटा गतिविधि भर उदाहरणों Activity.onRetainNonConfigurationInstance(), के माध्यम से पूरा किया जा सकता है, लेकिन यह काफी klunky और गैर स्पष्ट है। फ्रैगमेंट तंत्र को पूरे फ्रैगमेंट इंस्टेंस को केवल ध्वज सेट करने की अनुमति देकर आपको तंत्र को प्रतिस्थापित करता है।

टुकड़ा का एक विशेषज्ञता कहा जाता DialogFragment यह आसान एक संवाद कि गतिविधि जीवन चक्र के हिस्से के रूप प्रबंधित किया जाता है को दिखाने के लिए बनाता है। यह गतिविधि की "प्रबंधित संवाद" API को प्रतिस्थापित करता है।

फ्रैगमेंट का एक अन्य विशेषज्ञता ListFragment नामक डेटा की एक सूची दिखाता है। मौजूदा सूची एक्टिविटी ( कुछ और फीचर्स के साथ) समान है), लेकिन को ए> किसी अन्य डेटा के साथ सूची दिखाने के बारे में सामान्य प्रश्न कम करना चाहिए।

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

ढांचे टुकड़ा वस्तुओं की एक पीठ के ढेर के प्रबंधन, यह आसान इंट्रा-गतिविधि वापस बटन व्यवहार कि मौजूदा गतिविधि वापस ढेर को एकीकृत प्रदान करने के लिए बनाने के लिए निर्मित समर्थन किया है। यह राज्य भी सहेजा गया है और आपके लिए स्वचालित रूप से बहाल किया गया है।

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


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