包裹中的ClassCastException

时间:2020-05-13 18:35:07

标签: kotlin arraylist classcastexception parcelable parcel

当我尝试在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?

谢谢。

0 个答案:

没有答案