दुविधा: जब गतिविधियों बनाम गतिविधियों का उपयोग करने के लिए:


785

मुझे पता है कि Activitiesमेरे आवेदन की एकल स्क्रीन का प्रतिनिधित्व करने के लिए डिज़ाइन किया गया है, जबकि Fragmentsउनके अंदर एम्बेडेड तर्क के साथ पुन: प्रयोज्य UI लेआउट होने के लिए डिज़ाइन किया गया है।

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

हाल ही में मैंने एक प्रोजेक्ट पर ठोकर खाई जिसमें केवल 2 Activitiesएक है SettingsActivityऔर दूसरा एक है MainActivity। का लेआउट MainActivityकई छिपे हुए पूर्ण स्क्रीन UI टुकड़ों के साथ आबाद है और केवल एक दिखाया गया है। में Activityतर्क वहाँ कई हैं FragmentTransitionsआवेदन के विभिन्न स्क्रीन के बीच।

इस दृष्टिकोण के बारे में मुझे जो पसंद आया वह यह है कि क्योंकि एप्लिकेशन ए का उपयोग करता है ActionBar, यह बरकरार रहता है और स्क्रीन स्विचिंग एनीमेशन के साथ नहीं चलता है, जो कि Activityस्विचिंग के साथ होता है । यह उन स्क्रीन संक्रमणों को अधिक धाराप्रवाह महसूस कराता है।

इसलिए मुझे लगता है कि मैं जो पूछ रहा हूं वह इस विषय के बारे में आपके वर्तमान विकास के तरीके को साझा करने के लिए है, मुझे पता है कि यह पहली नज़र में एक राय आधारित प्रश्न की तरह लग सकता है, लेकिन मैं इसे एंड्रॉइड डिज़ाइन और वास्तुकला प्रश्न के रूप में देखता हूं ... वास्तव में नहीं राय एक आधारित है।

अद्यतन (01.05.2014): स्क्वायर से एरिक बर्क की इस प्रस्तुति के बाद , (जो मुझे कहना है कि एंड्रॉइड डेवलपर्स के लिए बहुत सारे उपयोगी उपकरणों के साथ एक शानदार प्रस्तुति है। और मैं स्क्वायर के किसी भी तरह से संबंधित नहीं हूं)

http://www.infoq.com/presentations/Android-Design/

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


2
SO पर मेरे पोस्ट को देखें - stackoverflow.com/questions/24647078/…
My God

जवाबों:


270

विशेषज्ञ आपको बताएंगे: "जब मैं यूआई देखता हूं, तो मुझे पता चल जाएगा कि क्या " Activityया Fragment" का उपयोग करना है ।" शुरुआत में इसका कोई मतलब नहीं होगा, लेकिन समय के साथ, आप वास्तव में बता पाएंगे कि आपको ज़रूरत है Fragmentया नहीं।

एक अच्छा अभ्यास है जो मुझे मेरे लिए बहुत मददगार लगा। यह मेरे साथ तब हुआ जब मैं अपनी बेटी को कुछ समझाने की कोशिश कर रहा था।

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

लेकिन यह मत भूलो कि आपको हमेशा एक बॉक्स कंटेनर ( Activity) की आवश्यकता होती है या आपके भागों को फैलाया जाएगा। तो अंदर के हिस्सों के साथ एक बॉक्स।

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

क्या आप अभी अपने यूआई को देख सकते हैं और पता लगा सकते हैं कि आपको एक Activityया एक की आवश्यकता है Fragment? क्या आपको एक नया दृष्टिकोण मिला? मुझे लगता है कि आपने किया।


4
क्या आपके पास उल्लिखित youtube फीड का लिंक है? मैं "एंड्रॉइड यूएक्स विशेषज्ञों" और "एंड्रॉइड यूएक्स" की खोज करता हूं, लेकिन पूरी तरह से निश्चित नहीं है कि आप किन वीडियो के बारे में बात कर रहे हैं।
me--

2
और नहीं, एक साल पहले इसे देखा था। UX के बारे में बात करने वाले एंड्रॉइड डेवलपर अधिकारी के लिए खोजें
सैंडलोन

1
विचार का एक उदाहरण: गतिविधि में पेरेंट एक्टिविटी है इसलिए हम अधिसूचना से प्रवेश करते समय बैकस्टैक को संश्लेषित कर सकते हैं, लेकिन मुझे नहीं लगता कि इस तरह के पेरेंटफ्रैगमेंट हैं।
22

@BornToCode में getParentFragment है: developer.android.com/reference/android/support/v4/app/…
ToolmakerSteve

@ToolmakerSteve हाँ यह getParentFragment है, लेकिन यह मैं दोस्त क्या मतलब नहीं है, को देखने के developer.android.com/guide/topics/manifest/...
fikr4n

129

मेरा दर्शन यह है:

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

गतिविधि संक्रमण महंगा है, है ना? कम से कम मैं ऐसा मानता हूं - चूंकि पुरानी गतिविधि को नष्ट / रोका / रोका जाना है, स्टैक पर धकेल दिया गया है, और फिर नई गतिविधि को बनाना / शुरू / फिर से शुरू करना होगा।

यह केवल मेरा दर्शन है क्योंकि टुकड़े शुरू किए गए थे।


2
सच है, लेकिन जैसा कि आपने लिखा है, कभी-कभी गतिविधियों का उपयोग करने की आवश्यकता होती है। एक उदाहरण एक कैमरा स्क्रीन है, जहां लैंडस्केप मोड में इसका उपयोग करना बेहतर है। एक अन्य उदाहरण कॉन्फ़िगरेशन स्क्रीन है जिसे आप एक अनुकूलित ऐपविडग ("डेस्कटॉप" - लॉन्चर ऐप पर) डालते समय दिखाया जाता है।
Android डेवलपर

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

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

36
मुझे विश्वास नहीं है कि गतिविधियों के बीच डेटा को आगे और पीछे भेजने के बजाय विभिन्न टुकड़ों के बीच संवाद करना बहुत आसान है।
डेनी

3
कम से कम, onActivityResult()अंशों की कॉलबैक की तुलना में सुरक्षित और आसान है।
कूलमाइंड

59

ठीक है, Google के व्याख्यानों के अनुसार (शायद यहाँ , मुझे याद नहीं है), आपको जब भी संभव हो, Fragments का उपयोग करने पर विचार करना चाहिए, क्योंकि यह आपके कोड को बनाए रखना और नियंत्रित करना आसान बनाता है।

हालांकि, मुझे लगता है कि कुछ मामलों में यह बहुत जटिल हो सकता है, क्योंकि उन गतिविधियों को होस्ट करता है जिनके बीच टुकड़ों को नेविगेट करने / संचार करने की आवश्यकता होती है।

मुझे लगता है कि आपको खुद तय करना चाहिए कि आपके लिए सबसे अच्छा क्या है। यह आमतौर पर एक गतिविधि को एक खंड में बदलने के लिए और इसके विपरीत मुश्किल नहीं है।

यदि आप कुछ और पढ़ना चाहते हैं , तो मैंने इस डाइलमा के बारे में एक पोस्ट यहाँ बनाई है ।


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

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

क्या होगा यदि मैं ActionBar के इस प्रभाव को बरकरार रखना चाहता हूं और सभी सामग्री स्विच की जा रही है? क्या गतिविधियों से इसे हासिल करना संभव है?
एमिल अदज़

क्या फ्रैगमेंट है? youtu.be/k3IT-IJ0J98?list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC
Emer

27

क्यों मैं सभी मामलों में गतिविधि पर टुकड़ा पसंद करते हैं।

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

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

  • एक बहुत पूर्वानुमान योग्य जीवनचक्र । जब तक मेजबान गतिविधि को पुनर्नवीनीकरण नहीं किया जाता है। बैकस्टैक में टुकड़े को पुनर्नवीनीकरण नहीं किया जाएगा। तो FragmentManager::getFragments()विशिष्ट फ्रैगमेंट (प्रोत्साहित नहीं) खोजने के लिए उपयोग करना संभव है ।


HI, मैंने फ्रैग ओवर एक्ट के फायदों के बारे में आपकी समीक्षा पढ़ी है, क्या आपके पास अपने गिथब रेपो में ऐसा ही कोई प्रोजेक्ट है?
Novmañg mürmån

24

चूंकि जेटपैक , एकल गतिविधि एप्लिकेशन पसंदीदा वास्तुकला है। विशेष रूप से नेविगेशन आर्किटेक्चर घटक के साथ उपयोगी ।

स्रोत


इसके लिए शुक्रिया!
सिमो गार्सिया

1
मैंने आज पहली बार जेटपैक के बारे में पढ़ा। :) हम खंडों को पेश किए जाने के बाद से एकल गतिविधि एप्लिकेशन का निर्माण करते हैं। बहु गतिविधि बहुत अधिक जटिल है।
अतुल्य जन

1
@ TheincredibleJan आप सही हैं, सिंगल एक्टिविटी ऐप आर्किटेक्चर जेटपैक से बहुत पहले बेहतर समाधान था
फ्रांसिस

12

मेरी राय में यह वास्तव में प्रासंगिक नहीं है। विचार करने के लिए महत्वपूर्ण कारक है

  1. आप कितनी बार यूआई के पुर्जों (उदाहरण के लिए मेनू) का उपयोग करने वाले हैं,
  2. टैबलेट के लिए भी ऐप है?

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


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

11

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


हमारे अनुप्रयोगों में गतिविधि का एक प्रकार का कार्य अलग-अलग टुकड़ों में प्रवेश करने के लिए नेविगेशन दराज को पकड़ना है। :) मुझे टुकड़ों के लिए इरादों से जूझना क्यों चाहिए? वैश्विक डेटा के लिए "वैश्विक" डेटा वर्ग के लिए एक स्थिर संदर्भ रखने के लिए यह स्पष्ट और तार्किक है और कुछ मानों को एक टुकड़ा बनाने की आवृत्ति विधि के लिए पास करना होगा।
अविश्वसनीय जन

9

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

** एक नई गतिविधि तभी शुरू करें, जब यह समझ में आए कि यह मुख्य गतिविधि है और यह एक ही समय में खुलती है (कई खिड़कियों के बारे में सोचें)।

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


फिर से "एक नई गतिविधि शुरू करें अगर यह मुख्य गतिविधि और एक ही समय में खुले (कई खिड़कियों के बारे में सोच) के लिए समझ में आता है।" मुझे ऐसा नहीं लगता। उस स्थिति को टुकड़ों attach / detachविधियों का उपयोग करके अच्छी तरह से हल किया जाता है ।
टूलमेकरसैट

7

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

  • ActionBar& मेनू: जब 2 टुकड़े में अलग-अलग शीर्षक, मेनू होता है, तो
    इसे संभालना मुश्किल होगा। Ex: नया टुकड़ा जोड़ते समय, आप एक्शन बार शीर्षक बदल सकते हैं, लेकिन जब इसे पॉप करते हैंbackstack तो पुराने शीर्षक को पुनर्स्थापित करने का कोई तरीका नहीं है। आपको इस मामले के लिए प्रत्येक टुकड़े में एक टूलबार की आवश्यकता हो सकती है, लेकिन मुझे विश्वास करो, कि आप अधिक समय बिताएंगे।
  • जब हमें जरूरत होती है startForResult, गतिविधि होती है , लेकिन टुकड़ा नहीं होता है।
  • डिफ़ॉल्ट रूप से ट्रांस्फ़ॉर्मेशन एनीमेशन न करें

इसके लिए मेरा समाधान गतिविधि का उपयोग करके एक टुकड़े को अंदर लपेटने के लिए है। इसलिए हमारे पास अलग से एक्शन बार, मेनू startActivityForResult, एनीमेशन, ...


1
बहुत उपयोगी बिंदु, धन्यवाद। क्या आप " टुकड़े टुकड़े करने के लिए एक गतिविधि " को स्पष्ट कर सकते हैं ? क्या आपने प्रत्येक टुकड़े के लिए एक अलग गतिविधि बनाई थी? यदि हां, तो क्या आपको फ्रैगमेंट की आवश्यकता है?
टूलमेकरसेव

3
शीर्षक और सामान को पुनर्स्थापित करने का एक तरीका है। getSupportFragmentManager().addOnBackStackChangedListenerएक श्रोता को जोड़ने के लिए उपयोग करें। उस श्रोता में वर्तमान अंश प्राप्त करें और फिर शीर्षक और सामान सेट करें।
बाबे

4

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


3
कैसे? कृपया आप कुछ उदाहरण प्रदान करते हैं?
sofs1

1
@ sofs1 आपके प्रश्न का कोई मतलब नहीं है। किसी खंड में कोई भी कोड वही रहता है जहां से उस गतिविधि को खंडित किया जाता है।
अविश्वसनीय जन

@ TheincredibleJan लेकिन क्या हम यह भी नहीं कह सकते हैं कि "किसी गतिविधि में कोई भी कोड समान नहीं रहता है जिस गतिविधि से दूसरी गतिविधि त्वरित होती है?" मुझे अंतर नहीं दिखता।
iforce2d

3

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


2

आप उनमें से एक का उपयोग करने के लिए स्वतंत्र हैं।
मूल रूप से, आपको मूल्यांकन करना होगा कि आपके ऐप में सबसे अच्छा कौन सा है। इस बारे में सोचें कि आप व्यवसाय के प्रवाह को कैसे प्रबंधित करेंगे और डेटा वरीयताओं को कैसे संग्रहीत / प्रबंधित करेंगे।

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

याद रखें: क्या मुझे टुकड़ों का उपयोग करना चाहिए? मुझे क्यों नहीं करना चाहिए?

सादर।


1

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

if (id == R.id.forecast) {

    ForecastFragment forecastFragment = new ForecastFragment();
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.main_content, forecastFragment);
    ft.addToBackStack("backstack");
    forecastFragment.setArguments(b);
    ft.commit();
}

इस तरह से उपयोगकर्ता को किसी अन्य गतिविधि में नहीं जाना पड़ेगा।

और दूसरी बात मैं फ्रेगमेंट पसंद करता हूं क्योंकि आप रोटेशन के दौरान उन्हें आसानी से संभाल सकते हैं।


उस उदाहरण से एक बेहतर उपयोगकर्ता अनुभव क्या होता है? उन्हें कैसे पता चलेगा (या देखभाल) कि वे एक गतिविधि या एक टुकड़ा कर रहे हैं?
iforce2d

1

यह निर्भर करता है कि आप वास्तव में क्या बनाना चाहते हैं। उदाहरण के लिए navigation drawerउपयोग के टुकड़े। टैब का fragmentsभी उपयोग करें । एक और अच्छा कार्यान्वयन, वह जगह है जहाँ आपके पास ए listview। जब आप फोन को घुमाते हैं और एक पंक्ति पर क्लिक करते हैं तो गतिविधि स्क्रीन के शेष आधे हिस्से में दिखाई जाती है। व्यक्तिगत रूप से, मैं उपयोग करता हूं fragmentsऔर fragment dialogs, क्योंकि यह अधिक पेशेवर है। इसके अलावा वे रोटेशन में आसान नियंत्रित किया जाता है।

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