2016-03-02 2 views
0

У меня объект вроде этого:Int в нечто иное после parcelable

public class CommunityCurrencyContent implements Parcelable { 
    private Double balance; 
    private Long creationDate; 
    private String description; 
    private Double offerCount; 
    private String communityIcon; 
    private String communityDescription; 
    private String communityName; 
    private String[] links; 
    private String code; 
    private Double memberCount; 
    private String communityImage; 
    private Integer pk; 

    public CommunityCurrencyContent(Parcel in) { 
     balance = in.readDouble(); 
     creationDate = in.readLong(); 
     description = in.readString(); 
     offerCount = in.readDouble(); 
     communityIcon = in.readString(); 
     communityDescription = in.readString(); 
     communityName = in.readString(); 
     links = in.createStringArray(); 
     code = in.readString(); 
     memberCount = in.readDouble(); 
     communityImage = in.readString(); 
     pk = in.readInt(); 
    } 

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

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

    public Double getBalance() { 
     return balance; 
    } 

    public Long getCreationDate() { 
     return creationDate; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public Double getOfferCount() { 
     return offerCount; 
    } 

    public String getCommunityIcon() { 
     return communityIcon; 
    } 

    public String getCommunityDescription() { 
     return communityDescription; 
    } 

    public String getCommunityName() { 
     return communityName; 
    } 

    public String[] getLinks() { 
     return links; 
    } 

    public String getCode() { 
     return code; 
    } 

    public Double getMemberCount() { 
     return memberCount; 
    } 

    public String getCommunityImage() { 
     return communityImage; 
    } 

    public Integer getPk() { 
     return pk; 
    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeDouble(this.balance); 
     parcel.writeLong(this.creationDate); 
     parcel.writeString(this.description); 
     parcel.writeDouble(this.offerCount); 
     parcel.writeString(this.communityIcon); 
     parcel.writeString(this.communityDescription); 
     parcel.writeString(this.communityName); 
     parcel.writeString(this.code); 
     parcel.writeDouble(this.memberCount); 
     parcel.writeString(this.communityImage); 
     parcel.writeInt(this.pk); 
    } 
} 

Перед тем, как передать этот объект через умысел каждое значение является правильным. После передачи значение pk и некоторые строковые значения изменяются. Например, pk равно 5, а после прохождения - 3801203.

Может кто-нибудь помочь мне в этом, потому что я не вижу проблемы.

+0

Я думаю, что вижу небольшую ошибку; try 'pk = (Integer) pk.readValue (null);' в конструкторе. Я подозреваю, что что-то связано с autoboxing из 'int' в' Integer', но я не уверен, что нет обратного действия - для автоматического преобразования 'Integer' в' int' – Shark

+2

Вы читаете ссылки, но вы их не пишете ????? Существует несоответствие ... –

+0

о, я был неправ, это, скорее всего, ссылки. – Shark

ответ

2

Вы читаете значение ссылки никогда не писать его в посылке:

links = in.createStringArray(); 

При использовании посылок, вы должны убедиться, что вы держите в том же порядке при чтении и записи.

+0

Спасибо. Я не обратил на это внимания. – user1007522