2012-10-01 17 views
9

मैंने ध्यान दिया है setBackground कि RelativeLayout वस्तु के लिए विधि एपीआई 16 (Android 4.1) और उच्चतर के लिए लक्षित है, लेकिन अपने आवेदन लक्ष्य एपीआई 8 है और मैं इसका इस्तेमाल नहीं कर सकते हैं।एंड्रॉयड - सेट लेआउट पृष्ठभूमि प्रोग्राम के रूप में

इस समस्या के लिए किसी भी वैकल्पिक समाधान (TargetApi (16) या बदलते प्रकट में लक्ष्य एपीआई के साथ वर्ग/विधि अंकन के अलावा) है?
धन्यवाद!

संपादित: ग्रहण गाड़ी था और यह मेरे लिए setBackgroundDrawable वही त्रुटि से पता चला है, लेकिन अब यह काम करने के लिए लगता है। आपके सहयोग के लिए धन्यवाद।

उत्तर

31

उपयोग में से एक:

स्थापित करने के लिए ई दूसरा एक, अपने API संस्करण पर एक सशर्त जाँच करना सुनिश्चित करें:

if (Build.VERSION.SDK_INT >= 16) 
    view.setBackground(...); 
else 
    view.setBackgroundDrawable(...); 

... और @TargetApi(16) और @SuppressWarnings("deprecation") साथ में चिह्नित करें।

+1

आह मुझे .setBackgroundDrawable (Drawable) विधि के बारे में पता है, लेकिन मेरे लिए आईडीई में एपीआई 16 आवश्यकता के साथ एक ही त्रुटि थी। मैं ग्रहण का उपयोग कर रहा हूं और यह विचार को फिर से खोलने और कोड को थोड़ा सा काम करने के बाद एक बग लग रहा था। मुसीबत के लिए आप से बहुत ज्यादा और खेद है। – sethengine

+1

@sethengine परेशानी के बारे में चिंता न करें - हम यहां सहायता करने के लिए हैं! खुशी है कि आपने इस मुद्दे को हल किया है। – Eric

0

इसके बजाय setBackgroundDrawable() का उपयोग करें। यह वही काम करता है, लेकिन इसे नई setBackground() विधि से हटा दिया गया है।

1

यह निर्भर करता है। यदि आप पृष्ठभूमि के रूप में रंग सेट करना चाहते हैं, तो setBackgroundColor() का उपयोग करें। एक ड्रायरेबल के लिए, आप 16 से नीचे एपीआई के लिए अब बहिष्कृत विधि setBackgroundDrawable() और एपीआई 16 उपकरणों के लिए setBackground() का उपयोग कर सकते हैं। पृष्ठभूमि के रूप में संसाधन सेट करने के लिए आप setBackgroundResource() का भी उपयोग कर सकते हैं।

ध्यान दें कि कई विधियों को बहिष्कृत के रूप में चिह्नित किया गया है, लेकिन मुझे अभी तक एक ऐसे व्यक्ति में आने वाला नहीं है जिसे वास्तव में हटा दिया गया है। इसलिए जब आप एपीआई 16 में भी बहिष्कृत विधि का उपयोग कर सकते हैं, तो मैं आपके लक्ष्य एपीआई को 16 पर सेट करने और डिवाइस के चल रहे एपीआई संस्करण के आधार पर विधियों के बीच स्विच करने के लिए किसी और का उपयोग करने की सलाह दूंगा।

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