प्रश्न का सख्ती से उत्तर देने के लिए: अमान्य का उपयोग करें ():
सार्वजनिक शून्य अमान्य () चूंकि: एपीआई स्तर 1
पूरे दृश्य को अमान्य करें। यदि दृश्य दिखाई देता है, तो भविष्य में ऑनड्रॉ (कैनवस) को किसी बिंदु पर बुलाया जाएगा। इसे UI थ्रेड से कहा जाना चाहिए। गैर- UI थ्रेड से कॉल करने के लिए, postInvalidate () को कॉल करें।
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
अब, जब गतिविधि फिर से शुरू होती है, तो यह हर दृश्य को अपनी ओर खींचती है। अमान्य () को कॉल करने की आवश्यकता नहीं होनी चाहिए। विषय को लागू करने के लिए, सुनिश्चित करें कि आप इसे किसी भी दृश्य के आने से पहले, अर्थात, पहले करेंsetContentView(R.layout.mainscreen);
सार्वजनिक शून्य सेटथीम (इंट रेज) चूंकि: एपीआई स्तर 1
इस संदर्भ के लिए आधार विषय निर्धारित करें। ध्यान दें कि यह किसी भी विचार को कॉन्सेप्ट में इंस्टेंट किए जाने से पहले कॉल किया जाना चाहिए (उदाहरण के लिए सेटकॉन्टेंट व्यू (व्यू) या इनफ़्लो (इंट, व्यूग्रुप) को कॉल करने से पहले)।
एपीआई डॉक्टर संदर्भ यहाँ है: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
चूंकि onDraw () मेथड पहले से इंस्टेंट व्यूज पर काम करता है, setTheme काम नहीं करेगा। मुझे खुद थीम के साथ कोई अनुभव नहीं है, लेकिन दो वैकल्पिक विकल्प जो मैं सोच सकता हूं:
- इसके बजाय onCreate () में setTheme को कॉल करें
- redo setContentView (R.layout.mainscreen); सभी लेआउट को बहाल करने के लिए मजबूर करना।