ActionBarActivity से अधिक AppCompatActivity की वृद्धि क्या है?


164

android.support.v7.app.AppCompatActivity कल एक नई सुविधा के रूप में नवीनतम v7 समर्थन पुस्तकालय में जोड़ा गया था।

यह कहा जाता है कि ActionBarActivityनए के पक्ष में पदावनत किया गया है AppCompatActivityऔर यह AppCompatActivityउन गतिविधियों के लिए आधार वर्ग है जो समर्थन लाइब्रेरी एक्शन बार सुविधाओं का उपयोग करते हैं। तो, AppCompatActivityओवर की नई विशेषताएं क्या हैं ActionBarActivity? क्या वृद्धि AppCompatActivityहुई है ActionBarActivity? और क्या फायदे हैं AppCompatActivity? किसी को कुछ नमूनों की आपूर्ति कर सकता है?

किसी भी सुझाव की सराहना की है। और अग्रिम धन्यवाद।

पुनश्च: क्या मुझे हैरान कर दिया सबसे कि है AppCompatActivityजहाँ से बढ़ा दिया गया है android.support.v4.app.FragmentActivityके प्रत्यक्ष माता पिता वर्ग है ActionBarActivity! मेरा मतलब है कि वास्तव में अब वह ActionBarActivityकुछ भी कर सकता है जो AppCompatActivityकर सकता है, एंड्रॉइड ने उत्तरार्द्ध को बाहर क्यों धकेल दिया?

इस बीच, मैंने एक ब्लॉग पोस्ट देखी, जिसमें लिखा था: " यह किसी का नाम नहीं ActionBarActivityहै AppCompatActivity, के आंतरिक तर्क के AppCompatमाध्यम से उपलब्ध हैAppCompatDelegate ", तो " आंतरिक तर्क " क्या है AppCompat? क्या कर सकते AppCompatDelegateहैं? क्या कोई इस बारे में कुछ कोड पोस्ट कर सकता है?



मैंने इसे पढ़ा है, यह एक परिचय है, बहुत उथला।
SilentKnight

1
AppCompatActivity ActionBarActivity का मूल वर्ग है। और अधिक विचार के लिए आपको कोड देखने की जरूरत है।
पंकज कुमार

हां, मैंने इस पर ध्यान दिया।
साइलेंटकनाइट

जवाबों:


145

जैसा कि क्रिस ने लिखा, पिछड़े अनुकूलता वर्ग का उपयोग करने के लिए ActionBarActivity(एक विस्तृत AppCompatActivityवर्ग) का नया पदावनत संस्करण सुरक्षित है। इसका पदावनति आपके लिए सिर्फ एक संकेत है कि आप AppCompatActivityइसके बजाय सीधे नए का उपयोग करने के लिए कह रहे हैं । AppCompatActivityएक नया, अधिक सामान्य कार्यान्वयन है जो AppCompatDelegateआंतरिक रूप से कक्षा का उपयोग करता है ।

यदि आप एक नया विकास शुरू करते हैं, तो आपको AppCompatActivityतुरंत नए वर्ग का उपयोग करना चाहिए । यदि आपके पास अपने ऐप को अपडेट करने का मौका है, तो ActionBarActivityनई गतिविधि के साथ-साथ हटाए गए को भी बदलें । अन्यथा आप पदावनत गतिविधि के साथ रह सकते हैं और व्यवहार में कोई अंतर नहीं होगा।

इसके बारे में AppCompatDelegate, यह आपको एक गतिविधि में नए रंग के विजेट बनाने की अनुमति देता है, जो न तो है AppCompatActivityऔर न ही है ActionBarActivity

उदाहरण के लिए, आपको बाहरी लाइब्रेरी से एक गतिविधि विरासत में मिलती है, जो बदले में विरासत में नहीं मिलती है, AppCompatActivityलेकिन आप चाहते हैं कि यह गतिविधि टिंटेड सामग्री विजेट्स (दृश्य) हो। यह आप का एक उदाहरण बनाने की आवश्यकता ऐसा करने के लिए AppCompatDelegateअपनी गतिविधि के अंदर, जैसे कि गतिविधि के ओवरराइड तरीकों addContentView(), setContentView()आदि (देखें AppCompatDelegateतरीकों की पूरी सूची के जावाडोक), और उन ओवरराइड तरीकों के अंदर भीतरी पर कॉल अग्रेषित AppCompatDelegateउदाहरण। AppCompatDelegateबाकी काम करेंगे और आपकी "पुरानी-फैशन" गतिविधि "भौतिक" हो जाएगी।


अच्छा उदाहरण .. धन्यवाद @ सर्ज शफ़रेंका
राकेश एल

2
क्या आप मुझे बता सकते हैं कि जब मैं एक्टिविटी के स्थान पर गतिविधि का उपयोग करूंगा तो क्या होगा? मैंने खोज की है लेकिन समाधान नहीं मिला है। कृपया मेरी मदद करें
रवींद्र कुशवाहा

35

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


AppCompatActivityका प्रत्यक्ष अभिभावक वर्ग है ActionBarActivity, अब वह ActionBarActivityकुछ भी कर सकता है जो AppCompatActivityकर सकता है, Androidबाद में बाहर क्यों धकेल दिया?
SilentKnight

4
@SilentKnight: जैसा कि क्रिस ने लिखा है, यह ज्यादातर एक नाम परिवर्तन है। एंड्रॉइड डेवलपर्स ब्लॉग का हवाला देते हुए : "AppCompat सपोर्ट लाइब्रेरी ने विनम्र, लेकिन महत्वपूर्ण शुरुआत के साथ शुरू किया: सभी एपीआई 7 और उच्चतर उपकरणों के लिए एक एकल सुसंगत एक्शन बार। संशोधन 21 में, इसने नई जिम्मेदारी ली: सामग्री रंग पैलेट, विजेट टिनिंग लाना। टूलबार समर्थन, और सभी एपीआई 7+ उपकरणों के लिए और अधिक। उस के साथ, ActionBarActivity नाम वास्तव में वास्तव में क्या किया गया था, इसका पूरा दायरा कवर नहीं किया। "
कॉमन्सवेयर

3
यह है सुरक्षित नहीं उपयोग पदावनत वर्गों के लिए, क्योंकि वे भविष्य के संस्करणों में हटाने के अधीन हैं,। यद्यपि आप आसानी से सभी संदर्भों को प्रतिस्थापित कर सकते हैं ActionBarActivityजब इसे समर्थन पुस्तकालय से हटा दिया जाता है (जैसे कि आपके ऐप को अपडेट करते समय) मैं इसे अब तक उपयोग करने से बचने की सलाह दूंगा।
david.schreiber

12

AppCompat समर्थन पुस्तकालय विनम्र, लेकिन महत्वपूर्ण शुरुआत के साथ शुरू हुआ: सभी एपीआई 7 और उच्चतर उपकरणों के लिए एक एकल सुसंगत एक्शन बार। संशोधन 21 में, इसने नई ज़िम्मेदारी ली : भौतिक रंग पैलेट, विजेट टिनिंग, टूलबार समर्थन, और सभी एपीआई 7 और उपकरणों को लाना। इसके साथ, ActionBarActivity नाम वास्तव में वास्तव में क्या किया गया था, इसका पूरा दायरा नहीं था

http://android-developers.blogspot.it/2015/04/android-support-library-221.html


.. क्या आप मुझे बता सकते हैं कि जब मैं एक्टिविटी के स्थान पर गतिविधि का उपयोग करूंगा तो क्या होगा? मैंने खोज की है, लेकिन समाधान नहीं मिला। कृपया मेरी मदद करें
रवींद्र कुशवाहा

9

AppCompatActivityAndroid समर्थन appcompat पुस्तकालय की रिहाई के बाद से Android-SDK में पेश किया गया था ।

AppCompatActivityFragmentActivityसमर्थन v4 का प्रत्यक्ष बच्चा वर्ग और प्रत्यक्ष अभिभावक वर्ग है ActionBarActivity

AppCompatActivityगतिविधियों के लिए आधार वर्ग है जो समर्थन लाइब्रेरी एक्शन बार सुविधाओं का उपयोग करता है।

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

समर्थन v7 appcompat पुस्तकालय के लिए के रूप में, यह लड़ाई बार उपयोगकर्ता इंटरफ़ेस डिजाइन पैटर्न के लिए समर्थन जोड़ता है । इस लाइब्रेरी में सामग्री डिज़ाइन उपयोगकर्ता इंटरफ़ेस कार्यान्वयन के लिए समर्थन शामिल है।

यहाँ v7 appcompat पुस्तकालय में शामिल कुछ प्रमुख कक्षाएं दी गई हैं:

  • ActionBar - एक्शन बार यूजर इंटरफेस पैटर्न का कार्यान्वयन प्रदान करता है।
  • AppCompatActivity- एक एप्लिकेशन एक्टिविटी क्लास को जोड़ता है जो सपोर्ट लाइब्रेरी एक्शन बार कार्यान्वयन का उपयोग करने वाली गतिविधियों के लिए बेस क्लास के रूप में उपयोग किया जा सकता है ।
  • AppCompatDialog- एक संवाद वर्ग जोड़ता है जिसे AppCompat थीम्ड संवादों के लिए एक आधार वर्ग के रूप में इस्तेमाल किया जा सकता है ।
  • ShareActionProvider - एक मानकीकृत साझाकरण कार्रवाई (जैसे ईमेल या सामाजिक अनुप्रयोगों पर पोस्टिंग) के लिए समर्थन जोड़ता है, जिसे एक कार्रवाई बार में शामिल किया जा सकता है।

एंड्रॉइड सपोर्ट लाइब्रेरी डाउनलोड करने के बाद , यह लाइब्रेरी / एक्स्ट्रा / एंड्रॉइड / सपोर्ट / v7 / appcompat / डायरेक्टरी में स्थित है।


किस बारे में android.support.v4.app.ActivityCompat? क्या यह सिर्फ पुराना नाम है AppCompatActivity?
तैलान

7

पूर्व में केवल प्रवेश बिंदु AppCompatअब पदावनत ActionBarActivityवर्ग के माध्यम से था । दुर्भाग्य से इसने आपको एक सेट गतिविधि पदानुक्रम का उपयोग करने के लिए मजबूर किया जिसने PreferenceActivityअसंभव का उपयोग करने जैसी चीजें बनाईं ।

अधिक जानकारी के लिए क्रिस बान्स का समर्थन-पुस्तकालय-v22-1-0 देखें


1
यह क्रिस का ब्लॉग है, बहुत सराहा गया।
साइलेंटकनाइट

2

एंड्रॉइड सपोर्ट लाइब्रेरी की नवीनतम रिलीज़, 22.1, के ActionBarActivityपक्ष में दर्शाती है AppCompatActivity, जो ActionBarएपीआई स्तर 7 और उसके बाद से शुरू होने वाले सभी उपकरणों के लिए एक सुसंगत लाने का वादा करता है

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