如何使用Android中的Parcelable Interface通过Intent将包含可绘制参数的对象传递给另一个Activity

h43kikqp  于 2023-01-07  发布在  Android
关注(0)|答案(1)|浏览(93)

我想使用Parcelable Interface将一个包含可绘制字段的对象传递给另一个Activity。但问题是,在类中的public void writeToParcel(Parcel parcel, int flags)重写方法(其对象必须发送)中,我不能使用“parcelable.writeDrawable”类型的方法。因此,我可以传递其他字段,但不能传递Drawable。在实现Parcelable Interface后,我在我的类中添加了以下方法。

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

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

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

public int describeContents() {
    return 1;
}

public void writeToParcel(Parcel parcel, int flags) {
    parcel.writeString(name);   
    parcel.writeString(price);
    parcel.writeString(urlOfImage);
}

使用下面的代码,我把对象放入Intent

Bundle b = new Bundle();
b.putParcelable("parse", imageInfo);
intentTrackIntHome.putExtras(b);

所以我要做的就是通过这个可画的区域。
我知道我可以使用共享的首选项,sd卡,全局应用程序类,静态字段;但是我不想用它,因为将来我的代码会改变,所以我想要健壮的代码。

zlhcx6iw

zlhcx6iw1#

将您的Drawable转换为位图并将其发送到另一个Activity。

Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
intent.putExtra("Bitmap", bitmap);

为了获取,这个意图

Bitmap bitmap = (Bitmap)this.getIntent().getParcelableExtra("Bitmap");

相关问题