2015-07-06 5 views
10

मैं वास्तव में Fragmentlifecycle के साथ भ्रमित हो जाता हूं, खासकर getActivity() पर कॉल करने के लिए। कभी-कभी getActivity() द्वारा आपको Activity नहीं मिल सकता है। और यह हमेशा कुछ परेशान बग का कारण बनता है।
कोई भी व्यक्ति पहेली को हल करने के लिए धन्यवाद।हम getActivity() को getCreView में क्यों कॉल कर सकते हैं जो सक्रियता से पहले चलाया जाता है?

+0

प्रासंगिक कोड उदाहरण कृपया! – alfasin

+1

[फ्रैगमेंट्स दस्तावेज] से (http://developer.android.com/guide/components/fragments.html): 'सावधानी: यदि आपको अपने टुकड़े के भीतर एक संदर्भ वस्तु की आवश्यकता है, तो आप getActivity() को कॉल कर सकते हैं। हालांकि, जब एक्टिवेशन गतिविधि से जुड़ा होता है तो केवल getActivity() को कॉल करने के लिए सावधान रहें। जब टुकड़ा अभी तक जुड़ा हुआ नहीं है, या अपने जीवन चक्र के अंत में अलग किया गया था, तो निष्क्रियता() शून्य वापस आ जाएगी। तो इसे 'ऑन अटैच' से बुलाया जाना चाहिए। –

+1

@EricMartinez मुझे नहीं लगता कि यह दस्तावेज़ीकरण की सही व्याख्या है। मेरी समझ यह है कि चूंकि एटैच() को कॉल करने पर गतिविधि से जुड़ा हुआ है, तो यह निम्नलिखित जीवन चक्र विधियों जैसे ऑनक्रेट() और ऑनक्रेट व्यू() पर भी उपलब्ध होना चाहिए, भले ही यह भ्रमित हो कि उन्हें एक्टिविटी पर पहले कहा जाता है()। वैसे भी, मुझे getEctivity() पर getActivity() पर कॉल करते समय कभी भी शून्य नहीं मिल रहा है, और मैंने लिखा है कि सभी एंड्रॉइड ऐप्स ने ऐसा किया है। – RenniePet

उत्तर

10

getActivity() शून्य हो सकता है जबकि आपका टुकड़ा तैयारी की प्रक्रिया में है और तैयार होने के बारे में है।

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

  • Fragment.onActivityCreated(Bundle) जगह जब टुकड़ा गतिविधि अशक्त नहीं होगा, अर्थात getActivity() एक वैध उदाहरण होगा। यह तब होता है के बाद onCreateView() हालांकि

गतिविधि अस्तित्व के लिए आपका सबसे सुरक्षित शर्त है:

+1

क्या होगा यदि मुझे क्रिएट में एडाप्टर बनाने के लिए कोई गतिविधि चाहिए? –

+3

मुझे 'फ्रैगमेंट.ऑन व्यूक्रेटेड (व्यू, बंडल)' में 'एक्टिविटी() == नल' मिल गया है, इसलिए यह सुरक्षित नहीं है, इसलिए आपको हमेशा यह जांचना होगा कि क्या GetActivity()'CreateView() 'में शून्य नहीं है, 'onViewCreated()' और यहां तक ​​कि 'onResume()' –

+4

हम चीजों पर शर्त नहीं लगाते हैं। या तो इसे ATAachach() में मान्य गतिविधि माना जाता है या यह नहीं है। GetActivity() के उपयोग के लिए स्पष्ट उत्तर क्यों नहीं है? –

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

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