Android Fragments

Introduction to Android Fragments

एक fragment किसी activity के अंदर एक separate UI (user interface) होता है। Fragments की खुद की life cycle और input events होते है। आप एक fragment को कई activities में use कर सकते है। जब आपकी activity running state में हो तब भी आप fragments को add और remove कर सकते है। Fragments को आप sub activity भी कह सकते है।

Android fragments in Hindi

Android fragments को android के Honeycomb version में introduce किया गया था। Android fragments से पहले आप user को एक बार में एक activity ही show कर सकते थे इसलिए आप स्क्रीन को अलग अलग parts में divide नहीं कर सकते थे।

Fragments के आने से application design और भी ज्यादा flexible हो गयी क्योंकि आप यूजर को एक साथ एक से ज्यादा interface शो कर सकते है और उन्हें separately manage भी कर सकते है। अब आपके पास activity तो एक ही रहेगी लेकिन आप इसमें बहुत से fragments add कर सकते है।

एक fragment हमेशा activity में embedded होना चाहिए। Fragments की life cycle activity की life cycle से directly affected होती है। उदाहरण के लिए यदि activity pause होती है तो उसके सारे fragments भी pause हो जायेंगे। यदि activity destroy हो जाएगी तो उसके सभी fragments भी destroy हो जायेंगे।

जब activity running state में होती है तो आप उसके सभी fragments को independently manage कर सकते है।

जब आप fragment को ऐड करते है तो fragment आपकी activity की view hierarchy के View-Group में रहता है, और खुद का view layout डिफाइन करता है। आप fragment को activity layout में भी डाल सकते है इसके लिए आपको activity layout file में को डिक्लेअर करना होगा।

हालाँकि किसी fragment को activity layout का पार्ट बनाने की हमे कोई आवश्यकता नहीं है। यदि आप चाहे तो fragments को बिना UI के भी क्रिएट कर सकते है ताकि ये चुपचाप अपना काम कर सके।

Basically fragments को tablet devices के लिए design किया गया था, क्योंकि tablet devices में ज्यादा स्पेस होता है। इस space को आप fragments की मदद से आसानी से यूज़ कर सकते है। Activity के layout को fragments में divide करके आप screen की appearance को चेंज कर सकते है।

उदाहरण के लिए आप एक fragment में screen की left side में links की list provide कर सकते है, और right side के fragment में उन articles को open कर सकते है।

आपको fragments को इस तरह design करना चाहिए ताकि एक fragment कई activities में यूज़ हो सके। क्योंकि हर fragment का खुद का layout होता है और खुद की life cycle होती है इसलिए आपको fragments को ऐसे design करना चाहिए ताकि एक fragment को आप कई activities में यूज़ कर सके।

ऐसा करना इसलिए आवश्यक है ताकि आप fragments को different screen sizes में यूज़ कर सके। जब आप अपनी application को tablet और handset दोनों devices के लिए बना रहे हो तो आप fragment को इस तरह configure कर सकते है की वो दोनों devices पे आसानी से run हो सके।

Fragments Life Cycle

Android fragments की life cycle कुछ methods के द्वारा define की जाती है। इनके बारे में नीचे दिया जा रहा है।

Methods Description  
onAttach()जब पहली बार activity के कोई fragment add किया जाता है तो ये method call होता है। 
onCreate()जब fragment create होता है तो ये method android system के द्वारा call किया जाता है।   
onCreateView()जब पहली बार fragment UI show होता है तो ये method android system के द्वारा call किया जाता है।   
onActivityCreated()जब host activity create होती है तो ये method call होता है।   
onStart()Fragment UI के visible होने के बाद ये method call होता है।
onResume()जब fragment को pause करके वापस resume किया जाता है तो ये method call होता है।   
onPause()जब fragment को pause किया जाता है तो ये method call होता है।   
onStop()जब fragment stop होता है तो ये method call  किया जाता है।    
onDestroyView()Fragment view को destroy करने के लिए ये method call किया जाता है।   
onDestroy()Fragment destroy होने पर ये method call होता है।

Creating Fragments

Fragment create करने के लिए आपको Fragment क्लास को extend करना होगा। Fragment क्लास Activity क्लास की तरह ही है। आप देखेंगे तो पाएंगे की activity life cycle और fragment life cycle ऑलमोस्ट same है।

आपको सभी life cycle methods को implement करने की आवश्यकता नहीं है, लेंकिन आपको onCreate(), onCreateView() और onPause() methods को जरूर इम्प्लीमेंट करना चाहिए।

Fragment क्लास की 3 important sub classes भी है यदि आप चाहे तो इन्हे एक्सटेंड कर सकते है -

  • DialogFragment - ये क्लास एक floating dialog क्रिएट करने के लिए यूज़ की जा सकती है। Dialog क्रिएट करने के लिए इस क्लास को यूज़ करना एक अच्छा alternative है।
  • ListFragment - ये क्लास एक items की लिस्ट display करती है जिसे आप adapter से manage कर सकते है।
  • PreferenceFragment - ये क्लास preference ऑब्जेक्ट्स की hierarchy को एक लिस्ट की तरह डिस्प्ले करती है ।

Declaring Fragments in Layout File

Fragments को layout file में declare करने के लिए आपको <fragment> element डिक्लेअर करना होगा। इस element का एक important attribute है android:name, इसमें आप उस क्लास का नाम पास करते है जो fragment क्लास को extend करती है।

<fragment> element में android:id attribute भी होता है, जिसमे आप एक यूनिक id पास करते है।

Example:

<fragment android:name="class name which extends Fragment class" android:id="id">
</fragment>