向Intent发送自定义对象(Android)

3
我想将一个类型为Annonce的对象传递给Intent。如果类属性是基本类型,那么很简单,但在我的情况下,我有一张图片(Bitmap)和一个类型为Client的属性(我已经创建了一个Client类)。
我的解决方案是使用getter和setter访问Client属性,并逐个在writeToParcel方法中进行解析(这需要太长时间),而对于图片,则使用ByteArrayOutputStream将其发送到mainActivity。可以有人帮我在Annonce类中完成所有操作吗?
public class Annonce implements Parcelable {

    String article, desc, temps, ville, categorie;
    int prix;
    Bitmap img;
    Client c;

    public Annonce(String article, String desc, String temps, String ville,
            String categorie, int prix, Bitmap img, Client c) {
        this.article = article;
        this.desc = desc;
        this.c = c;
        this.prix = prix;
        this.img = img;
        this.temps = temps;
        this.categorie = categorie;
        this.ville = ville;
    }

    public static final Parcelable.Creator<Annonce> CREATOR = new Parcelable.Creator<Annonce>() {

        public Annonce createFromParcel(Parcel source) {
            return new Annonce(source);
        }

        public Annonce[] newArray(int size) {
            return new Annonce[size];
        }
    };

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(article);
        parcel.writeString(desc);
        parcel.writeString(temps);
        parcel.writeString(ville);
        parcel.writeString(categorie);
        parcel.writeInt(prix);
    }

    public Annonce(Parcel source) {
        article = source.readString();
        desc = source.readString();
        temps = source.readString();
        ville = source.readString();
        categorie = source.readString();
        prix = source.readInt();
    }
}

位图很大,只能在新的智能手机上使用,但如果我使用我的旧手机发送高清图像,则会停止工作。 - ghassen92
@Sheychan,它不起作用,img是位图而不是[]字节。 - ghassen92
是的,这就是为什么你应该将它转换成bytes[],这很容易... https://dev59.com/tG445IYBdhLWcg3wM3bx - Sheychan
当您需要位图时,请将byte[]转换为位图。https://dev59.com/UGsz5IYBdhLWcg3w2Llt - Sheychan
1
不要在“Annotate”中执行磁盘操作,而应该在“AsyncTask”中执行。另外,请将扩展讨论移至聊天室。这不是 Stack Overflow 评论的目的。 - user1643723
显示剩余11条评论
1个回答

0
拥有"type = bitmap"的属性不是一个好的解决方案。相反,我们可以使用图像路径来引用位图图像。 此外,我们可以将客户端转换为可通过意图发送的Parcelable对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接