मेरी कक्षा ExpenseFB
, जो Parcelable
लागू करता है के बीच मानचित्र युक्त वस्तु, शामिल UserFB
के Map
(जो Parcelable
भी लागू करता है):
ExpenseFB:पास parcelable गतिविधि
public class ExpenseFB implements Parcelable {
private String id;
private String name;
private String description;
private String whopaidID;
private String whopaidName;
private Double amount;
private Map<String, UserFB> partecipants;
// setters and getters...
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(name);
dest.writeString(description);
dest.writeString(whopaidID);
dest.writeString(whopaidName);
dest.writeMap(partecipants);
}
protected ExpenseFB(Parcel in) {
id = in.readString();
name = in.readString();
description = in.readString();
whopaidID = in.readString();
whopaidName = in.readString();
in.readMap(partecipants,UserFB.class.getClassLoader());
}
public static final Creator<ExpenseFB> CREATOR = new Creator<ExpenseFB>() {
@Override
public ExpenseFB createFromParcel(Parcel in) {
return new ExpenseFB(in);
}
@Override
public ExpenseFB[] newArray(int size) {
return new ExpenseFB[size];
}
};
}
UserFB:
public class UserFB implements Parcelable{
private String id;
private String name;
private String email;
private Map<String, GroupFB> groups;
private Map<String, UserFB> friends;
// setters and getters
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(name);
dest.writeString(email);
dest.writeMap(groups);
dest.writeMap(friends);
}
protected UserFB(Parcel in) {
id = in.readString();
name = in.readString();
email = in.readString();
in.readMap(groups,GroupFB.class.getClassLoader());
in.readMap(friends,UserFB.class.getClassLoader());
}
public static final Creator<UserFB> CREATOR = new Creator<UserFB>() {
@Override
public UserFB createFromParcel(Parcel in) {
return new UserFB(in);
}
@Override
public UserFB[] newArray(int size) {
return new UserFB[size];
}
};
}
मैं ऑब्जेक्ट जोड़कर दो क्रियाओं के बीच एक एक्सपेंसएफबी ऑब्जेक्ट पास करना चाहता हूंआशय के लिए:
... Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.put(java.lang.Object, java.lang.Object)' on a null object reference
मैं:
intent.putExtra("id", expenseFB);
है, डिबग मोड में, मैं दूसरी गतिविधि में getIntent().getParcelableExtra("id")
निष्पादित जब कोशिश करता partecipants
नक्शे पर readMap()
विधि करने के लिए यह निम्न अपवाद को जन्म देती है देखें कि partecipants
पहली गतिविधि में नक्शा भरा गया है: मुझे लगता है कि समस्या लिखने में है() विधि।
Parcelable
ऑब्जेक्ट को मानचित्र रखने के लिए मानक या बेहतर तरीका मौजूद है?
क्या मुझे मानचित्र को पार्सल करने के लिए एक और तरीका कॉल करना है?
मैं Serializable
ऑब्जेक्ट का उपयोग नहीं करना चाहता क्योंकि मैंने पढ़ा है कि वे खराब प्रदर्शन करते हैं।
'Parcel' कक्षा में पहले से ही 'writeMap() 'और' readMap() 'विधि है जो वास्तव में ऐसा करती है। आप मौजूदा विधि का उपयोग क्यों नहीं करेंगे? यहां पहिया को फिर से शुरू करने का कोई कारण नहीं है। –