2010-11-15 10 views
7

मैंने गतिविधियों से और गतिविधियों को पार करने के लिए पोस्ट पढ़ी हैं, लेकिन मैं इस बात से उलझन में हूं कि मैं अपने विशिष्ट मामले के लिए इसे कैसे करूँगा।आप एक ऑब्जेक्ट सरणी को किसी गतिविधि में कैसे पास करते हैं?

मेरे पास डेज़वेदर (एक डेज़ वेदर [] सरणी) नामक ऑब्जेक्ट्स की एक श्रृंखला है जहां ऑब्जेक्ट्स में कई स्ट्रिंग विशेषताओं के साथ-साथ बिटमैप विशेषता होती है। मैंने कहीं पढ़ा है कि आपको इसे धारावाहिक या दृष्टांत या कुछ बनाना है, लेकिन यह पहली नज़र में गन्दा लगता है।

क्या कोई मुझे सही दिशा में ले जा सकता है?

क्या ऐसा करने का कोई आसान तरीका है?

उत्तर

5

आपकी ऑब्जेक्ट्स को Parcelable interface लागू करने की आवश्यकता है।

जब ऐसा होता है, तो आप Parcelable सरणी बनाने और इसे गतिविधि के लिए पारित कर सकते हैं:

// We assume we have an array: DaysWeather[] input; 
Parcelable[] output = new Parcelable[input.length]; 
for (int i=input.length-1; i>=0; --i) { 
    output[i] = input[i]; 
} 

Intent i = new Intent(...); 
i.putExtra("myArray", output); 

यह भी ध्यान रखें कि जब आप Parcelable इंटरफ़ेस को लागू, पूर्ण भारी वस्तु को क्रमानुसार नहीं है। उदाहरण के लिए, अपने बिटमैप के लिए, केवल रिसोर्स आईडी को क्रमबद्ध करें और जब inflating, ressource ID से बिटमैप को पुन: बनाएँ।

+0

लेकिन ऐसा मत करो। सेवा जैसी वस्तुओं को स्थानांतरित करने के लिए अन्य विधियों का उपयोग करें। – Falmarri

+0

गतिविधियों के बीच वस्तुओं को पारित करने का एक और तरीका सामग्री प्रदाताओं, प्रसारण रिसीवर और मंशा फ़िल्टर का उपयोग करना है। (http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/) –

+1

मुझे नहीं पता कि जब आप कहते हैं कि "भारी भारी वस्तुओं को क्रमबद्ध न करें। " मेरे बिटमैप में संसाधन आईडी नहीं है क्योंकि वे वेब से सीधे अपने संबंधित कंटेनर ऑब्जेक्ट्स में डाउनलोड होते हैं। साथ ही, क्या आप मुझे पार्सेलबल को लागू करने के उपयुक्त ट्यूटोरियल/उदाहरण के लिए निर्देशित कर सकते हैं? मेरी ऑब्जेक्ट्स (डेज़वेदर) केवल 5 स्ट्रिंग्स और बिटमैप युक्त डेटा संरचनाएं हैं। मुझे बिल्कुल यकीन नहीं है कि इस डेटा के साथ writeToParcel() विधि को कैसे कार्यान्वित किया जाए। – joepetrakovich

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

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