संदेश बोर्डों पर Google इंजीनियरों के अनुसार भी फ़्रेग्मेंट मैनेजमेंट के तरीकों का नामकरण बहुत भ्रामक है। मैंने खुद को यह पता लगाने के लिए थोड़ा डेमो किया कि चीजें वास्तव में कैसे काम करती हैं। यहाँ मेरे निष्कर्ष हैं। अगर मैं गलत हूं तो मुझे सुधारने के लिए स्वतंत्र महसूस करें।
प्रारंभ में किसी गतिविधि में एक फ़्रैगमेंट जोड़ने के लिए, आप का उपयोग करें: getFragmentManager ()। शुरुआती प्रतिक्रिया () जोड़ें (R.id.container, mFragment) .commit ()।
यह गतिविधि को फ़्रैगमेंट के साथ जोड़ता है और फ़्रैगमेंट के साथ एक दृश्य भी जोड़ता है।
यहां परिणामी जीवन चक्र घटनाएं और अन्य महत्वपूर्ण विधि रिटर्न मान हैं:
onAttach()
onCreate()
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
किसी गतिविधि से एक फ़्रैगमेंट निकालने के लिए, आप उपयोग करें: getFragmentManager ()। StartTransaction ()। Remove (mFragment) .commit ()।
यह किसी भी एसोसिएशन को व्यू या एक्टिविटी से हटा देता है।
यहां परिणामी जीवन चक्र घटनाएं और अन्य महत्वपूर्ण विधि रिटर्न मान हैं:
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
mFragment.getView() == null: true
mFragment.getActivity() == null: true
मैंने यहां के टुकड़े को फिर से जोड़ा
किसी गतिविधि से एक अतिरिक्त फ्रैगमेंट को अलग करने के लिए, आप का उपयोग करें: getFragmentManager ()। StartTransaction ()। Detach (mFragment) .commit ()।
यह किसी भी एसोसिएशन को व्यू के साथ हटा देता है, लेकिन एक्टिविटी के साथ एसोसिएशन को बनाए रखता है।
यहां परिणामी जीवन चक्र घटनाएं और अन्य महत्वपूर्ण विधि रिटर्न मान हैं:
onPause()
onStop()
onDestroyView()
mFragment.getView() == null: true
mFragment.getActivity() == null: false
एक फ्रैगमेंट को फिर से संलग्न करने के लिए जो गतिविधि के लिए अलग किया गया था, आप का उपयोग करें: getFragmentManager ()। startTransaction ()। संलग्न करें (mFragment) .commit ()।
यह फ्रैगमेंट के साथ जुड़ने के लिए एक नया दृश्य बनाता है और गतिविधि संघ को बनाए रखता है।
यहां परिणामी जीवन चक्र घटनाएं और अन्य महत्वपूर्ण विधि रिटर्न मान हैं:
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
ध्यान देने योग्य अन्य महत्वपूर्ण बातें: यदि आप एक फ्रैगमेंट को अलग करते हैं और फिर इसे जोड़ने के बजाय फिर से जोड़कर () का उपयोग करके जोड़ने की कोशिश करते हैं, तो कुछ भी नहीं बदलता है।
यदि आप एक जोड़ जोड़ने की कोशिश करते हैं जिसे हटाने () को जोड़ने () के बजाय अटैच () का उपयोग करके हटा दिया गया है, तो कुछ भी नहीं लगता है।
जब दृश्य () रिटर्न शून्य हो जाता है, तो फ्रेगमेंट में अभी भी बनाए गए अंतिम दृश्य के आंतरिक संदर्भ हो सकते हैं। यह दृश्य अब मान्य नहीं है और इसका उपयोग नहीं किया जाना चाहिए।
Fragment
है अलग , अपनेonPause
,onStop
औरonDestroyView
तरीकों को कहा जाता है (इसी क्रम में)। दूसरी ओर, जब एक परFragment
है हटा दिया है, इसकेonPause
,onStop
,onDestroyView
,onDestroy
औरonDetach
तरीकों कहा जाता है (इसी क्रम में)। इसी प्रकार, संलग्न करते समय ,Fragment
'sonCreateView
,onStart
औरonResume
विधियों को ही कहा जाता है; और जब जोड़ने ,Fragment
केonAttach
,onCreate
,onCreateView
,onStart
औरonResume
विधियों (इसी क्रम में) कहा जाता है।