दिलचस्प पोस्ट
सी ++ में त्रिकोण अनुक्रम का उद्देश्य? हेक्स से सादे एएससीआईआई में एन्कोडेड एएससीआईआई स्ट्रिंग से परिवर्तित करें? MySQL में तालिका या स्तंभ नाम के रूप में एक आरक्षित शब्द का उपयोग करने के कारण सिंटैक्स त्रुटि तीन स्तंभ लेआउट: तरल पक्ष स्तंभों के साथ निश्चित चौड़ाई केंद्र पता कैसे करें कि पायथन यूसीएस -2 या यूसीएस -4 के साथ संकलित है? थ्रेड सुरक्षित-यूनिट के लिए यूनिट टेस्ट? पॉइंटर से बहुरूप वर्ग आधार वर्ग के लिए व्युत्पन्न क्लास इंस्टालेशन कॉपी / कैसे बनाऊँ? नई कक्षा का अर्थ (…) {{…}} प्रारंभिक मुहावरे यदि मौजूद है तो बैकस्टैक्स से टुकड़ा फिर से शुरू कैसे करें PHP में एकाधिक फ़ाइल अपलोड करें Android \ Intent: छवि संलग्नक के साथ एक ईमेल भेजें प्रोग्राम अपडेट के लिए ऐप अपडेट के लिए प्ले स्टोर की जांच करें फ़ंक्शन को हर 60 सेकंड कॉल करना सेलेनियम में वेब एलेमेंट्स के बाल नोड्स को ढूँढना अमान्य पोस्टबैक या कॉलबैक तर्क इवेंट का सत्यापन '<pages enableEventValidation = "true" />' के प्रयोग से सक्षम है

जोड़ () के बीच का अंतर, (), और addToBackStack को बदलें ()

इन विधियों को कॉल करने के बीच मुख्य अंतर क्या है:

fragmentTransaction.addToBackStack(name); fragmentTransaction.replace(containerViewId, fragment, tag); fragmentTransaction.add(containerViewId, fragment, tag); 

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

दूसरे, findFragmentByTag() , टैग के लिए खोज add() / replace() विधि या addToBackStack() विधि द्वारा जोड़ा गया है?

Solutions Collecting From Web of "जोड़ () के बीच का अंतर, (), और addToBackStack को बदलें ()"

1) fragmentTransaction.addToBackStack(str);

विवरण – इस लेनदेन को वापस स्टैक में जोड़ें। इसका मतलब यह है कि लेनदेन को प्रतिबद्ध होने के बाद याद किया जाएगा, और इसके संचालन को उलट कर देगा, जब बाद में स्टैक बंद हो जाएगा।

2) fragmentTransaction.replace(int containerViewId, Fragment fragment, String tag)

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

3) fragmentTransaction.add(int containerViewId, Fragment fragment, String tag)

विवरण – गतिविधि स्थिति में एक टुकड़ा जोड़ें। यह टुकड़ा वैकल्पिक रूप से इसका दृश्य भी हो सकता है (यदि फ्रैगमेंट.कॉनेटिव्यूव्यू नॉन-रिकल देता है) गतिविधि के एक कंटेनर दृश्य में है।

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

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

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

जब आप वर्तमान लेआउट पर नेविगेट करते हैं, तो आपके पास वह कंटेनर का आईडी है जिसे आप चाहते टुकड़े के साथ इसे बदलने के लिए।

आप बैकस्टैक्स में पिछले खंड पर वापस जा सकते हैं, पॉपबैक popBackStack() विधि के साथ। इसके लिए आपको उस टुकड़ा को addToBackStack() का उपयोग करते हुए स्टैक में जोड़ना होगा और फिर प्रतिबिंबित करने के commit() करना होगा यह शीर्ष पर वर्तमान के साथ रिवर्स ऑर्डर में है।

addFragmentByTag टैग को जोड़ने / बदलने की विधि या addToBackStack विधि द्वारा जोड़ता है?

यदि आप इस पर निर्भर करते हैं कि आपने टैग कैसे जोड़ा। यह तब सिर्फ एक टैग के द्वारा एक टुकड़ा पाता है जिसे आप परिभाषित करते हैं या तो जब XML से फुलाया जाता है या एक लेनदेन में जोड़ा जाने पर आपूर्ति की जाती है।

संदर्भ: टुकड़ा लेनदेन

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

संपादित करें : किसी को सावधानी बरतनी चाहिए कि वह ग्रीनबोॉट की ईवेंटबस जैसे किसी प्रकार की इवेंट बस लाइब्रेरी का उपयोग कर रही है और एक ही टुकड़ा को पुनः add ऊपर दूसरे के टुकड़े को ढेर कर लेना चाहिए। इस परिदृश्य में, भले ही आप सबसे अच्छा अभ्यास का पालन करें और onResumeonResume में ईवेंट बस को रजिस्टर करें और onResume -इन पर पंजीकरण रद्द करें, इवेंट बस अभी भी जोड़े गए टुकड़े के प्रत्येक उदाहरण में सक्रिय होगा जैसे कि टुकड़े को इस खंड जीवन चक्र के तरीकों से बुलाएगा। नतीजतन, टुकड़ा के प्रत्येक सक्रिय उदाहरण में घटना बस श्रोता एक ही घटना पर कार्रवाई करेंगे, जो कि आप क्या चाहते हैं न हो।

add() और replace() बीच मूल अंतर के रूप में वर्णित किया जा सकता है:

  • add() का उपयोग केवल कुछ रूट तत्व में टुकड़ा जोड़ने के लिए किया जाता है।
  • replace() समान व्यवहार करती है लेकिन पहले यह पिछले खंड को हटा देता है और फिर अगले टुकड़ा जोड़ता है।

हम addToBackStack() को add() साथ add() या replace() समय सटीक addToBackStack() देख सकते हैं।

add() … के मामले में जब हम पीछे बटन दबाते हैं तो क्रिएटिव्यू को कभी भी नहीं कहा जाता है। लेकिन replace() मामले में replace() , जब हम वापस बटन दबाते हैं … oncreateView को हर समय कहा जाता है