एक Fragment
है एक उपयोगी दृष्टिकोण, मुझे लगता है, जब आप किसी खास View
(या के समूह) के लिए कुछ यूआई व्यापार तर्क टाई करना चाहते हैं। जैसा कि आप जानते हैं, वह व्यक्तिगत Fragment
का अपना जीवन चक्र कॉलबैक है और आगे, जैसे Activity
होगा।
बल्कि एक भी PagerAdapter
के माध्यम से एक भी Activity
मेजबान कई ListView
रों की तुलना में, यह क्लीनर क्योंकि Fragment
केवल एक ही ListView
ड्राइविंग के पीछे तर्क से निपटने के लिए की जरूरत है Fragment
दृष्टिकोण का उपयोग हो सकता है।
यह एक बहुत ही समान स्थिति है जिसे मैंने अभी सामना किया है। मैं ViewPager
के भीतर विभिन्न लंबवत स्क्रॉलिंग फॉर्म (इनपुट इनपुट फ़ील्ड शामिल हैं) दिखा रहा हूं। मेरे मामले में मैं Fragment
दृष्टिकोण के लिए गया हूं क्योंकि मेरे मामले में, यह संभव है कि ViewPager
को वास्तव में कुछ पृष्ठों पर एक पूरी तरह से अलग तरह का दृश्य प्रदर्शित करने की आवश्यकता होगी। उदाहरण के लिए, पहले कुछ पृष्ठों पर, उपयोगकर्ता इनपुट फॉर्म प्रदर्शित किए जा सकते हैं। लेकिन अंतिम पृष्ठ पर, एक ग्राफ प्रदर्शित किया जाएगा। उस ग्राफ को चलाने के लिए तर्क का एक अलग अलग सेट आवश्यक है। उन इनपुट फॉर्मों को ड्राइव करने के लिए और एक ही Activity
से एक ग्राफ थोड़ा गन्दा हो जाएगा, और मुझे शायद कई प्रतिनिधि वर्गों या किसी चीज़ में व्यावसायिक तर्क शामिल करने की आवश्यकता होगी। तो मेरे लिए, Fragment
एस अंत में स्पष्ट पसंद थे। मेरे पास InputFormFragment
और GraphFragment
है, और उनमें से प्रत्येक में केवल View
एस के लिए लागू तर्क है जो वे आपूर्ति करते हैं।
विचार करने की एक और बात यह है कि निकट भविष्य में आप भी अपने ViewPager
में View
का एक अलग प्रकार प्रदर्शित करना चाहेंगे। या, हो सकता है कि आप एक और यूआई लेआउट पूरी तरह से लेना चाहें, शायद वह 0 जो ViewPager
का उपयोग नहीं करता है लेकिन उन्हें सभी तरफ से प्रदर्शित करता है (उदाहरण के लिए लैंडस्केप मोड में बड़े टैबलेट पर इस्तेमाल किया जाने वाला लेआउट)। Fragment
एस के साथ, चीजें बहुत अधिक मॉड्यूलर हैं और आप कोड को तेज़ी से करने के लिए कारक बना सकते हैं। यदि दूसरी तरफ आपने एक Activity
का उपयोग कर अपना उद्देश्य हासिल किया है जिसमें एक सरल PagerAdapter
और ListView
के लिए सभी तर्क शामिल हैं, तो आप भविष्य में View
एस या विशेष टैबलेट लेआउट का समर्थन करने के लिए भविष्य में और अधिक काम ले सकते हैं ।
एक बात मैं कहना है एक ViewPager
में अपने आप को FragmentPagerAdapter
और FragmentStatePagerAdapter
के माध्यम से कार्यान्वित होने है Fragment
रों, चीज़ें थोड़ी अजीब अगर आप किसी भी विशेष आवश्यकताएं होती हैं प्राप्त कर सकते हैं; प्रबंधन Fragment
एस कभी-कभी मुश्किल हो सकता है। उदाहरण के लिए, मेरे यूआई के लिए मुझे ViewPager
को Fragment
एस युक्त प्रोग्रामेटिक रूप से जोड़ने और निकालने में सक्षम होना आवश्यक था। मैं भी सुनिश्चित करना है कि प्रयोग में अनुकूलक Fragment
रों एक बार वे दिखाया गया था नष्ट नहीं किया था की जरूरत है क्योंकि मैं सभी Fragment
रों एक साथ एक निश्चित बिंदु पर से डेटा एकत्र करने की जरूरत है। इसके अलावा, मैं विस्तार करने और यह सुनिश्चित करें कि Fragment
रों ठीक से उनके onDestroy()
के माध्यम से जाने के लिए और FragmentManager
से हटा दिया जाता है जब ViewPager
हटा दिया गया था बनाने के लिए FragmentPagerAdatper
को संशोधित करने के लिए किया था।
Fragment
एस विभिन्न स्क्रीन आकारों और उन्मुखताओं के लिए यूआई बनाने का एक बहुत ही मॉड्यूलर तरीका सक्षम करता है, और यह उत्कृष्ट है कि वे आपको व्यक्तिगत यूआई तत्वों के लिए व्यावसायिक तर्क और जीवनशैली को कैसे समाहित करने की अनुमति देते हैं। लेकिन अगर आपके परिदृश्य वास्तव में बस के रूप में एक ViewPager
में कई ListView
रों के रूप में सरल है और आप जानते हैं कि आप प्रतिरूपकता की जरूरत कभी नहीं होगा, तो Fragment
रों की भूमि के ऊपर एक overkill हो सकता है।
टुकड़े से जानकारी इकट्ठा करने के बारे में, नहीं यह एक इंटरफेस बनाने के लिए आसान होगा, टुकड़ा एक वस्तु है कि यह लागू करता है और उस वस्तु में जानकारी स्टोर करने के लिए इंटरफ़ेस कार्यों का उपयोग करने के लिए एक संदर्भ की मेजबानी की है? –
अगर मैं सही समझते हैं, मुझे लगता है कि तुम क्या सुझाव दे रहे हैं कि चतुर बातें सुनिश्चित करने के लिए टुकड़े ViewPager में चारों ओर रहने (और लगातार मौत हो नहीं कर रहे हैं और उसके बाद फिर बनाया) नहीं करना पड़ता के बजाय, मैं बजाय एक तंत्र होना चाहिए अपने राज्य को जारी रखने के लिए। मैं यह कर सकता था और मैं सहमत हूं कि एक बेहतर दृष्टिकोण होगा, लेकिन मेरे विशेष आवेदन में टुकड़े निर्माण के लिए काफी महंगा हैं। कोडिंग और प्रदर्शन कारणों दोनों के लिए, यह सुनिश्चित करना अधिक सरल था कि सभी टुकड़े आसपास रहें, और फिर अनुरोध करें कि वे सभी एक साथ अपना डेटा जमा करें। – Trevor