首页 > 解决方案 > 包裹中的 ClassCastException

问题描述

当我尝试在 Second_Activity 中使用 ArrayList 时,出现错误。

我找不到解决方案。

我试过了:

data class Site(
    var site: String? = null,
    var imageArray: ArrayList<Uri>? = null,
    var date: String? = null
) : Parcelable {
    constructor(parcel: Parcel) : this(parcel.readString(),
        parcel.readArrayList(ClassLoader.getSystemClassLoader()) as ArrayList<Uri>?,
        parcel.readString())

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(site)
        parcel.writeArray(arrayOf(imageArray))
        parcel.writeString(date)
    }

    override fun describeContents(): Int {
        return 0
    }

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

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

var mArray = ArrayList<Site>()

我尝试使用 'mArray[0].date'

这是我得到的错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.ac.***.Second_Activity}: 
java.lang.ClassCastException: kr.ac.***.First_Activity$Site cannot be cast to kr.ac.***.Second_Activity$Site
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2950)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3085)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6853)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)

我只是不确定如何在打包时读取/写入 ArrayList。如何在 Second_Activity 中使用 ArrayList?

谢谢。

标签: kotlinarraylistclasscastexceptionparcelableparcel

解决方案


推荐阅读