2009-10-10 10 views
5

हाय मैं) एक वर्ग मैं (putExtras में इसके सामने कोई लक्ष्य में पास करना चाहते हैं के साथ समस्या यह इसके serializable और कोड इस तरह दिखता है:एंड्रॉयड: Serializable वस्तु के साथ समस्या यह आशय में डाल दिया

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...} 

public class ObjectB extends ObjectA {...} 


... 
Bundle extras = new Bundle(); 
extras.putSerializable("blabla", ObjectB); 
intent.putExtras(extras); 

... 

Object y = getIntent().getExtras().get("blabla"); 

समस्या है, कि अब y एक ArrayList है और अब एक ObjectB तो मैं नहीं कर सकते यह डाली .. अगर मैं

public class ObjectB implements java.io.Serializable {...} 

करने के लिए कोड बदल यह काम करता है ठीक

+0

जिज्ञासा से बाहर, इस संदर्भ में "एक इरादा" क्या है? –

+0

ठीक है मैंने अभी एंड्रॉइड टैग (दोबारा) जोड़ा है, एक इरादा एक एंड्रॉइड आंतरिक चीज –

+0

आह है। धन्यवाद! 15 अक्षर! यहाँ प्रारंभ करें –

उत्तर

14

अपनी कक्षा में दोनों java.util.List और java.io.Serializable को लागू करने से आप इस android bug शुरू हो गए हैं।

+0

मुझे लगता है कि मैं एक ही मुद्दे पर ठोकर खा रहा हूं: यदि मैं PutSerializable के माध्यम से एक बंडल में एक लिंक्डलिस्ट प्रस्तुत करता हूं, जब मैं इसे प्राप्त करने का प्रयास करता हूं तो मुझे एक ऐरेलिस्ट प्राप्त होता है। यही है ना – superjos

+0

हाँ, ऐसा लगता है कि कई परिस्थितियों में Serializables में LinkedLists को अपनाना प्रतीत होता है। – jjb

+0

200 9 से बग, अभी भी 3 साल बाद :( – mbritto

0

मुझे संदेह है कि क्या हो रहा है कि चूंकि आप ऑब्जेक्टबी को धारावाहिक के रूप में घोषित नहीं कर रहे हैं क्योंकि यह सबसे हालिया मूल वस्तु के लिए "वापस आ रहा है" है। तो जब आप इसे बंडल में डालते हैं तो आप वास्तव में ऑब्जेक्टबी में नहीं डाल रहे हैं, लेकिन ऑब्जेक्टबी वापस ArrayList पर डाला गया है।

मुझे लगता है कि आपको दूसरे ("ठीक काम करता है") कोड के साथ जाना होगा।

+0

अब मैं ऑब्जेक्टबी को एक कक्षा के साथ घिरा हुआ हूं (जिसमें सीरियलज़ेबल लागू होता है) जिसमें ऑब्जेक्टबी इंस्टेंस शामिल है। ऑब्जेक्ट की वस्तु होने के लिए मुझे ऑब्जेक्ट की आवश्यकता है इसलिए मुझे लगता है कि यह सबसे अच्छा समाधान है। और कोड –

+0

पर इसका थोड़ा सा परिवर्तन क्यों नहीं है आप ऑब्जेक्टबी ऑब्जेक्टए का विस्तार कर सकते हैं और Serializable लागू कर सकते हैं? –

0

आप इसे बंडल में पार करने से पहले ऑब्जेक्टबी की घोषणा कैसे कर रहे हैं? मैं आपके प्रश्न के बारे में क्या समझता हूं, जब आप बंडल में जाते हैं तो आपको कोई त्रुटि नहीं मिलती है, केवल इसे हटाते समय। इस तरह सीधे एक ObjectB प्रकार में अपने ObjectB retreiving का प्रयास करें:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla"); 
0

ArrayList में इंटरफेस Parcelable लागू करना चाहिए। इसके बाद आप अपनी सरणी को इरादे में डाल सकते हैं, और उन्हें दूसरी गतिविधि में ले सकते हैं।

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