2012-07-26 7 views
6

मैं एक दृश्य के उपवर्ग है कि इस तरह की गतिविधि उपवर्ग से शुरू होता है है:हो रही स्क्रीन गतिविधि उपवर्ग से नहीं आकार

this.setContentView(instanceOfMyView); 

कि मेरे विचार उपवर्ग में मैं स्क्रीन आकार के साथ कुछ काम करना चाहते हैं, लेकिन सभी लोगों को यहां का कहना है कि यह की तरह शुरू किया जाना चाहिए:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
screenWidth = dm.widthPixels; 
screenHeight = dm.heightPixels; 

लेकिन getWindowManager() विधि है कि केवल गतिविधि उपवर्ग से कहा जा सकता है (मैं सही हूँ?)

इसलिए, यह बुरा है विचार और मुझे गतिविधि में स्क्रीन आकार प्राप्त करने की आवश्यकता है और इसे कन्स्ट्रक्टर देखने के पैरामीटर के रूप में उपयोग करने की आवश्यकता है या उप-वर्ग में स्क्रीन आकार प्राप्त करने का एक तरीका है? शायद, किसी भी तरह से देखने के वर्ग में गतिविधि के उदाहरण के लिए एक लिंक प्राप्त करने की जरूरत है?

अग्रिम धन्यवाद।

उत्तर

25

हाँ वहाँ एक रास्ता है, अगर आप अपने ग़ैर गतिविधि वर्ग के लिए संदर्भ वस्तु पारित कर सकते हैं

int width= context.getResources().getDisplayMetrics().widthPixels; 
    int height= context.getResources().getDisplayMetrics().heightPixels; 

आपको गतिविधि वस्तु ही जरूरत नहीं है।

+1

बिल्कुल सही, मेरे पास दृश्य उपखंड के निर्माता में पहले से ही 'संदर्भ' वस्तु थी। धन्यवाद। –

+0

मुझे खुशी है कि यह आपकी मदद करता है :) –

4
DisplayMetrics metrics = getBaseContext().getResources().getDisplayMetrics();   
    final int w = metrics.widthPixels; 
    final int h = metrics.heightPixels; 
+1

ऐसा लगता है कि 'getBaseContext() 'उप-वर्ग में काम नहीं कर रहा है, लेकिन बस' getContext() 'काम किया है। –

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