मैं एक इरादे से दूसरे Parcelable डेटा पास करने के कोशिश कर रहा हूँ और इस त्रुटि मैं हो रही है:Parcelable प्रोटोकॉल निर्माता कहा जाता है एक Parcelable.Creator वस्तु की आवश्यकता है (मैं निर्माता की क्या ज़रूरत है)
08-31 14:12:22.709: E/AndroidRuntime(9931): FATAL EXCEPTION: main
08-31 14:12:22.709: E/AndroidRuntime(9931): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.matejsoftware.cardscoretracker/com.matejsoftware.cardscoretracker.Igra}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.matejsoftware.cardscoretracker.Novaigra$Player
बात है : मेरे पास पार्ससेल योग्य है। निर्माता वस्तु।
public class Player implements Parcelable{
String name;
int score;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(score);
}
public Player(Parcel source){
score = source.readInt();
name = source.readString();
}
public Player(int score, String name){
this.score = score;
this.name = name;
}
}
public class MyCreator implements Parcelable.Creator<Player> {
@Override
public Player createFromParcel(Parcel source) {
return new Player(source);
}
@Override
public Player[] newArray(int size) {
return new Player[size];
}
}
वहाँ किसी चीज़ निर्माता के साथ गलत है: मैं नीचे पूरे Parcelable कोड पोस्ट करेंगे? जैसे ही मैं अगली गतिविधि शुरू करने के लिए बटन क्लिक करता हूं, ऐप क्रैश हो जाता है।
इस तरह मैं "प्राप्त करें" दूसरी गतिविधि में Parcelable डेटा:
Player newPlayer = new Player(0, text);
playersParceledData.add(newPlayer);
zacniIgro.putParcelableArrayListExtra("parceledData", playersParceledData);
मैं ArrayList> उपयोग करने के लिए यह नहीं आप आसानी से उपयोग कर रहा गतिविधियों के बीच स्थानांतरित कर सकते हैं परिवर्तित करने के लिए की आवश्यकता है क्योंकि सिफारिश की:
इस के लिए:
मैं इस बदल getSeriasableExtra()। जैसा कि मैं आपका कोड देखता हूं, आपके पास स्टोर करने के लिए कोई जटिल डेटा नहीं है, इसलिए स्टोर करने के लिए एक विशेष POJO को क्रेट करने का कोई अर्थ नहीं है। –
@ बिराजजलावाडिया क्या आप कृपया मुझे एक त्वरित उदाहरण दे सकते हैं कि मेरा कोड हैश मैप के साथ कैसा दिखता है? मैंने पहले कभी इसका उपयोग नहीं किया है और मैं वास्तव में आधिकारिक दस्तावेज़ों से इसका उपयोग कैसे नहीं कर सकता। – Guy
आपकी 'प्लेयर' कक्षा स्थिर 'CREATOR' सदस्य घोषित नहीं करती है। यह केवल निर्माता वर्ग ('MyCreator') के कार्यान्वयन की घोषणा करता है। अनुक्रम को सही करने के अलावा, आपको 'CREATOR' सदस्य को 'प्लेयर' में जोड़ना होगा। – Les