You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin:如何传递含Bitmap的Pricecard列表至另一个Activity?

解决Parcelable传递Bitmap的错误问题

原代码的核心错误

  • writeToParcel方法里用writeString()写入Bitmap对象,类型完全不匹配,Bitmap不是字符串,必然报错。
  • 构造函数中用parcel.readValue()读取Bitmap,既没指定正确的类加载器,也不适合读取Parcelable类型的对象。

修正后的完整代码

import android.graphics.Bitmap
import android.os.Parcel
import android.os.Parcelable

class Pricecard(val img: Bitmap?, val title: String?, val weight: String?, val price: String?, val code: String?) : Parcelable {
    constructor(parcel: Parcel) : this(
        parcel.readParcelable(Bitmap::class.java.classLoader),
        parcel.readString(),
        parcel.readString(),
        parcel.readString(),
        parcel.readString()
    )

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeParcelable(img, flags)
        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)
        }
    }
}

修正说明

  1. 写入Bitmap:改用parcel.writeParcelable(img, flags),因为Bitmap本身实现了Parcelable接口,用专门的Parcelable写入方法能正确处理对象,同时自动兼容null值。
  2. 读取Bitmap:用parcel.readParcelable(Bitmap::class.java.classLoader)替代readValue(),指定Bitmap的类加载器,确保能正确解析出Parcelable类型的Bitmap对象。

列表传递与接收方式

源Activity传递列表

// 假设你已经创建好Pricecard列表
val priceCardList = mutableListOf<Pricecard>()
// 添加数据到列表...

val intent = Intent(this, TargetActivity::class.java)
// 把列表转成ArrayList传入
intent.putParcelableArrayListExtra("PRICE_CARD_LIST", ArrayList(priceCardList))
startActivity(intent)

目标Activity接收列表

val receivedList = intent.getParcelableArrayListExtra<Pricecard>("PRICE_CARD_LIST")
// 遍历receivedList即可展示每个Pricecard的内容

内容的提问来源于stack exchange,提问作者Meo11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:32:34