2011-09-12 14 views
10

क्या गैर-गतिविधि-व्युत्पन्न कक्षा से लेआउट के दृश्य तक पहुंचने का कोई तरीका है? मैं एकॉर्डन क्लास बना रहा हूं और कुछ गतिविधि के UI तत्वों तक पहुंचने की आवश्यकता है। मैं अपने accordion क्लास के कन्स्ट्रक्टर को गतिविधि के संदर्भ में गुजर रहा हूं, लेकिन findViewById API केवल गतिविधि वर्ग से उपलब्ध है। मैं भी अपनी गतिविधि के उदाहरण में गुजरना नहीं चाहता क्योंकि यह संभावित स्मृति रिसाव के कारण फंस गया है।किसी गतिविधि के बाहर सेViewById() को कॉल करना

उत्तर

1

मैंने कक्षा के निर्माता में दृश्यों में से एक के उदाहरण में पारित किया।

2

गतिविधि का संदर्भ वास्तव में गतिविधि वर्ग ही है। यह मानते हुए कि यह वस्तु केवल एक गतिविधि के भीतर ही रहेगी, इसे गतिविधि प्रकार की वस्तु को पारित करने के लिए सुरक्षित होना चाहिए। अन्यथा, अपने Accordion वर्ग reengineering के बारे में सोचो।

2

यहां कुछ ऐसा है जो सहायक हो सकता है।

मैंने कभी ऐसा कुछ करने की कोशिश नहीं की है। मुझे यह भी नहीं पता कि यह किसी भी स्मृति रिसाव को कम नहीं करेगा। लेकिन यह वही करता है जो आपने पूछा था :) "एक गतिविधि के बाहर से खोजने के लिए findViewById() को कॉल करना"

15

मुझे पूरा यकीन है कि आप केवल पैरामीटर के रूप में एक गतिविधि को पास कर सकते हैं, उदा।

public void initSouthViews(Activity activity) { 
    for (int i = 0; i < southScores_.length; ++i) { 
     southScores_[i] = (EditText) activity.findViewById(10); 
    } 
} 
+0

आप सही हैं। यह काम करता हैं :) – boctulus

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