गतिविधि, AppCompatActivity, FragmentActivity, और ActionBarActivity: कब कौन सा उपयोग करें?


266

मैं iOS से आ रहा हूँ जहाँ यह आसान है और आप बस एक UIViewController का उपयोग करते हैं। हालाँकि, एंड्रॉइड चीजों में कुछ अधिक जटिल लगते हैं, विशिष्ट एपीआई स्तरों के लिए कुछ यूआईसीओम्पटर्स के साथ। मैं Android के लिए BigNerdRanch पढ़ रहा हूं (पुस्तक लगभग 2 साल पुरानी है) और उन्होंने सुझाव दिया कि मैं Activityअपनी मेजबानी के लिए उपयोग करता हूं FragmentActivities। हालाँकि, मुझे लगा Activityकि पदावनत कर दिया गया।

तो एपीआई स्तर 22 (एपीआई स्तर 15 या 16 के लिए एक न्यूनतम समर्थन के साथ) के लिए, मुझे घटकों को होस्ट करने के लिए और स्वयं घटकों के लिए वास्तव में क्या उपयोग करना चाहिए? क्या इन सभी के लिए उपयोग हैं, या मुझे एक या दो का उपयोग करना चाहिए लगभग विशेष रूप से?


1
आप FragmentActivityies की मेजबानी नहीं करेंगे । आप केवल होस्ट करते हैं Fragment। नए Android संस्करणों पर Activityकक्षा को सीधे उन्हें होस्ट करने के लिए अद्यतन किया गया है। पुराने संस्करणों FragmentActivityका समर्थन करने के लिए पेश किया गया था।
रवि थपलियाल

5
इसी तरह, एपीआई 11+ के साथ Activityies के लिए समर्थन था ActionBar। यह ActionBarActivityपहले के माध्यम से पुराने संस्करणों पर समर्थित था जिसे अब हटा दिया गया है और इसके साथ बदल दिया गया है AppCompatActivity। चूंकि, ये दोनों ही वर्ग विस्तार FragmentActivityकरते हैं, इसलिए वे होस्टिंग का भी समर्थन करते हैं Fragment
रवि थपलियाल

जवाबों:


327

मुझे लगा कि एक्टिविटी डिप्रेस्ड हो गई है

नहीं।

तो एपीआई स्तर 22 (एपीआई स्तर 15 या 16 के लिए एक न्यूनतम समर्थन के साथ) के लिए, मुझे घटकों को होस्ट करने के लिए और स्वयं घटकों के लिए वास्तव में क्या उपयोग करना चाहिए? क्या इन सभी के लिए उपयोग हैं, या मुझे एक या दो का उपयोग करना चाहिए लगभग विशेष रूप से?

Activityआधार रेखा है। प्रत्येक गतिविधि Activityप्रत्यक्ष या अप्रत्यक्ष रूप से विरासत में मिलती है ।

FragmentActivitysupport-v4और support-v13पुस्तकालयों में पाए जाने वाले टुकड़ों के बैकपोर्ट के साथ उपयोग के लिए है । एपीआई स्तर 11 में टुकड़ों का मूल कार्यान्वयन जोड़ा गया था, जो आपके प्रस्तावित minSdkVersionमूल्यों से कम है । एकमात्र कारण है कि आपको FragmentActivityविशेष रूप से विचार करने की आवश्यकता होगी यदि आप नेस्टेड टुकड़ों (एक टुकड़े को पकड़े हुए एक टुकड़ा) का उपयोग करना चाहते हैं, क्योंकि एपीआई स्तर 17 तक देशी टुकड़ों में समर्थित नहीं था।

AppCompatActivityसे है appcompat-v7पुस्तकालय। मुख्य रूप से, यह एक्शन बार का बैकपोर्ट प्रदान करता है। चूंकि एपीआई एक्शन 11 में देशी एक्शन बार जोड़ा गया था, इसलिए आपको उसकी आवश्यकता नहीं AppCompatActivityहै। हालांकि, appcompat-v7एक्शन बार और विभिन्न विजेट्स के संदर्भ में, सामग्री डिज़ाइन सौंदर्यबोध का एक सीमित बैक-अप भी शामिल है। appcompat-v7इस विशिष्ट स्टैक ओवरफ्लो उत्तर के दायरे से परे, उपयोग करने के पक्ष और विपक्ष हैं ।

ActionBarActivityआधार गतिविधि का पुराना नाम है appcompat-v7। विभिन्न कारणों से, वे नाम बदलना चाहते थे। जब तक आप उपयोग कर रहे हैं कुछ तृतीय-पक्ष पुस्तकालय एक पर जोर देते हैं ActionBarActivity, आप पसंद करते हैं चाहिए AppCompatActivityसे अधिक ActionBarActivity

तो, अपने minSdkVersion15-16 रेंज में दिया :

  • अगर आप बैकपोर्टेड मैटेरियल डिज़ाइन लुक चाहते हैं, तो उपयोग करें AppCompatActivity

  • यदि नहीं, लेकिन आप नेस्टेड टुकड़े चाहते हैं, का उपयोग करें FragmentActivity

  • यदि नहीं, तो उपयोग करें Activity

: बस नोट के रूप में टिप्पणी से जोड़ने AppCompatActivityफैली FragmentActivityहै, तो किसी को जो जरूरत की सुविधाओं का उपयोग करने FragmentActivityका उपयोग कर सकते AppCompatActivity


क्या होगा अगर मैं मैटेरियल डिज़ाइन लुक का उपयोग करना चाहता हूं और नेस्टेड टुकड़े भी चाहते हैं? क्या AppCompatActivity FragmentActivity से विरासत में मिली है?
ओरकुन सेवासे

4
@ मिलो रामबाल्दी: हाँ, के FragmentActivityपूर्वज है AppCompatActivity। जबकि मैं नेस्टेड अंशों का उपयोग करने की अनुशंसा नहीं करता, इस हद तक कि घोंसले के टुकड़े काम करते हैं, AppCompatActivityनेस्टेड टुकड़ों का समर्थन करेंगे।
कॉमन्सवेयर

विस्तृत उत्तर @CommonsWare के लिए धन्यवाद। क्या आप कह सकते हैं कि कौन सा minSDK सिर्फ Activityनवीनतम के बिना support-v7गैर-बैकपोर्टेड सामग्री डिजाइन के अधिकांश का उपयोग करने की अनुमति देगा । मेरा उद्देश्य मिनट 19 लक्ष्य 25 है
जुगुटियर

1
@ जुगुटियर: उपयोग करने के लिए Theme.Material, आपको minSdkVersion21 या उच्चतर की आवश्यकता है।
कॉमंसवेयर

83

Activityअन्य सभी गतिविधियों का आधार वर्ग है, मुझे नहीं लगता कि इसे पदावनत किया जाएगा। उनके बीच संबंध है:

Activity<- FragmentActivity<- AppCompatActivity<-ActionBarActivity

'<-' का अर्थ यहाँ विरासत है। संदर्भ कहा ActionBarActivityहटाई गई है, का उपयोग AppCompatActivityकरने के बजाय।

इसलिए मूल रूप से, AppCompatActivityहमेशा सही विकल्प का उपयोग करना होता है। उनके बीच अंतर हैं:

  • Activity मूल एक है।
  • के आधार पर Activity, FragmentActivityउपयोग करने की क्षमता प्रदान करता है Fragment
  • के आधार पर FragmentActivity, AppCompatActivityसुविधाएँ प्रदान करता है ActionBar

2
सुरुचिपूर्ण जवाब।
एम। केज़म अख़गरी

69

2019: उपयोग करें AppCompatActivity

इस लेखन के समय (यह पुष्टि करने के लिए लिंक की जाँच करें कि यह अभी भी सच है), एंड्रॉइड डॉक्यूमेंटेशन का उपयोग करने की सलाह देता है AppCompatActivityयदि आप एक ऐप बार का उपयोग कर रहे हैं।

यह दिया गया तर्कसंगत है:

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

इस कारण से, आपको अपनी गतिविधियों के ऐप बार को कार्यान्वित करने के लिए समर्थन लाइब्रेरी के टूलबार वर्ग का उपयोग करना चाहिए। सपोर्ट लाइब्रेरी के टूलबार का उपयोग यह सुनिश्चित करने में मदद करता है कि आपके ऐप में उपकरणों की व्यापक रेंज में लगातार व्यवहार होगा। उदाहरण के लिए, टूलबार विजेट एंड्रॉइड 2.1 (एपीआई स्तर 7) या बाद में चलने वाले उपकरणों पर एक सामग्री डिजाइन अनुभव प्रदान करता है, लेकिन जब तक डिवाइस एंड्रॉइड 5.0 (एपीआई स्तर 21) या बाद में नहीं चल रहा है, तब तक देशी एक्शन बार सामग्री डिजाइन का समर्थन नहीं करता है।

टूलबार जोड़ने की सामान्य दिशाएँ हैं

  1. V7 appcompat समर्थन पुस्तकालय जोड़ें
  2. अपनी सभी गतिविधियों का विस्तार करें AppCompatActivity
  3. घोषणापत्र में आप चाहते हैं कि घोषणा NoActionBar
  4. एक जोड़े ToolBarप्रत्येक गतिविधि के XML लेआउट करने के लिए।
  5. जाओ ToolBarप्रत्येक गतिविधि के दशक में onCreate

देखें प्रलेखन दिशाओं अधिक जानकारी के लिए। वे काफी स्पष्ट और सहायक हैं।


हाय @Suragch, इसके लिए धन्यवाद। मान लीजिए कि मैं आज एक ऐप बना रहा हूं जो केवल 21 को ही समर्थन करता है। वास्तव में, जैसा कि ऐसा होता है कि मैं नहीं चाहता, कभी भी, एक एक्शन बार या ऐप बार (फुलस्क्रीन ऐप का अधिक)। स्टूडियो सुझाव दे रहा है (16 नवंबर) मैं "बैकवर्ड कॉम्पिटिबिलिटी (AppCompat)" का उपयोग कर सकता हूं । मेरी आंत वृत्ति AppCompat का उपयोग नहीं है। आपकी विशेषज्ञ राय क्या है? मैं केवल आपको धन्यवाद दे सकता हूं, धन्यवाद।
फटी

मैं एक विशेषज्ञ नहीं हूं, इसलिए मैं आपको एक विशेषज्ञ की राय नहीं दे सकता, लेकिन दस्तावेज़ीकरण संभव के रूप में कई उपकरणों का समर्थन करने का सुझाव देता है ताकि मैं ऐसा करूं। मैं अपने सभी ऐप के साथ AppCompat का उपयोग करता हूं और इसने अब तक अच्छा काम किया है। मुझे लगता है कि यदि आप वास्तव में पूर्व 21 का समर्थन नहीं करना चाहते हैं तो आप स्टूडियो सुझाव को अनदेखा कर सकते हैं।
सुरगाछ

50

न्यूनतम एपीआई स्तर 15 के लिए, आप उपयोग करना चाहते हैं AppCompatActivity। इसलिए, उदाहरण के लिए, आप MainActivityइस तरह दिखेंगे:

public class MainActivity extends AppCompatActivity {
    ....
    ....
}

उपयोग करने के लिए AppCompatActivity, सुनिश्चित करें कि आपके पास Google समर्थन लाइब्रेरी डाउनलोड है (आप इसे अपने टूल -> एंड्रॉइड -> एसडीके प्रबंधक में देख सकते हैं)। तो बस अपने ऐप के gradle.build फ़ाइल में gradle निर्भरता को शामिल करें:

compile 'com.android.support:appcompat-v7:22:2.0'

आप इसे AppCompatअपने मुख्य के रूप में उपयोग कर सकते हैं Activity, जो तब फ्रेगमेंट या अन्य गतिविधियों को लॉन्च करने के लिए इस्तेमाल किया जा सकता है (यह इस बात पर निर्भर करता है कि आप किस तरह के ऐप का निर्माण कर रहे हैं)।

BigNerdRanch पुस्तक एक अच्छा संसाधन है, लेकिन हाँ, यह पुराना है। एंड्रॉइड कैसे काम करता है, इसके बारे में सामान्य जानकारी के लिए इसे पढ़ें, लेकिन उन विशिष्ट कक्षाओं की अपेक्षा न करें, जिनका वे उपयोग करते हैं।


ठीक है, मेरे पास मेरे gradle.build फ़ाइल में निर्भरता है। इसलिए, उदाहरण के लिए, यदि मैं पंक्तियों के एक समूह के साथ एक तालिका बना रहा हूं (किसी भी नोट्स अनुप्रयोग की तरह), तो मेरी मुख्य स्क्रीन एक AppCompat होगी और कुछ और भी जो होस्ट भी एक AppCompat होगी? क्या मुझे मूल रूप से केवल AppCompat का उपयोग करने की आवश्यकता है?
जेम्सन

तो आपका AppCompat कुछ लेआउट संसाधन को बढ़ाएगा जो डिज़ाइन को निर्दिष्ट करता है (पंक्तियों के एक गुच्छा के साथ तालिका)। लेकिन मान लें कि जब आप एक पंक्ति पर क्लिक करते हैं तो एक नया पृष्ठ खोलना चाहते हैं। आप एक नया AppCompat गतिविधि या एक टुकड़ा खोलने के लिए एक onClickListener सेट कर सकते हैं।
adao7000

अगस्त 3 के रूप में, BigNerdRanch के पास अपनी पुस्तक का एक नया संस्करण है: amazon.com/Android-Programming-Nerd-Ranch-Guide/dp/0134171454/…
bryant310

1
@ adao7000 दोस्त, जहाँ यह उल्लेख किया गया है कि 15 या इसके बाद के लिए आप AppCompatActivity का उपयोग कर सकते हैं - मुझे लगा कि v7 android.support.v7.app में आवश्यक न्यूनतम sdk के लिए है। 7.
कोडबेड

1
@codebased android.support.v7 को एपीआई स्तर 9. पर शुरू किया जा सकता है। स्रोत: developer.android.com/topic/lbooks/support-library/…
adao7000

30

Activityक्लास बेसिक क्लास है। (मूल) यह फ्रेगमेंट प्रबंधन (एपीआई 11 के बाद से) का समर्थन करता है। अब इसके शुद्ध उपयोग की अनुशंसा नहीं की जाती है क्योंकि इसकी विशेषज्ञता कहीं अधिक बेहतर है।

ActionBarActivityएक पल में एक्टिविटी क्लास को बदल दिया गया क्योंकि एक्शनबेर को ऐप में संभालना आसान हो गया।

AppCompatActivityजाने का नया तरीका है क्योंकि ActionBar को अब प्रोत्साहित नहीं किया गया है और आपको इसके बजाय टूलबार का उपयोग करना चाहिए (यह वर्तमान में ActionBar प्रतिस्थापन है)। AppCompatActivity FragmentActivity से विरासत में मिली है, इसलिए यदि आपको अपने (Fragment Manager के माध्यम से) Fragments को संभालने की आवश्यकता है। AppCompatActivity किसी भी एपीआई के लिए है, न केवल 16+ (जिसने कहा?)। आप इसे compile 'com.android.support:appcompat-v7:24:2.0'अपने ग्रेड फ़ाइल में जोड़कर उपयोग कर सकते हैं । मैं इसे एपीआई 10 में उपयोग करता हूं और यह सही काम करता है।


1
"ActionBar अब पदावनत हो गया है" - एक्शन बार को पदावनत नहीं किया जाता है। "आपको इसके बजाय टूलबार का उपयोग करने की आवश्यकता है" - ऐप्स को उपयोग करने की आवश्यकता नहीं है Toolbar
कॉमन्सवेयर जूल

@CommonsWare ठीक है, यह कोई पदावनत नहीं है, लेकिन इसके उपयोग को इसके अधिक शुद्ध रूप (पुराने वाले) में प्रोत्साहित नहीं किया गया है। अब, यदि आप अपने ऐप में एक एक्शन बार रखना चाहते हैं , तो आपको इसे टूलबार का उपयोग करके मैन्युअल रूप से जोड़ना चाहिए।
जोकिन इराचुक

"इसके उपयोग को अब इसके अधिक शुद्ध रूप में प्रोत्साहित नहीं किया गया है" - मैंने प्रलेखन या आधिकारिक ब्लॉग पोस्टों में ऐसा कुछ भी नहीं देखा है जो आपके दावे को सही ठहराए। क्या आपके पास एक लिंक है?
कॉमन्सवेयर जूल

@CommonsWare आप यहाँ प्रख्यात हैं और आप सही हैं। केवल सामग्री डिज़ाइन दिशानिर्देश एक टूलबार के रूप में एक ऐक्शन बार के उपयोग का सुझाव देते हैं। शायद मुझे अपना उत्तर हटा देना चाहिए क्योंकि यह सटीक नहीं है। धन्यवाद
जोकिन Iurchuk

2
समर्थन लाइब्रेरी संस्करण 26.0.0 (जुलाई 2017 में जारी) के साथ शुरू होकर, सभी समर्थित लाइब्रेरी पैकेजों के लिए न्यूनतम समर्थित एपीआई स्तर बदलकर एंड्रॉइड 4.0 (एपीआई स्तर 14) हो गया है। स्रोत: developer.android.com/topic/lbooks/support-library/…
एंड्रिया लेगनज़ा

12

यहां बहुत भ्रम है, खासकर यदि आप पुराने स्रोतों को पढ़ते हैं।

मूल एक है Activity, जो फ्रैगमेंट दिखा सकता है। यदि आप Android संस्करण> 4 पर हैं, तो आप इस संयोजन का उपयोग कर सकते हैं।

हालांकि, वहाँ भी एक समर्थन पुस्तकालय जो अन्य वर्गों आप का उल्लेख शामिल है: FragmentActivity, ActionBarActivityऔर AppCompat। मूल रूप से वे एंड्रॉइड संस्करणों <4 पर टुकड़े का समर्थन करने के लिए उपयोग किए गए थे, लेकिन वास्तव में वे एंड्रॉइड के नए संस्करणों (उदाहरण के लिए सामग्री डिजाइन) से बैकपोर्ट कार्यक्षमता के लिए भी उपयोग किए जाते हैं।

नवीनतम एक है AppCompat, अन्य 2 पुराने हैं। मेरे द्वारा उपयोग की जाने वाली रणनीति हमेशा उपयोग की जाती है AppCompat, ताकि एंड्रॉइड के भविष्य के संस्करणों से बैकपोर्ट के मामले में ऐप तैयार हो जाए।


धन्यवाद! ठीक है, इसलिए मैं होस्ट करने के लिए गतिविधि के स्थान पर AppCompat का उपयोग कर सकता हूं ... क्या? अन्य AppCompats की मेजबानी करने के लिए? या FragmentActivities की मेजबानी करने के लिए?
जेम्सन

एक गतिविधि आम तौर पर केवल अन्य अंशों की मेजबानी करती है ... और FragmentActivity के बारे में चिंता न करें, यह एक "आधार" वर्ग से अधिक है, जो अन्य सभी फैंसी XXXActivity से प्राप्त होता है।
मेहदी

लेकिन मेरे AppCompat होस्ट को कौन सी कक्षा चाहिए? एक और AppCompat, या कुछ और?
जेम्सन

आपके पास केवल एक चीज यहां समझने के लिए है: गतिविधियां मेजबान टुकड़े। गतिविधियों को किसी अन्य चीज़ से होस्ट नहीं किया जाता है, उन्हें नेस्टेड नहीं किया जा सकता है। Appcompat सिर्फ दूसरी तरह की गतिविधि है। उसके बाद आप घोंसले के टुकड़े पर जा सकते हैं, लेकिन यह प्रबंधन करने के लिए जटिल होना शुरू हो जाता है।
फूल_ग्रीन

1
नहीं, आप एक गतिविधि के रूप में एपकॉम का उपयोग करते हैं और आप अंशों की मेजबानी करते हैं, न कि अंशों की।
फूल_ग्रीन

7

आप के बारे में बात करते हैं Activity, AppcompactActivity, ActionBarActivityआदि आदि ..

हमें बेस कक्षाओं के बारे में बात करने की आवश्यकता है जो वे बढ़ा रहे हैं, पहले हमें सुपर कक्षाओं के पदानुक्रम को समझना होगा।

सभी चीजों की शुरुआत कॉनटेक्स्ट से होती है जो इन सभी वर्गों के लिए सुपर क्लास है।

प्रसंग एक अमूर्त वर्ग है जिसका कार्यान्वयन एंड्रॉइड सिस्टम द्वारा प्रदान किया गया है। यह एप्लिकेशन-विशिष्ट संसाधनों और कक्षाओं तक पहुंच के साथ-साथ एप्लिकेशन-स्तरीय संचालन जैसे लॉन्चिंग गतिविधियों, प्रसारण और इंटेंस प्राप्त करने, आदि के लिए अप-कॉल की अनुमति देता है।

Context इसके बाद या इसके द्वारा विस्तारित किया जाता है ContextWrapper

ContextWrapper एक वर्ग जो विस्तार है प्रसंग उस वर्ग बस सभी अन्य संदर्भ के लिए अपने कॉल के प्रतिनिधियों। मूल प्रसंग को बदले बिना व्यवहार को संशोधित करने के लिए उपवर्गित किया जा सकता है।

अब हम पहुँचे Activity

गतिविधि एक वर्ग जो फैली हुई है ContextThemeWrapper है कि एक एकल, ध्यान केंद्रित बात उपयोगकर्ता कर सकते हैं। लगभग सभी गतिविधियाँ उपयोगकर्ता के साथ बातचीत करती हैं, इसलिए गतिविधि वर्ग आपके लिए एक विंडो बनाने का ध्यान रखता है

नीचे की कक्षाओं का विस्तार करने के लिए प्रतिबंधित है, लेकिन वे आंतरिक रूप से अपने अवरोही द्वारा बढ़ाए जाते हैं और विशिष्ट आपी के लिए समर्थन प्रदान करते हैं

SupportActivity एक वर्ग जो गतिविधि फैली कि एक साथ संगतता कार्यक्षमता लिखने के लिए एक आधार वर्ग है

BaseFragmentActivityApi14 एक वर्ग जो फैली हुई है SupportActivity कि एक आधार वर्ग यह वर्ग ही सीमित होता है, लेकिन यह द्वारा विस्तार है BaseFragmentActivityApi16 की कार्यक्षमता का समर्थन करने के V14

BaseFragmentActivityApi16 एक वर्ग जो फैली हुई है BaseFragmentActivityApi14 कि {@code के लिए एक आधार वर्ग है FragmentActivity } का उपयोग करने में सक्षम होना v16 एपीआई। लेकिन यह भी प्रतिबंधित वर्ग है लेकिन यह V16 की कार्यक्षमता का समर्थन करने के लिए FragmentActivity द्वारा विस्तारित है।

अब FragmentActivty

FragmentActivity एक वर्ग जो फैली हुई है BaseFragmentActivityApi16 और कहा कि समर्थन के आधार पर टुकड़ा और लोडर API का उपयोग करना चाहता है।

नए प्लेटफ़ॉर्म के अंतर्निहित खंड और लोडर समर्थन के विपरीत इस वर्ग का उपयोग करते समय, आपको उन सुविधाओं का उपयोग करने के लिए क्रमशः getSupportFragmentManager()और getSupportLoaderManager()विधियों का उपयोग करना चाहिए ।

ActionBarActivity सपोर्ट लाइब्रेरी का हिस्सा है। पुराने प्लेटफॉर्म पर नए फीचर्स देने के लिए सपोर्ट लाइब्रेरी का इस्तेमाल किया जाता है। उदाहरण के लिए ActionBar को एपीआई 11 में पेश किया गया था और यह डिफ़ॉल्ट रूप से गतिविधि का हिस्सा है (वास्तव में विषय के आधार पर)। इसके विपरीत पुराने प्लेटफार्मों पर कोई एक्शनबार नहीं है। तो समर्थन पुस्तकालय गतिविधि ( ActionBarActivity ) का एक बच्चा वर्ग जोड़ता है जो ActionBar की कार्यक्षमता और ui प्रदान करता है

2015 में ActionBarActivity को सपोर्ट लाइब्रेरी के संशोधन 22.1.0 में दर्शाया गया है। इसके बजाय AppCompatActivity का उपयोग किया जाना चाहिए।

AppcompactActivity एक वर्ग जो फैली हुई है FragmentActivity कि गतिविधियों है कि समर्थन पुस्तकालय कार्रवाई बार सुविधाओं का उपयोग करने के लिए बेस वर्ग है।

जब आप अपनी गतिविधि के लिए इस वर्ग को बढ़ाकर या इसी तरह के विषय पर गतिविधि विषय निर्धारित करके एपीआई स्तर 7 या उच्च पर चल रहे हैं, तो आप अपनी गतिविधि में एक एक्शनबार जोड़ सकते हैं।Theme.AppCompat

यहाँ

मैं इन दोनों को एक , दो का संदर्भ देता हूं


3

चूंकि नाम एंड्रॉइड के भविष्य के संस्करणों में बदलने की संभावना है (वर्तमान में नवीनतम है AppCompatActivityलेकिन यह शायद कुछ बिंदु पर बदल जाएगा), मेरा मानना ​​है कि एक अच्छी बात यह है कि एक वर्ग है Activityजो विस्तारित होता है AppCompatActivityऔर फिर आपकी सभी गतिविधियां उसी से विस्तारित होती हैं। यदि कल, वे AppCompatActivity2उदाहरण के लिए नाम बदलते हैं, तो आपको इसे केवल एक स्थान पर बदलना होगा।


0

AppCompatActivity फैली FragmentActivity फैली BaseFragmentActivityApi16 फैली BaseFragmentActivityApi14 फैली SupportActivity फैली गतिविधि

इसलिए गतिविधि सभी से तेज है और AppCompatActivity सबसे अच्छी है।

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