setBackgroundDrawable () पदावनत


86

इसलिए मेरा एसडीके 15 से 21 तक चला जाता है और जब मैं फोन करता हूं setBackgroundDrawable(), तो एंड्रॉइड स्टूडियो मुझे बताता है कि यह पदावनत है।

मैंने इसका उपयोग करने के बारे में सोचा।

int sdk = android.os.Build.VERSION.SDK_INT;

if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm));
} else {
    layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
}

लेकिन फिर, मुझे "setBackground ()" पर एक त्रुटि मिलती है।

तो, आप इससे कैसे निपटेंगे?


क्या आपको कोई त्रुटि या चेतावनी मिलती है?
ब्रायन हर्बस्ट

आपके पास प्रदर्शन में न्यूनतम sdk संस्करण का क्या मूल्य है?
मनमोहन बादया

4
setbackgroundresource का उपयोग करें (R.drawable.img_wstat_tstorm); उच्च संस्करण के लिए ।setBackgroundDrawable उच्च क्रिया में वंचित है, यह आशा आपको मदद करती है
प्रकाश

Min sdk 15 है। मेरे पास "setBackground ()" लाल रंग में रेखांकित है, लेकिन ऐप चलता है इसलिए मुझे लगता है कि यह एक चेतावनी है
Makoto

आपको Add @SupressWarning
SweetWisher '

जवाबों:


105

यह एक दिलचस्प विषय है। जिस तरह से आप कर रहे हैं वह सही है, जाहिरा तौर पर। यह वास्तव में सिर्फ नामकरण का निर्णय है। जैसा कि यह उत्तर बताता है, setBackground()बस कॉल setBackgroundDrawable():

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

इस सब के बारे में अधिक जानकारी के लिए आप इस धागे को देख सकते हैं ।


20
आपको ध्यान देना चाहिए कि setBackground()पूर्व API16 के लिए काम नहीं करेगा, एक विकल्प हो सकता हैsetBackgroundResource
Mood


18

यह हास्यास्पद है क्योंकि यह विधि पदावनत है, लेकिन यदि आप Android स्रोत कोड को देखते हैं तो आपको यह मिल जाएगा:

   /**
     * Set the background to a given Drawable, or remove the background. If the
     * background has padding, this View's padding is set to the background's
     * padding. However, when a background is removed, this View's padding isn't
     * touched. If setting the padding is desired, please use
     * {@link #setPadding(int, int, int, int)}.
     *
     * @param background The Drawable to use as the background, or null to remove the
     *        background
     */
    public void setBackground(Drawable background) {
        //noinspection deprecation
        setBackgroundDrawable(background);
    }

12

15 अगस्त 2018 तक सही

समर्थन पुस्तकालयों का उपयोग करें

Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null);
ViewCompat.setBackground(layout, drawable);

7

आपको एक त्रुटि मिल रही है क्योंकि getResources ()। GetDrawable () एक आईडी लेता है (int) इसके तर्क के रूप में एक drawable नहीं है। इसे इस्तेमाल करे:

layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));


setBackground उम्मीद Drawable ईद केवल
SweetWisherツ

आप गलत हैं। एपीआई डॉक्स से: android.view.View.setBackground (ड्रा करने योग्य पृष्ठभूमि); पैरामीटर: पृष्ठभूमि पृष्ठभूमि के रूप में उपयोग करने योग्य, या पृष्ठभूमि को हटाने के लिए अशक्त।
डेविड सी एडम्स



2

यह मेरे मामले में सही है इस समस्या को हल करें

 imageView.setBackgroundResource(images[productItem.getPosition()]);


0

मैं एक minSdkVersion 16 और targetSdkVersion 23 का उपयोग कर रहा हूं। निम्नलिखित मेरे लिए काम कर रहा है, यह ContextCompat.getDrawable (संदर्भ, R.drawable.drawable) का उपयोग करता है;

के बजाय का उपयोग करने का: layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));

बल्कि उपयोग:

layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));

getActivity() एक टुकड़ा में प्रयोग किया जाता है, अगर एक गतिविधि के उपयोग से बुला रहा है this


प्रश्न 15 मिनट के लिए पूछा गया है
हरीश ज्ञानानी

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