android - getResource()। getColor() को हटा दिया गया है




deprecated android-resources (3)

इस सवाल का पहले से ही यहाँ एक जवाब है:

का उपयोग करते हुए: buildToolsVersion "22.0.1" , मेरी ढाल फ़ाइल में लक्ष्य targetSdkVersion 22 buildToolsVersion "22.0.1"

मैंने पाया कि उपयोगी getResources().getColor(R.color.color_name) को हटा दिया गया है।

मुझे इसके बजाय क्या उपयोग करना चाहिए?


मैंने पाया कि उपयोगी getResources ()। GetColor (R.color.color_name) को हटा दिया गया है।

यह दस्तावेज़ के अनुसार एपीआई स्तर 21 में पदावनत नहीं है।

यह एम डेवलपर पूर्वावलोकन में चित्रित किया गया है। हालाँकि, प्रतिस्थापन विधि (एक दो-पैरामीटर getColor() जो रंग संसाधन ID और एक getColor() ऑब्जेक्ट लेता है) केवल M डेवलपर पूर्वावलोकन में उपलब्ध है।

इसलिए, अभी, एकल-पैरामीटर getColor() विधि का उपयोग करना जारी रखें। इस वर्ष के अंत में, एंड्रॉइड एम उपकरणों पर दो-पैरामीटर getColor() विधि का उपयोग करने पर विचार करें, पुराने उपकरणों पर पदावनत एकल-पैरामीटर getColor() विधि पर वापस गिर रहा है।


अच्छी तरह से यह एंड्रॉइड एम में पदावनत है इसलिए आपको एंड्रॉइड एम और लोअर के लिए अपवाद बनाना चाहिए। बस getColor फ़ंक्शन पर वर्तमान विषय जोड़ें। आप getTheme() साथ वर्तमान विषय प्राप्त कर सकते हैं।

यह टुकड़े में चाल चलेगा, आप getActivity() getBaseContext() , yourContext , आदि के साथ बदल सकते हैं जो आपके वर्तमान संदर्भ को रखते हैं।

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme()));
}else {
    yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white));
}

* पीएस: रंग एम में पदावनत है, लेकिन ड्रॉबल एल में पदावनत है


ऐसा लगता है कि उपयोग करने के लिए सबसे अच्छा तरीका है:

ContextCompat.getColor(context, R.color.color_name)

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

yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
                            R.color.colorAccent))

यह मार्शमैलो दो पैरामीटर विधि या पूर्व-मार्शमैलो विधि को उचित रूप से चुनेगा।






android-color