IllegalStateException:parcel.readString()不能为null

我把Intent Parcelable对象放到下一个Activity

 val intent = Intent(mContext, ShowTestActivity::class.java) intent.putExtra("test", test) Log.d("myLog", "${intent.getParcelableExtra<Test>("test")}") // No problem mContext.startActivity(intent) 

并在下一个Activity获取此对象:

 if (!intent.hasExtra("test")) throw Exception("Intent doesn't has 'test' extra") val test: Test = intent.getParcelableExtra("test") 

这里是抛出异常:

 public open class QBase(): Parcelable { ... protected constructor(parcel: Parcel?) : this() { parcel?.let { question = parcel.readString() // parcel.readString() must not be null helpText = parcel.readString() qValue = parcel.readDouble() qType = QType.valueOf(parcel.readString()) } } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(question) parcel.writeString(helpText) parcel.writeDouble(qValue) parcel.writeString(qType.name) } ... } 

在测试中:

 public class Test(): Parcelable { ... public var questions: ArrayList<QBase> = ArrayList() constructor(parcel: Parcel?): this() { parcel?.let { ... parcel.readTypedList(questions, QBase.CREATOR) } } override fun writeToParcel(p: Parcel?, p1: Int) { p?.let { ... it.writeTypedList(questions) } } ... } 

这是一个例外:

引起:java.lang.IllegalStateException:在com.vadim.hasdfa.justlearn.Model.Questions.utils.QBase。(QBase.kt:22)上的parcel.readString()不能为null .Model.Questions.utils.QBase $ CREATOR.createFromParcel(QBase.kt:70)at com.vadim.hasdfa.justlearn.Model.Questions.utils.QBase $ CREATOR.createFromParcel(QBase.kt:68)at android.os .Parcel.readTypedList(Parcel.java:2432)at com.vadim.hasdfa.justlearn.Model.Test。(Test.kt:28)at com.vadim.hasdfa.justlearn.Model.Test $ CREATOR.createFromParcel(Test。 kt:47)at android.os.Parcel.readParcelable(Parcel.java:2787)at com.vadim.hasdfa.justlearn.Model.Test $ CREATOR.createFromParcel(Test.kt:45)at android.os.Parcel.readValue (Parcel.java:2681)在android.os.BaseBundle.unparcel(BaseBundle.java:257)android.os.BaseBundle.containsKey(BaseBundle.java:android.os.Parcel.readArrayMapInternal(Parcel.java:3048) 435)at android.content.Intent.hasExtra(Intent.java:6859)at com.vadim.hasdfa.justlearn.Controller.Activity.BrowseTest.Sh 在android.app.Activity.performCreate(Activity.java:6980)android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)android.app.ActivityThread.performLaunchActivity(ActivityThread)上的owTestActivity.onCreate(ShowTestActivity.kt:28) .java:2770)at android.app.ActivityThread.-wrap11(Unknown Source:0)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2770)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 1593)在android.os.Handler.dispatchMessage(Handler.java:105)在android.os.Looper.loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThread.java:6540)在java。 lang.reflect.Method.invoke(Native Method)at com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767 )