2012-05-29 3 views
9

मैंने Fragments documentation गहराई से पढ़ा है और मैंने FragmentTransaction.attach() या FragmentTransaction.detach() विधियों के किसी भी संदर्भ को नहीं देखा है। हालांकि, मुझे कई ट्यूटोरियल और डेमो मिले हैं जहां वे वास्तव में उनका उपयोग करते हैं (जैसे FragmentTabs Demo)। मेरा प्रश्न है:हाथ से एंड्रॉइड फ्रैगमेंट को अटैच/डिटेच कब करें?

  1. सिद्धांत रूप में, जब आप हाथ द्वारा संलग्न करने की अपेक्षा की जाती/dettach टुकड़े ?
  2. क्या होता है जब एक टुकड़ा संलग्न/अलग होता है? (क्या यह बनाया/नष्ट हो गया है? रोका गया/फिर से शुरू किया गया? आदि?)
  3. क्या यह आपके टुकड़े हाथ से संलग्न/अलग करने का एक अच्छा अभ्यास है?

धन्यवाद!

+0

शब्द "हाथ से" कुछ भ्रमित है !! – eRaisedToX

उत्तर

1

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

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

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

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

फ्रैगमेंट ऑब्जेक्ट नष्ट हो गया है लेकिन दृश्य तत्व (यदि कोई है) है। साथ attach() अपने दृश्य पदानुक्रम फिर से बनाया जाता है (docs) जब टुकड़ा फिर से संलग्न:

फिर से संलग्न एक टुकड़ा के बाद यह पहले से अलग करें (टुकड़ा) के साथ यूआई से अलग किया गया था। इससे यूआई से जुड़ा हुआ, और प्रदर्शित होने के लिए इसके दृश्य पदानुक्रम को फिर से बनाया जा सकता है।

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

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

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

जहां तक ​​टुकड़े नष्ट हो जाते हैं, जाहिर है कि जब कोई ऐप बंद हो जाता है तो वे नष्ट हो जाते हैं लेकिन अन्यथा मुझे संदेह है कि वे सामान्य कचरा दिनचर्या में आते हैं (लेकिन मुझे उस पर उद्धरण न दें!)। यानी यदि वस्तु के कोई संदर्भ नहीं हैं तो यह विनाश के लिए चिह्नित है।

संबंधित मुद्दे