如何将包含位图的数组列表传递给 Kotlin 中的另一个活动?

How can I pass an arraylist that contains a bitmap to another activity in Kotlin?

提问人:Meo11 提问时间:7/4/2023 最后编辑:Meo11 更新时间:7/4/2023 访问量:57

问:

所以这是我的课:

class Pricecard(val img: Bitmap?, val title: String?, val weight: String?, val price: String?, val code: String?) : Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readValue(),   //this is giving an error
        parcel.readString(),
        parcel.readString(),
        parcel.readString(),
        parcel.readString(),
    ) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(img)  //this is giving an error
        parcel.writeString(title)
        parcel.writeString(weight)
        parcel.writeString(price)
        parcel.writeString(code)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Pricecard> {
        override fun createFromParcel(parcel: Parcel): Pricecard {
            return Pricecard(parcel)
        }

        override fun newArray(size: Int): Array<Pricecard?> {
            return arrayOfNulls(size)
        }
    }
}

我想知道如何将位图图像传递给此活动,以便我可以将其与对象中的其他变量一起显示。这必须在列表中,因为我想显示多个价格表。

我尝试使用Parcelable,但由于这些错误,它不起作用。我希望它能正常工作。

Android 图像 Kotlin 位图 可包裹

评论

1赞 ADM 7/4/2023
不要四处走动..将其保存在应用程序的本地存储中并传递文件 URL。内存中有位图可能会导致 OOM 错误。这个解决方案似乎是一个很大的变化,但它是正确的方法。Bitmap
0赞 Meo11 7/4/2023
好的,感谢您的快速回复。因此,我必须将第一个变量从位图更改为字符串并在那里传递文件 URL,以便我可以使用我传递的字符串 URL 再次找到位图图像?
0赞 Eselfar 7/5/2023
另一种方法是创建“内存缓存”。这意味着您创建一个类,其中可以将相同的实例注入到两个 Activity 中。然后,活动 A 将位图存储到缓存中,活动 B 检索它。这样,您不需要将任何内容存储到本地存储中,当您关闭应用程序时,位图将消失。

答: 暂无答案