2012-12-04 22 views
10

एंड्रॉइड docs पर फ्रैगमेंट ट्रान्सएक्शन आइटम में, यह वर्णित किया गया है कि विधि replace() विधि वर्तमान में जोड़े गए सभी टुकड़ों के लिए विधि remove() को कॉल करने के समान है और फिर विधि add() कहा जाता है। इस मामले में, पिछले खंड को पुनर्प्राप्त करने के लिए, हम addBackToStack() का उपयोग कर सकते हैं, इसका मतलब है कि लेनदेन की स्थिति अभी भी खंड प्रबंधक द्वारा प्रबंधित की जा रही है और जब हम ढेर से निकलते हैं तो इसके संचालन को उलट देंगे।add()। AddToBackStack(), add()। Detach() और()। AddToBackStack() को एक FragmentTransaction में जोड़ने के बीच क्या अंतर है?

दूसरी ओर, जब हम लेनदेन add() का उपयोग कर, add().addBackToStack() के उपयोग से परे लागू है, हम detach() विधि का उपयोग करें और टुकड़ा attach() का उपयोग कर, जो एक ही व्यवहार है कि addBackToStack() है ठीक हो सकता है।

तो इन परिदृश्यों के बीच दृश्यों के पीछे क्या अंतर है?

उत्तर

11

मैंने अधिक और स्पष्ट रूप से शोध किया, detach() और addToBackStack() के बीच का अंतर फ्रैगमेंट के जीवन चक्र में है। जब हम बैक स्टैक में फ्रैगमेंट जोड़ते हैं, तो अनुक्रम में onPause(), onStop() और onDestroyView() के बाद क्रम में कहा जाता है। इस स्थिति में, टुकड़ा अपने दृश्य से जुड़े संसाधनों को साफ करता है और फिर वहां रहने के लिए "रहने" का इंतजार करता है। बैक स्टैक से लेआउट पर लौटने के लिए विधि को अपने यूजर इंटरफेस को खींचने के लिए सिर्फ onCreateView() विधि कहा जाता है। दरअसल, टुकड़ा नष्ट नहीं होता है।

दूसरे पक्ष में, जब हम detach() का उपयोग हटाने या टुकड़ा को बदलने के लिए, क्रम में कहा जाता है सब एक ही तरीके का हवाला दिया पहले (onPause(), onStop(), onDestroyView()) इस दो विधियां जोड़ने: टुकड़ा के राज्य और की अंतिम सफाई करने के लिए onDestroy(), onDetach(), अब अपनी गतिविधि से जुड़े होने के लिए टुकड़े को अलग करने के लिए।

असल में, दृश्यों के पीछे, उनके पास समान व्यवहार नहीं है: addToBackStack() का उपयोग करके टुकड़े तत्काल बने रहते हैं और detach() नहीं करते हैं।

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