Unable to find generated Parcelable class

空扰寡人 提交于 2019-12-11 08:07:35

问题


I am trying to use Parceler in my android project. This is my Song model.

@Parcel(implementations = {SongRealmProxy.class},
       value = Parcel.Serialization.BEAN,
       analyze = {Song.class})
public class Song extends RealmObject {

  @PrimaryKey
  public String id;
  public String isrc;
  public String songName;
  public String artistName;
  public String album_id;
  public String albumArtUrl;
  public String genre_id;
  public String genreName;
  public String releaseYear;
  public String price;
  public String lyrics;
  public String demo;
  public int explicit;
}

When I try to warp these song model using bundle like this.

b.putParcelable(DATA_PARAM, Parcels.wrap(song));

I keep having this error.

org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for com.devhousemyanmar.juketrill.models.Song, verify that your class is configured properly and that the Parcelable class com.devhousemyanmar.juketrill.models.Song$$Parcelable is generated by Parceler.

Please help me to solve this problem.


回答1:


Parcelable class should be like this :

package com.yourpackagename;

public class BrushData implements Parcelable {

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

        @Override
        public BrushData[] newArray(int size) {
            return new BrushData[size];
        }
    };
    private static final int VERSION = 1;
    @SerializedName("icon")
    private String icon;
    @SerializedName("effects")
    private ArrayList<String> effects;

    private BrushData(Parcel parcel) {
        if (parcel != null) {
            readFromParcel(parcel);
        }
    }

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

    private void readFromParcel(Parcel in) {
        if (in.readInt() == VERSION) {
            icon = in.readString();
        }
    }

    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(VERSION);
        parcel.writeString(icon);
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public ArrayList<String> getEffects() {
        return effects;
    }

    public void setEffects(ArrayList<String> effects) {
        this.effects = effects;
    }

}


来源:https://stackoverflow.com/questions/49206007/unable-to-find-generated-parcelable-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!