19

मैंने ImageButton पर गतिशील रूप से शैली लागू करने के लिए ContextThemeWrapper का उपयोग शुरू किया; मेरा an answer मेरा दूसरा प्रश्न है, और अन्य similarquestions के उत्तर पर आधारित है।ContextThemeWrapper अब समर्थन लाइब्रेरी समूह तक क्यों प्रतिबंधित है?

ContextThemeWrapper केवल एक ही पुस्तकालय समूह के भीतर से कहा जा सकता है (ग्रुप = com.android.support)

:

ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes); 
mImageButton = new AppCompatImageButton(wrapper, null, 0); 

लेकिन हाल ही में एक बत्ती त्रुटि बताते हुए ContextThemeWrapper निर्माता पर दिखने लगी

मैंने देखा कि @RestrictTo(LIBRARY_GROUP) एनोटेशन के साथ चिह्नित कक्षा, जो लिंट त्रुटि प्रकट होने का कारण बन रही है। लेकिन मुझे के रूप में कोई जानकारी नहीं मिल रही है क्यों यह com.android.support लाइब्रेरी समूह तक सीमित है।

जहां तक ​​मैं कह सकता हूं, यह शैली, थीम या थीम ओवरले को View प्रोग्रामेटिक रूप से लागू करने का एकमात्र तरीका है; कन्स्ट्रक्टर में तीसरे तर्क के रूप में एक डिफ़ॉल्ट शैली विशेषता सेट करने के अलावा। तो मैं सोच रहा हूं कि इसका उपयोग क्यों प्रतिबंधित होगा; समर्थन पुस्तकालयों के बाहर कक्षा का उपयोग करने के साथ कुछ मुद्दा है? क्या दुष्प्रभाव हो सकते हैं जिनके बारे में मुझे जानकारी नहीं है?


केवल similar question है कि मैं भर में आ गए हैं एक (अब तय हो गई) बग के बारे में एक है, इस AppCompatActivity के उप-वर्ग के onCreate विधि पर इस लिंट त्रुटि को प्रदर्शित करने का कारण बन गया। मुझे नहीं लगता कि यह घटना एक बग है, बल्कि एक जानबूझकर प्रतिबंध है; जो मैं पीछे तर्क जानना चाहता हूं।

मुझे ध्यान रखना चाहिए; इस प्रतिबंध (अब तक) वास्तव में ContextThemeWrapper का उपयोग कर कोड पर कोई प्रभाव नहीं पड़ता है। यह संकलित करता है और ठीक चलता है, और काम करता है जैसा कि मैं उम्मीद करता हूं।

उत्तर

49

android.view.ContextThemeWrapper! = android.support.v7.view.ContextThemeWrapper

समर्थन लाइब्रेरी को @RestrictTo(LIBRARY_GROUP), और @hide पर भी एनोटेट किया गया है - यह सार्वजनिक एपीआई नहीं है।

पहला व्यक्ति सार्वजनिक है।

+0

मुझे 'import android.support.v7.view.ViewPropertyAnimatorCompatSet' में एक ही समस्या दिखाई देती है लेकिन मुझे कोई विकल्प, कोई विचार नहीं मिल रहा है? – TheHebrewHammer

+0

@TheHebrewHammer 'android.support.v4.view.ViewPropertyAnimatorCompat' – ephemient

+0

सिर्फ 'support.v7.view' से 'android.view' में आयात को बदल रहा है, कभी-कभी समाधान आपके विचार से बहुत आसान होता है :) ha ha –

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