Fragment: यह क्या है, फ़्रैगमेंट और Android में FragmentManager

लेखक: IT Sectr प्रकाशित: 2026-02-22 पढ़ने का समय: 7 मिनट

Fragment Android में एक पुन: प्रयोज्य UI घटक है जो Activity में एम्बेड किया जाता है और FragmentManager के माध्यम से प्रबंधित किया जाता है। प्रत्येक फ़्रैगमेंट का अपना जीवनचक्र, layout और स्थिति होती है। Fragment विभिन्न स्क्रीन आकारों के अनुकूलन और कोड पुन: उपयोग को सरल बनाता है। Google की आधिकारिक मार्गदर्शिका में और पढ़ें।

मुख्य बातें

  • Fragment — Activity के अंदर अपने स्वयं के जीवनचक्र और layout वाला एक UI घटक
  • FragmentManager — फ़्रैगमेंट लेन-देन और बैक स्टैक प्रबंधित करने के लिए एक क्लास
  • FragmentTransaction — फ़्रैगमेंट जोड़ने, बदलने या हटाने के लिए एक परमाणु संक्रिया
  • Jetpack Fragment — Android 1.6 (API 4) तक पिछड़ी संगतता के लिए एक लाइब्रेरी
  • ViewModel — एक Activity में फ़्रैगमेंट के बीच डेटा आदान-प्रदान के लिए साझा घटक

Fragment क्या है?

Fragment एक मॉड्यूलर Android उपयोगकर्ता इंटरफ़ेस घटक है जो Activity के अंदर स्क्रीन के एक भाग का प्रतिनिधित्व करता है। Fragment अपना स्वयं का layout प्रबंधित कर सकता है, जीवनचक्र घटनाओं को संभाल सकता है और अपनी स्थिति सहेज सकता है। मॉड्यूलरिटी के कारण, एक फ़्रैगमेंट का उपयोग विभिन्न Activities और विभिन्न उपकरणों पर किया जा सकता है।

Fragment API Android 3.0 (Honeycomb, API 11) में 2011 में टैबलेट समर्थन के लिए दिखाई दी। इससे पहले, डेवलपर्स को फ़ोन और टैबलेट के लिए अलग-अलग Activity बनानी पड़ती थीं। Fragment ने स्वतंत्र ब्लॉकों से स्क्रीन बनाना संभव बनाया। 2019 में, Google ने API 4 तक पिछड़ी संगतता के साथ Jetpack Fragment लाइब्रेरी जारी की।

Google (2026) के अनुसार, Google Play में 80% ऐप किसी न किसी रूप में Fragment का उपयोग करते हैं। Jetpack Fragment लाइब्रेरी को Google Play Services के माध्यम से 10 बिलियन से अधिक बार डाउनलोड किया गया है। Fragment Jetpack Compose के युग में भी Android आर्किटेक्चर का एक प्रमुख घटक बना हुआ है।

Fragment जीवनचक्र

Fragment का जीवनचक्र Activity की तुलना में अधिक जटिल है क्योंकि यह होस्ट Activity की स्थिति पर निर्भर करता है। Fragment Activity के समान अवस्थाओं से गुज़रता है लेकिन अपने स्वयं के कॉलबैक जोड़ता है: onAttach, onCreateView, onViewCreated, onActivityCreated, onDestroyView, onDetach।

Fragment कॉलबैकActivity समतुल्यउद्देश्य
onAttachonCreate से पहलेFragment Activity से जुड़ा
onCreateonCreateगैर-UI डेटा का आरंभीकरण
onCreateViewonCreateinflater के माध्यम से layout बनाना
onViewCreatedonCreateव्यू बनने के बाद UI तत्वों को बांधना
onDestroyViewonDestroyव्यू हटाना, UI संसाधन मुक्त करना
onDetachonDestroyFragment Activity से अलग हुआ

Fragment और Activity जीवनचक्र की तुलना

Fragment जीवनचक्र का मुख्य अंतर onCreate और onDestroy के बीच onCreateView और onDestroyView का आह्वान है। Fragment बिना UI के मौजूद हो सकता है (यदि onCreateView null लौटाता है)। Activity के पुनर्निर्माण के बाद, FragmentManager स्वचालित रूप से फ़्रैगमेंट को पुनर्स्थापित करता है।

FragmentManager और लेन-देन

FragmentManager Activity में फ़्रैगमेंट प्रबंधित करने के लिए केंद्रीय क्लास है। यह फ़्रैगमेंट जोड़ने, हटाने, बदलने, बैक स्टैक प्रबंधित करने और स्थिति पुनर्स्थापित करने का कार्य करता है। FragmentManager supportFragmentManager (AndroidX) या fragmentManager (पुरानी API) के माध्यम से उपलब्ध है।

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // फ़्रैगमेंट अभी तक नहीं जोड़ा गया — बना रहे हैं
        if (savedInstanceState == null) {
            val transaction = this.supportFragmentManager
                .beginTransaction()
            transaction.add(R.id.fragment_container, ListFragment())
            transaction.addToBackStack(null)
            transaction.commit()
        }
    }

    fun replaceFragment(fragment: Fragment) {
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_container, fragment)
            .addToBackStack(null)
            .commit()
    }
}

FragmentTransaction लेन-देन परमाणु होते हैं। commit() अगले Looper चक्र पर निष्पादन निर्धारित करता है। तत्काल निष्पादन के लिए commitNow() का उपयोग करें। addToBackStack(null) लेन-देन को बैक स्टैक में जोड़ता है — बैक बटन संक्रिया को पूर्ववत करेगा।

Fragment जीवनचक्र विधियाँ

Kotlin में एक उदाहरण के साथ Fragment जीवनचक्र की प्रमुख विधियों को देखें। onCreateView एक layout बनाता है — Activity के विपरीत, विधि को एक View लौटाना होता है। onViewCreated इसके तुरंत बाद कॉल किया जाता है, यहाँ id द्वारा तत्व ढूँढना सुरक्षित है। onDestroyView व्यू संदर्भ साफ़ करने का अंतिम क्षण है।

kotlin
class DetailFragment : Fragment() {

    private var _binding: FragmentDetailBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentDetailBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.textTitle.setText("विवरण")
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}

View Binding पैटर्न _binding/binding के साथ सुनिश्चित करता है कि onDestroyView के बाद layout संदर्भ शून्य हो जाता है। व्यू नष्ट होने के बाद binding तक पहुँचने से NullPointerException होगी। इस पैटर्न की Google सभी फ़्रैगमेंट के लिए अनुशंसा करता है।

फ़्रैगमेंट के बीच डेटा स्थानांतरण

फ़्रैगमेंट के बीच डेटा स्थानांतरण के लिए Android कई तंत्र प्रदान करता है। सबसे विश्वसनीय एक साझा ViewModel है, जो एक Activity के फ़्रैगमेंट के बीच साझा किया जाता है। Fragment Result API एकल घटनाओं के लिए उपयुक्त है। Bundle तर्क फ़्रैगमेंट बनाते समय डेटा के लिए हैं।

kotlin
// दो फ़्रैगमेंट के लिए साझा ViewModel
class SharedViewModel : ViewModel() {
    private val _selectedItem = MutableLiveData<Item>()
    val selectedItem: LiveData<Item> = _selectedItem

    fun select(item: Item) { _selectedItem.setValue(item) }
}

// फ़्रैगमेंट A: Fragment Result API के माध्यम से घटना भेजता है
setFragmentResult("request_key", bundleOf("key" to "value"))

// फ़्रैगमेंट B: घटना प्राप्त करता है
childFragmentManager.setFragmentResultListener("request_key", this) { requestKey, bundle ->
    val value = bundle.getString("key")
}

Fragment Result API (Fragment 1.3.0 में जोड़ा गया) पदावनत setTargetFragment/onActivityResult को बदलता है। API टाइप-सुरक्षित है, Bundle का उपयोग करता है, और प्राप्तकर्ता के ज्ञान की आवश्यकता नहीं है। Parent FragmentManager फ़्रैगमेंट के बीच मध्यस्थ के रूप में कार्य करता है।

Fragment बनाम Activity: कब क्या चुनें

Fragment और Activity के बीच चुनाव एप्लिकेशन आर्किटेक्चर पर निर्भर करता है। Fragment अनुकूली लेआउट (फ़ोन + टैबलेट), कस्टम ट्रांज़िशन एनिमेशन और Jetpack Navigation के उपयोग के लिए अनिवार्य है। Activity एक या दो स्क्रीन वाले सरल ऐप के लिए बेहतर है।

मानदंडFragmentActivity
निर्माण गतितेज़ (हल्का घटक)धीमी (सिस्टम प्रक्रिया)
पुन: उपयोगउच्च (एक Fragment विभिन्न Activities में)निम्न (प्रत्येक स्क्रीन की अपनी Activity)
संक्रमण एनिमेशनलचीला (FragmentTransaction)सीमित (overridePendingTransition)
घुमाने पर संरक्षणस्वचालित (प्रबंधक पुनर्स्थापित करता है)मैन्युअल (onSaveInstanceState)
Deep LinksNavigation Component के माध्यम सेintent-filter के माध्यम से मूल समर्थन

Jetpack Fragment और Jetpack Navigation

Fragment के साथ काम करने का आधुनिक दृष्टिकोण Jetpack Navigation Component है, जो मैन्युअल FragmentManager प्रबंधन को बदलता है। लाइब्रेरी NavGraph (XML नेविगेशन ग्राफ़), NavHostFragment और टाइप-सुरक्षित डेटा स्थानांतरण के लिए Safe Args प्रदान करती है।

Jetpack Fragment लाइब्रेरी (androidx.fragment:fragment-ktx) में FragmentResult API, DialogFragment, BottomSheetDialogFragment और Lifecycle-aware घटकों के साथ एकीकरण शामिल है। 2026 से, Google Fragment का उपयोग केवल Jetpack Navigation के माध्यम से करने की अनुशंसा करता है, सीधे नहीं।

xml

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@+id/listFragment">

    <fragment
        android:id="@+id/listFragment"
        android:name=".ListFragment"
        android:label="सूची">
        <action
            android:id="@+id/action_list_to_detail"
            app:destination="@+id/detailFragment" />
    </fragment>

    <fragment
        android:id="@+id/detailFragment"
        android:name=".DetailFragment"
        android:label="विवरण" />
</navigation>

अक्सर पूछे जाने वाले प्रश्न

FragmentManager क्या है?

FragmentManager एक क्लास है जो फ़्रैगमेंट लेन-देन का प्रबंधन करता है। यह Activity कंटेनर में फ़्रैगमेंट जोड़ता, हटाता और बदलता है। FragmentManager Activity पुनर्निर्माण पर फ़्रैगमेंट स्थिति पुनर्स्थापित करता है और बैक स्टैक का प्रबंधन करता है।

Fragment Activity से कैसे भिन्न है?

Fragment Activity के अंदर UI का एक हिस्सा है, यह स्वतंत्र रूप से मौजूद नहीं रह सकता। Fragment स्क्रीन घुमाने पर Activity पुनर्निर्माण से बच जाता है। Activity अपने स्वयं के Lifecycle वाली एक पूर्ण स्क्रीन है, Fragment Activity के Lifecycle पर निर्भर करता है।

Activity के बजाय Fragment का उपयोग कब करें?

Fragment — जब स्क्रीन में कई स्वतंत्र ब्लॉक हों (टैब, मास्टर-डिटेल, टैबलेट अनुकूलन)। Activity — जब स्क्रीन में दोहराए जाने योग्य ब्लॉक न हों। Google Single Activity + एकाधिक Fragment की अनुशंसा करता है।

Fragment के बीच डेटा कैसे स्थानांतरित करें?

तीन तरीके: मूल Activity के माध्यम से (साझा ViewModel), Fragment Result API (setFragmentResult) के माध्यम से, Fragment बनाते समय Bundle तर्कों के माध्यम से। ViewModel पसंदीदा तरीका है क्योंकि डेटा पुनर्निर्माण के दौरान संरक्षित रहता है।

Fragment Transaction क्या है?

Fragment Transaction एक परमाणु संक्रिया है जो फ़्रैगमेंट सेट को बदलती है। FragmentManager.beginTransaction() एक लेन-देन खोलता है जिसमें add, remove, replace, hide, show कॉल किया जा सकता है। प्रत्येक लेन-देन commit() या commitNow() के साथ समाप्त होता है।

सारांश

  • Fragment Activity के अंदर अपने स्वयं के जीवनचक्र, layout और स्थिति वाला पुन: प्रयोज्य UI घटक है
  • FragmentManager फ़्रैगमेंट लेन-देन का प्रबंधन करता है और Activity पुनर्निर्माण पर उनकी स्थिति पुनर्स्थापित करता है
  • FragmentTransaction फ़्रैगमेंट जोड़ने, बदलने, हटाने और छिपाने के लिए परमाणु संक्रिया है
  • Fragment जीवनचक्र में onAttach से onDetach तक छह कॉलबैक शामिल हैं, जिसमें अतिरिक्त बिंदु onCreateView है
  • ViewModel एक Activity में फ़्रैगमेंट के बीच डेटा आदान-प्रदान का अनुशंसित तरीका है
  • Fragment Result API फ़्रैगमेंट के बीच टाइप-सुरक्षित एकल घटना स्थानांतरण प्रदान करता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें