2012-11-05 12 views
23

की आवश्यकता है मैं view.setBackgroundDrawable(Drawable) का उपयोग करना चाहता था लेकिन यह विधि deprecated है। इसे .setBackground(Drawable) के साथ बदल दिया गया है। लेकिन मेरा न्यूनतम एपीआई 8 इसे संभाल नहीं सकता है। यह मेरे एपीआई 16.बहिष्कृत विधि, लेकिन विधि को बदलने के लिए उच्च एपीआई

करने के लिए न्यूनतम निर्धारित करने के लिए कहता है डिवाइस के एपीआई के आधार पर एक अलग विधि का उपयोग करने के लिए एक रास्ता है?

if(API<16) 
{ 
    view.setBackgroundDrawable(Drawable) 
} 
else 
{ 
    view.setBackground(Drawable) 
} 

या मैं वास्तव में यह करने के लिए न्यूनतम API बदलने के लिए क्या है की तरह कुछ?

उत्तर

39

setBackgroundDrawable बहिष्कृत है लेकिन यह अभी भी काम करता है ताकि आप इसका उपयोग कर सकें। लेकिन आप buildTarget एपीआई 16 स्थापित करने के लिए और मिनट समान 7 या कुछ और करने के लिए निर्माण की जरूरत है काम करने के लिए इस

int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    setBackgroundDrawable() 
} else { 
    setBackground(); 
} 

इसके लिए की तरह कुछ का उपयोग करना चाहिए अगर आप पूरी तरह से सही होना चाहता हूँ।

+3

इस कोड में ... चेतावनी दिखाई जाएँगी, तो आप चेतावनी को दबाने इसे हटाने के लिए उपयोग कर सकते हैं! – Antrromet

+3

असल में मैं इन दोनों की जरूरत है: @SuppressLint ("NewApi") \t \t @SuppressWarnings ("विरोध") – Niels

+0

हां, मैं एक प्रकार का वृक्ष चेतावनी – Antrromet

5

आप एपीआई संस्करणों के आधार पर विभिन्न विधियों का उपयोग कर सकते हैं।

उदाहरण के लिए:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { 
     //Methods for version <8 (FROYO) 
} else { 
     // Methods for version >=8 
} 

यहाँ किसी भी उच्च संस्करणों (के लिए उदाहरण के लिए: 16 यहाँ) करने के लिए अपने targetSDkversion स्थापित करने और अपने minsdkversion संस्करणों (एपीआई 7) कम करने के लिए निर्धारित किया है।

7

कुछ इस तरह:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){ 
    view.setBackgroundDrawable(Drawable) 
} else { 
    view.setBackground(Drawable) 
} 
संबंधित मुद्दे