2016-04-15 13 views
1

Ich versuche, Parcel Objekt aus der A Aktivität B Aktivität über Absicht weitergeben müssen:Put Parcel über Absicht

Intent intent = new Intent (A.this, B.class); 

intent.putExtra ("post", mypost); // where post implements Parcelable` 

In B Aktivität Ich habe die Post-Objekt auf diese Weise:

Post myPost = getIntent().getParcelableExtra("post"); 

In B Aktivität myPost Objektfelder vermischt werden, zB Ich habe postText und postDate Felder in Post-Modell, die Werte dieser Felder in B Aktivität sind gemischt.

Warum kann das passieren? Meine Modellklasse Blick mag der folgende:

public class Beitrag implementiert Parcel, Serializable {

private static final long serialVersionUID = 2L; 

@SerializedName("author") 
private User author; 

@SerializedName("comments_count") 
private String commentsCount; 

@SerializedName("image") 
private String imageToPost; 

@SerializedName("parent_key") 
private String parentKey; 

@SerializedName("created_date") 
private String postDate; 

@SerializedName("id") 
private String postId; 

@SerializedName("text") 
private String postText; 

@SerializedName("title") 
private String postTitle; 

@SerializedName("shared_post_id") 
private String sharedPostId; 

@SerializedName("url") 
private String urlToPost; 

@SerializedName("video") 
private String videoToPost; 

public Post() { 
} 

public Post(Parcel in) { 
    author = (User) in.readValue(getClass().getClassLoader()); 
    commentsCount = in.readString(); 
    imageToPost = in.readString(); 
    parentKey = in.readString(); 
    postDate = in.readString(); 
    postId = in.readString(); 
    postText = in.readString(); 
    postTitle = in.readString(); 
    sharedPostId = in.readString(); 
    urlToPost = in.readString(); 
    videoToPost = in.readString(); 
} 

public static final Creator<Post> CREATOR = new Creator<Post>() { 
    @Override 
    public Post createFromParcel(Parcel in) { 
     return new Post(in); 
    } 

    @Override 
    public Post[] newArray(int size) { 
     return new Post[size]; 
    } 
}; 

public User getAuthor() { 
    return author; 
} 

public void setAuthor(User author) { 
    this.author = author; 
} 

public String getPostDate() { 
    return postDate; 
} 

public void setPostDate(String postDate) { 
    this.postDate = postDate; 
} 

public String getPostTitle() { 
    return postTitle; 
} 

public void setPostTitle(String postTitle) { 
    this.postTitle = postTitle; 
} 

public String getPostText() { 
    return postText; 
} 

public void setPostText(String postText) { 
    this.postText = postText; 
} 

public String getPostId() { 
    return postId; 
} 

public void setPostId(String postId) { 
    this.postId = postId; 
} 

public String getUrlToPost() { 
    return urlToPost; 
} 

public void setUrlToPost(String urlToPost) { 
    this.urlToPost = urlToPost; 
} 

public String getImageToPost() { 
    return imageToPost; 
} 

public void setImageToPost(String imageToPost) { 
    this.imageToPost = imageToPost; 
} 

public String getVideoToPost() { 
    return videoToPost; 
} 

public void setVideoToPost(String videoToPost) { 
    this.videoToPost = videoToPost; 
} 

public String getParentKey() { 
    return parentKey; 
} 

public void setParentKey(String parentKey) { 
    this.parentKey = parentKey; 
} 

public String getCommentsCount() { 
    return commentsCount; 
} 

public void setCommentsCount(String commentsCount) { 
    this.commentsCount = commentsCount; 
} 

public String getSharedPostId() { 
    return sharedPostId; 
} 

public void setSharedPostId(String sharedPostId) { 
    this.sharedPostId = sharedPostId; 
} 

@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeValue(author); 
    dest.writeString(commentsCount); 
    dest.writeString(imageToPost); 
    dest.writeString(parentKey); 
    dest.writeString(postDate); 
    dest.writeString(postId); 
    dest.writeString(postText); 
    dest.writeString(postTitle); 
    dest.writeString(sharedPostId); 
    dest.writeString(urlToPost); 
    dest.writeString(videoToPost); 
} 

}

+0

wo ist dein writeToParcel? Übrigens gibt es Plugins, die diesen Schritt für Sie automatisieren. – Blackbelt

+0

Dies ist mein Go-to Parceable Plugin https://github.com/mcharmas/android-parcelable-intellij-plugin. Es ist möglich, dass Sie in Ihrer 'writeToParcel()' auch die Reihenfolge, in der Ihre Artikel geschrieben werden, gemischt haben. –

+0

@Anil: Bitte geben Sie den vollständigen Code der Post-Klasse an. Ich denke, dass es passiert, weil Sie das Objekt in anderer Reihenfolge als das Lesen schreiben. Bitte posten Sie, damit ich es deutlicher machen kann. –

Antwort

0

hinzufügen describeContents und writeToParcel.

Beispiele:

@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(name); 
    dest.writeString(email); 
    dest.writeString(pass); 
    dest.writeFloat(amountPaid); 
    dest.writeString(url); 
    dest.writeInt(age); 
} 
+0

Ich habe die Funktion writeParcel und describeContents auch mein Modell lesen und schreiben Paket in der richtigen Reihenfolge: –

Verwandte Themen