2016-02-22 42 views
2

我正在使用Retrofit从后端加载数据。 POJO实现Parcelable。我在阅读和写入POJO时遇到问题。我认为这是因为字段名称与我从后端获得的名称不同。这里的POJO:Parcelable没有为POJO字段设置正确的值

 @SerializedName("poster_path") 
     public String posterPath; 
    .... 
    private Movie(Parcel in) { 
    ... 
      posterPath= in.readString(); 
      ... 

     } 
...//more code 
@Override 
    public void writeToParcel(Parcel dest, int flags) { 

     dest.writeString(posterPath); 

    } 

当我通过intent.getParcelableExtra得到POJO中,posterPath为空。我究竟做错了什么。

+2

您必须按照您写入的顺序读取“包裹”中的数据。你在做这个吗? – Mauker

+0

是的,这是问题!我固定了订单,现在它正在工作!谢谢 – Sai

+0

我会将它作为答案张贴:)不要忘记将其标记为已接受。 – Mauker

回答

2

Parcelable对象时,一定要仔细阅读在以相同的顺序,你写的Parcel,否则将无法正常工作。

所以,如果你写的是这样的:

dest.writeString("blah"); 
dest.writeInt(1); 

你有一个像这样来阅读:对

str = in.readString(); 
someInt = in.readInt(); 

更多信息关于this articlethis tutorial

This question,和this one这里就SO还谈了Parcelable,举例。