Parcelable object casting error in Android -
मेरे पास एक ऐसा वर्ग है जो पार्सल योग्य करता है:
सार्वजनिक अंतिम श्रेणी उत्पाद उपकरण पार्सल योग्य {निजी पूर्णांक आईडी; निजी स्ट्रिंग शीर्षक; सार्वजनिक उत्पाद (पार्सल स्रोत) {this.ID = source.readInt (); This.title = source.readString (); } सार्वजनिक int का वर्णन सम्मिश्र () {return.hashCode (); } सार्वजनिक शून्य लिखतपार्सेल (पार्सल डेस्ट, इंट फ्लैग) {dest.writeInt (this.ID); (This.title) dest.writeString; } सार्वजनिक स्थिर अंतिम अनुभागीय। निर्माता निर्माता = नया पार्सल योग्य। निर्माता () {सार्वजनिक उत्पाद createFromParcel (पार्सल में) {नए उत्पाद (में) लौटें; } सार्वजनिक उत्पाद [] newArray (पूर्णांक आकार) {नए उत्पाद [आकार] लौटें; }}; // Getters ... // Setters ...} मेरे ऐप में किसी गतिविधि में से "ए" से, मुझे एक कस्टम ऑब्जेक्ट एआरएई सूची को किसी अन्य गतिविधि में पास करना होगा " बी "तो मैं करता हूं:
<पूर्व> अर्रेलिस्ट & lt; उत्पाद & gt; ProductList = नए अर्रेलिस्ट & lt; उत्पाद & gt; (); ProductList.add (नया उत्पाद (...)) productList.add (नया उत्पाद (...)) ... intent.putParcelableArrayListExtra ("उत्पाद", productList); क्रियाकलाप "बी" से मुझे आशय मिलता है:
ArrayList & lt; उत्पाद & gt; उत्पाद सूची; आशय का इरादा = this.getIntent (); ProductList = (ArrayList & lt; उत्पाद & gt;) intent.getParcelableArrayListExtra ("उत्पादों"); मैं संकलन प्रक्रिया द्वारा एक कलाकार प्रदर्शन कर रहा हूं त्रुटि को फेंकता है:
त्रुटि: (38, 78) त्रुटि: अपरिवर्तनीय प्रकार की आवश्यकता: ArrayList & lt; उत्पाद & gt; पाया: अर्रेलिस्ट & lt; पार्सलेबल & gt; तो क्या मैं गलत कर रहा हूं?
इसके बजाय, अगर मैं कलाकार को हटा लेता हूं तो इसे सही ढंग से संकलित किया जाता है ... इसलिए मुझे यकीन नहीं है कि कलाकारों को हटाने के बाद अंतर्निहित कलाकारों को करने का प्रयास करते समय यह एक रनटाइम अपवाद फेंक देगा।
यहां दो समस्याएं:
1) आपका निर्माता सामान्य नहीं है आपके पास:
सार्वजनिक स्थिर अंतिम अनुभागीय। निर्माता क्रिएटर = नया पार्सल योग्य। निर्माता () { और यह होना चाहिए:
सार्वजनिक स्थिर अंतिम पैरासेलबल। निर्माता & lt; उत्पाद & gt; निर्माता = नया पार्सलेबल। क्रिएटर & lt; उत्पाद & gt; () { 2) उस बदलाव के बाद, आपको इसे मैन्युअल रूप से डालने की आवश्यकता नहीं है:
productList = Intent.getParcelableArrayListExtra ("उत्पाद");
Comments
Post a Comment