【问题标题】:Unable to find generated Parcelable class找不到生成的 Parcelable 类
【发布时间】:2018-08-18 17:57:24
【问题描述】:

我正在尝试在我的 android 项目中使用 Parceler。 这是我的 Song 模型。

@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;
}

当我尝试使用这样的捆绑包来扭曲这些歌曲模型时。

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

我一直有这个错误。

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.

请帮我解决这个问题。

【问题讨论】:

  • 配置看起来正确,你在使用proguard吗?
  • 不,我还没用过proguard。 @JohnEricksen
  • 接下来要检查的是您的构建中有 Parceler 注释处理器,它实际上构建了 java 文件。你能检查你的 gradle 构建和临时构建输出位置吗?

标签: android realm parceler


【解决方案1】:

Parcelable 类应该是这样的:

包 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;
    }

}

【讨论】:

  • 不,我正在使用那个包裹器。 github.com/johncarl81/parceler 试图打包我的领域对象。
  • @MinKhantLu 你有什么解决办法
  • @saintjab 我决定用另一种方式而不是这个。
猜你喜欢
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多