2013-02-27 215 views
128

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

उत्तर

236

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

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

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

+3

इसके अलावा "समर्थन पुस्तकालय के बिना FragmentStatePagerAdapter का उपयोग करना" देखें: http://stackoverflow.com/questions/18512294/using-fragmentstatepageradapter-without-support-library – CJBS

+0

आप onAttach() ओवरराइड, तो कृपया इस सूत्र देखें कि यह नहीं से बचने के लिए android.app.Fragment साथ कुछ परिस्थितियों में बुलाया जा रहा है: https://stackoverflow.com/questions/32083053/android-fragment-onattach-deprecated – Hong

10

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

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

यदि आप 11+ का समर्थन कर रहे हैं तो android.app.Fragment पर चिपके रहें।

+12

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

2

android.support.v4.app.Fragment एक ऐसी लाइब्रेरी है जिसका उपयोग आप पुराने एपीआई संस्करण के लिए पिछड़ा-संगतता प्राप्त करने के लिए कर सकते हैं।

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

4

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

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

1

जवाब बहुत सही कर रहे हैं

लेकिन समय बीत चुका है और https://en.wikipedia.org/wiki/Android_version_history के अनुसार यह काफी दुर्लभ है कि आपका नया Android एप्लिकेशन से कम 11

Android SDK के उपकरणों का समर्थन करना चाहिए के रूप में तो आप के बारे में भूल सकता है android.support.v4.app.Fragment और अपने ऐप में सुरक्षित रूप से android.app.Fragment का उपयोग करें।