Android.app.Fragment और android.support.v4.app.Fragment के बीच अंतर


175

बीच क्या अंतर है android.app.Fragmentऔर android.support.v4.app.Fragment, और जिन परिस्थितियों में प्रत्येक इस्तेमाल किया जाना चाहिए क्या हैं?

जवाबों:


288

android.support.v4.app.Fragmentहै टुकड़ा एंड्रॉयड समर्थन पुस्तकालय है, जो एक अनुकूलता पैकेज है कि आप Android के पुराने संस्करणों पर Android के नए सुविधाओं में से कुछ का उपयोग करने की अनुमति देता है में वर्ग।

android.app.Fragmentहै टुकड़ा Android SDK के मूल संस्करण में वर्ग। इसे एंड्रॉइड 3 (एपीआई 11) में पेश किया गया था।

यदि आप अपने ऐप का उपयोग टुकड़े करना चाहते हैं, और एपीआई 11 से पहले उपकरणों को लक्षित करना चाहते हैं, तो आपको उपयोग करना चाहिए android.support.v4.app.Fragment। हालाँकि, यदि आप केवल एपीआई 11 या उससे ऊपर के उपकरणों को लक्षित कर रहे हैं, तो आप उपयोग कर सकते हैं android.app.Fragment

संपादित करें: OS-निहित android.app.Fragment अब अपग्रेड किया गया है (एपीआई स्तर 28 के रूप में), और सभी को समर्थन पुस्तकालय कार्यान्वयन का उपयोग करने के लिए स्थानांतरित करना चाहिए।


4
"समर्थन पुस्तकालय के बिना FragmentStatePagerAdapter का उपयोग करना" भी देखें: stackoverflow.com/questions/18512294/…
CJBS

यदि आप onAttach () को ओवरराइड करते हैं, तो कृपया इस थ्रेड को देखें कि इसे android.app के साथ कुछ परिस्थितियों में नहीं बुलाया जा सकता है। चित्रण: stackoverflow.com/questions/32083053/…
Hong

3
Androidx का उपयोग कर रहा होगा: androidx.fragment.app.ragment
अभिजीत कुराने

56

2018 के अनुसार:

से android.app.Fragment प्रलेखन :

इस स्तर को एपीआई स्तर 28 में पदावनत किया गया था। सभी उपकरणों के संगत व्यवहार और लाइफसाइकल तक पहुंच के लिए
सपोर्ट लाइब्रेरी का उपयोग करें Fragment

इसलिए अब android.support.v4.app.Fragmentदेशी टुकड़ों ( android.app.Fragment) के बजाय हर जगह सपोर्ट फ्रैगमेंट ( ) का इस्तेमाल किया जाना चाहिए ।


@Artyom, एंड्रॉइड डेवलपमेंट के लिए एक noob के रूप में, मुझे उम्मीद थी कि जब android.app.Fragmentक्लास को हटा दिया जाएगा, तो एपीआई स्तर 28 में एक वैकल्पिक, संभवतः कट्टरपंथी प्रतिस्थापन दृष्टिकोण होगा। क्या कोई अग्रगामी दृष्टिकोण है या यह पीछे की ओर android.support.v4.app.Fragmentउचित दृष्टिकोण है?
इगोरहॉक

1
@ergohack इसे इस तरह देखें: जावा कोड के लिए आप या तो डिवाइस के रनटाइम के अंदर या एप्लिकेशन के जार फ़ाइल के अंदर बायटेकोड को शामिल कर सकते हैं। समर्थन लाइब्रेरी कोड आपके जार में डाला जाएगा, और रनटाइम प्रदान किए गए कोड के रूप में एक ही सुविधा प्रदान करेगा, इसलिए आपके लक्ष्य फोन की उम्र बढ़ने और अचयनित कोड के बजाय आधुनिक और बनाए रखा समर्थन पुस्तकालय का उपयोग नहीं करने का कोई कारण नहीं है।
पियरे

12

मैं android.support.v4.app.Fragmentविशेष रूप से उपयोग करता हूं ।

मेरे द्वारा लिखे गए सभी ऐप्स को एंड्रॉइड 2.3 पर वापस समर्थन करने की आवश्यकता है और यह इसे करने का सबसे आसान तरीका है।

यदि आप 11+ का समर्थन कर रहे हैं, तो छड़ी करें android.app.Fragment


18
उस स्थिति में आप बहुत सारी सुविधाओं को याद कर रहे हैं जो समर्थन पुस्तकालय में मौजूद हैं, लेकिन केवल एक निश्चित एपीआई स्तर के बाद मूल में। getChildFragmentManager (उदाहरण के लिए) स्तर 17 तक उपलब्ध नहीं है। मेरी सलाह केवल समर्थन टुकड़े का उपयोग करना है और यह दिखावा करना है कि मूल निवासी मौजूद नहीं है।
जोहान

4

यदि आपका एप्लिकेशन API 11 या उससे ऊपर के लिए लक्षित है, तो आप उपयोग कर सकते हैं android.app.Fragmentऔर आपकी एपीके फ़ाइल छोटी होगी।

अन्यथा, android.support.v4.app.Fragmentपुराने Android API संस्करणों (Android 3.x) का समर्थन करने के लिए अपने प्रोजेक्ट में लाइब्रेरी जोड़ें ।


2

android.support.v4.app.Fragment एक पुस्तकालय है जिसका उपयोग आप पुराने API संस्करण के लिए पश्च-संगतता प्राप्त करने के लिए कर सकते हैं।

एपीआई स्तर 11 (अन्य सुविधाओं के साथ) पर टुकड़े जोड़े गए थे, आपको उन फ़ंक्शन को प्री-एपीआई 11 उपकरणों तक विस्तारित करने के लिए उस पुस्तकालय को शामिल करना चाहिए। यह एक उपयोगी पुस्तकालय है और मुझे एक्शनबेरलॉक पर एक नज़र रखने का सुझाव है, जो एक्शन बार को पूर्व-एपीआई वी 11 उपकरणों तक बढ़ाता है।


-2

यदि आपका एप्लिकेशन API 11 या उससे ऊपर के स्तर के लिए लक्षित है, तो आप android.app.Fragment का उपयोग कर सकते हैं और यह एपीके का आकार कम कर देगा। अन्यथा android.support.v4.app.Fragment का उपयोग करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.