6

संभव डुप्लिकेट:
How to deal with deprecated classes in Android to keep compatibilityमैं बहिष्कृत तरीकों से कैसे बच सकता हूं और पीछे की संगतता को कैसे बनाए रख सकता हूं?

मैं पदावनत Display.getWidth() विधि में पड़ गए और देखा कि वह android.view.getSize() साथ प्रतिस्थापित किया गया। हालांकि getSize() केवल एपीआई 13 और View के बाद से उपलब्ध है V4 एंड्रॉइड समर्थन लाइब्रेरी में शामिल नहीं किया गया है।

इसलिए, अगर मैं बहिष्कृत कॉल से बचना चाहता हूं, तो मैं विभिन्न एपीआई स्तरों के लिए अलग-अलग परियोजनाओं/निर्माण को बनाए रखने के बिना ऐसा कैसे कर सकता हूं।

+0

यहां आपका समाधान http://stackoverflow.com/a/10165103/614807 –

+0

@CiragRaval जो इस प्रश्न का समाधान नहीं है। वह जवाब सिर्फ यह कहता है कि बहिष्कृत विधियों का उपयोग करना "ठीक है"। –

उत्तर

4

एक Display वस्तु display नामित को देखते हुए, यह काम करना चाहिए:

int width=-1; 

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) { 
    Point size=new Point(); 
    size=display.getSize(size); 
    width=size.x; 
} 
else { 
    width=display.getWidth(); 
} 

IOW, Build.VERSION.SDK_INT का उपयोग करें "से पहले" और "के बाद" जहां एक नए API शुरू की है के लिए मामलों के बीच शाखा।

एपीआई लेवल 13+ पर सेट करने के लिए इसे आपके निर्माण लक्ष्य (प्रोजेक्ट> प्रॉपर्टीज> ग्रहण में एंड्रॉइड) की आवश्यकता होगी, ताकि आप getSize() पर कॉल कर सकें।

+1

बीटीडब्लू, मुझे लगता है कि चौड़ाई 'प्वाइंट' में' x' है - दस्तावेज निश्चित रूप से इस पर उग्र है, उम, बिंदु। :-) – CommonsWare

2

एक अधिकारी से Android डेवलपर वर्ग Creating Backward-Compatible UIs है:

इस वर्ग दर्शाता है कि कैसे एक पार्श्व-संगत रास्ते में UI घटक और Android के नए संस्करणों में उपलब्ध API का उपयोग करने, सुनिश्चित करना है कि अपने आवेदन अभी भी चलाता है मंच के पिछले संस्करणों पर।

वे पुस्तकालयों के लिए जावा इंटरफेस का उपयोग करने का समर्थन करते हैं जो अधिक ऑब्जेक्ट उन्मुख समाधान प्राप्त करने के लिए बैक-पोर्ट नहीं होते हैं। फिर आप इन्हें दो कंक्रीट कक्षाओं में विस्तारित करते हैं: एक जो असमर्थित प्लेटफ़ॉर्म के लिए वैकल्पिक व्यवहार प्रदान करता है और वह जो समर्थित प्लेटफ़ॉर्म के लिए वास्तविक API को कॉल करता है।

फिर एक कारखाना वर्ग है जो समर्थित प्लेटफ़ॉर्म रेंज के विरुद्ध वर्तमान प्लेटफ़ॉर्म की जांच करके सही कक्षा को तुरंत चालू करता है। आखिरकार, यह if (Build.VERSION.SDK_INT >= HONEYCOMB_MR2) जैसे सशर्त तक उबाल जाता है।

संबंधित मुद्दे

 संबंधित मुद्दे