2012-03-15 16 views
12

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

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

+0

विशेष रूप से क्या अन्य संरचनाओं आप के साथ काम कर रहे हैं ? उनमें से कई या तो पहले से ही एक संदर्भ है या किसी बिंदु पर उनके पास एक संदर्भ पारित किया है। – FoamyGuy

+0

आप संदर्भ को सदस्य क्षेत्र बना सकते हैं और निर्माता में सेट कर सकते हैं। लेकिन इससे स्मृति रिसाव हो सकता है, इसलिए सावधानी के साथ उपयोग करें (संदर्भ के स्थिर संदर्भ से बचें)। – j0ntech

+0

मुझे दो कक्षाएं मिली हैं: 1) पंजीकरण स्क्रीन जो गतिविधि को बढ़ाती है। 2) सॉकेट क्लाइंट जो गतिविधि का विस्तार नहीं करता है। जब कोई उपयोगकर्ता पंजीकरण स्क्रीन में कोई फॉर्म सबमिट करता है तो यह एक नया सॉकेट क्लाइंट ऑब्जेक्ट बनाता है, जो एक सॉकेट कनेक्शन के माध्यम से पंजीकृत होता है (बिट जो IOException फेंकता है)। यदि सफल हो तो सॉकेट क्लाइंट पंजीकरणस्क्रीन कक्षा में मान देता है, लेकिन जब यह सफल नहीं होता है कि मैं संघर्ष कर रहा हूं। क्या मुझे बस सॉकेट क्लाइंट को अपवाद फेंकना चाहिए और उन्हें पंजीकरण स्क्रीन में पकड़ना चाहिए? – Joseph

उत्तर

15

जब आप गतिविधि वर्ग कॉल से Non-Activity वर्ग फोन

YourNonActivtyClass obj = new YourNonActivtyClass(Activity.this); 
+1

धन्यवाद। हालांकि, एक समस्या हालांकि, उपर्युक्त का उपयोग करते समय मुझे "प्रकार गतिविधि का कोई संलग्न उदाहरण गुंजाइश में पहुंच योग्य नहीं है"। यह कक्षा के भीतर से है जो गतिविधि को बढ़ाता है। – Joseph

+0

सबसे पहले एंड्रॉइड गतिविधि वर्ग कॉल है और फिर आप गतिविधि के बिना किसी भी वर्ग को कॉल कर सकते हैं ताकि मेरे लिए उपरोक्त कोड में कोई समस्या न हो .... –

+0

इस तरह पोस्ट करने के लिए संदर्भ में बहुत ही भारी वस्तु नहीं है? – Wooff

-13

टोस्ट संदेशों की तरह आवेदन संदर्भ में काम करना चाहिए तुम सिर्फ संदर्भ गुजरती हैं, यानी

Toast.makeText(getApplicationContext(), ...); 
+2

यदि वह अंदर नहीं है गतिविधि, तो कोई getAplicationContext() विधि नहीं हो सकती है। इसके अतिरिक्त इस विधि का उपयोग करने की कोई आवश्यकता नहीं है। गतिविधि ऑब्जेक्ट स्वयं एक संदर्भ है। तो YourActivityName.this का उपयोग करने के बजाय getAplicationContext(); – FoamyGuy

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