2012-06-25 16 views
5

यह करने के लिए एक ArrayList पारित नहीं कर सकते कोड एक गतिविधि

ArrayList<MyObject> list = new ArrayList<MyObject>(); 
list.add(new MyObject()); 
Intent intent = new Intent(this, ReceiverActivity.class); 
intent.putExtra("list", list); 
startActivity(intent); 

ReceiverActivity

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getParcelable("list"); 

यहाँ सूची रिक्त है है। यह भी काम नहीं करता है:

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getSerializable("list"); 

मायऑब्जेक्ट पार्ससेलबल है, मैंने सभी आवश्यक विधियों को लागू किया है। मुझे लगता है कि यह कार्यान्वयन समस्या नहीं है, क्योंकि अन्यथा मैं अन्य प्रकार के अपवादों को दोबारा प्राप्त करूंगा। लेकिन मुझे सूची के अलावा कुछ भी नहीं मिला है।

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

अब मैंने पाया इस:

List<Parcelable> list = (List<Parcelable>)getIntent().getParcelableArrayListExtra("list"); 

रिसीवर गतिविधि में प्रयोग की जाने वाली है, लेकिन मैं इसे कैसे भेजूँ और कैसे मैं List<Parcelable> से List<MyObject> मिलता है ?

उत्तर

15

यूएस i.putParcelableArrayListExtra(name, value) जहां मैं आपका इरादा हूं। एक पार्सलेबल ArrayList के लिए putExtra() का उपयोग न करें।

+0

विधि getParcelableArrayListExtra मुझे ArrayList देता मैं ArrayList कैसे मिलता है? ऐसा लगता है कि मुझे तत्वों पर डालना है, या एक नई प्रतिलिपि को ArrayList टाइप करें? – Ixx

+0

आपकी ऑब्जेक्ट्स पार्सलबल को कार्यान्वित करनी चाहिए। तो उन्हें ठीक करना चाहिए – Akhil

+0

उन्हें डालना संभव नहीं है क्योंकि वे एक सूची में हैं और जेनेरिक नहीं हैं। – Ixx

6

प्रयास करें:

ArrayList<MyObject> myList = extras.<MyObject>getParcelableArrayList("list")); 
+0

बस एक साइड नोट के रूप में। इरादे के लिए यह इरादा है .getParcelableArrayListExtra ("नाम") –

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