android - Cannot restore Object from Instance state: parsing error -


मैं एक savedInstanceState से वस्तु की एक सरणी को पुनर्स्थापित करने का प्रयास कर रहा हूं। मैंने प्रत्येक एक को बंडल व्यक्तिगत रूप से यहां जोड़ा था: (लय ऑब्जेक्ट की सरणी है)

  @Override सार्वजनिक शून्य सेववेइन्स्टेंसस्टेट (बंडल आउटस्टेट) {outState.putInt (" numParts ", rhythm.length); (इंट इंडेक्स = 0; इंडेक्स & lt; rhythm.length; ++ अनुक्रमणिका) के लिए {outState.putSerializable ("" + इंडेक्स, लय [इंडेक्स]। बीट); } Super.onSaveInstanceState (outState); }   

जब onRestoreInstanceState () पद्धति को बुलाया जाता है, तब मैं अपने rhythm ऑब्जेक्ट्स से इन्सटेंस स्टेट से ऑरजेस प्रदान करने का प्रयास करता हूं : (यह रिक्त नहीं है)

  @ResherStatestState (बंडल सहेजे गए इन्स्टैंसस्टेट) पर सार्वजनिक शून्य को ओवरराइड करें {ताल = नया भाग [savedInstanceState.getInt ("numParts")]; (इंट इंडेक्स = 0; इंडेक्स & lt; rhythm.length; ++ अनुक्रमणिका) के लिए {ऑब्जेक्ट मध्यममैन = सहेजे गए इन्स्टैंसस्टेट। गेट सेरेरिज़ेबल ("" + इंडेक्स); If (middleMan == शून्य) {System.out.println ("यह रिक्त है ..."); } लय [अनुक्रमणिका] = (भाग) मध्यमैन; }}   

यह एक ClassCastException फेंकता है जब मैं भाग को हर बार पार्स करता हूं भाग के कार्यान्वयन सीरियलजबल । यह मुझे पार्स करने की अनुमति क्यों नहीं दे रहा है? क्या मुझे कस्टम सीरियलाइज करना पड़ता है? कृपया मदद!

मुझे लगता है कि भाग एक प्रकार है जिसे आपने बनाया है? इसलिए भाग को एक सरणी के रूप में इलाज करने के बजाय

  ताल = नया भाग [savedInstanceState.getInt ("numParts")];   

आप इस तरह से एक नया भाग ऑब्जेक्ट इन्स्तांत करना चाहते हैं:

  rhythm = new part (savedInstanceState.getInt ("numParts"));  
  • Ol>

  • Comments