Kotlin:尝试调用接口方法';void android.os.Parcelable.writeToParcel(android.os.Parcel,int)和#x27;关于空对象引用

Kotlin:尝试调用接口方法';void android.os.Parcelable.writeToParcel(android.os.Parcel,int)和#x27;关于空对象引用,android,kotlin,Android,Kotlin,您好,我正在使用@Parcelize注释创建一个模型类,但当服务器在响应中发送image null时,我遇到了一个错误 @Parcelize data class EpisodeResponse( @Json(name="summary") val summary: String? = null, @Json(name="number") val number: Int? = null, @Json(name="airtime") val a

您好,我正在使用@Parcelize注释创建一个模型类,但当服务器在响应中发送image null时,我遇到了一个错误

@Parcelize
data class EpisodeResponse(

    @Json(name="summary")
    val summary: String? = null,

    @Json(name="number")
    val number: Int? = null,

    @Json(name="airtime")
    val airtime: String? = null,

    @Json(name="image")
    val image: Image? = null,

    @Json(name="_links")
    val links: Links? = null,

    @Json(name="airdate")
    val airdate: String? = null,

    @Json(name="name")
    val name: String? = null,

    @Json(name="season")
    val season: Int? = null,

    @Json(name="runtime")
    val runtime: Int? = null,

    @Json(name="airstamp")
    val airstamp: String? = null,

    @Json(name="id")
    val id: Int? = null,

    @Json(name="url")
    val url: String? = null
): BaseResponse(), Parcelable
Image.kt

@Parcelize
data class Image(

        @Json(name = "original")
        val original: String? = null,

        @Json(name = "medium")
        val medium: String? = null
) : Parcelable
错误日志:

   02-24 06:51:10.720 7178-7178/com.abc.android E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.abc.android, PID: 7178
   java.lang.NullPointerException: Attempt to invoke interface method 'void android.os.Parcelable.writeToParcel(android.os.Parcel, int)' on a null object reference
      at com.abc.android.data.model.episode.EpisodeResponse.writeToParcel(EpisodeResponse.kt:0)
      at android.os.Parcel.writeParcelable(Parcel.java:1416)
      at android.os.Parcel.writeValue(Parcel.java:1322)
      at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
      at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
      at android.os.Bundle.writeToParcel(Bundle.java:1079)
      at android.os.Parcel.writeBundle(Parcel.java:690)
      at android.os.Parcel.writeValue(Parcel.java:1319)
      at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
      at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
      at android.os.Bundle.writeToParcel(Bundle.java:1079)
      at android.os.Parcel.writeBundle(Parcel.java:690)
      at android.content.Intent.writeToParcel(Intent.java:7793)
      at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2639)
      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
      at android.app.Activity.startActivityForResult(Activity.java:3917)
      at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
      at android.app.Activity.startActivityForResult(Activity.java:3877)
      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
      at android.app.Activity.startActivity(Activity.java:4200)
      at android.app.Activity.startActivity(Activity.java:4168)
      at com.abc.android.ui.episode.EpisodeActivity$onEpisodeResult$1.onClick(EpisodeActivity.kt:43)
      at com.abc.android.ui.episode.EpisodeAdapter$ViewHolder$bindItems$1.onClick(EpisodeAdapter.kt:31)
      at android.view.View.performClick(View.java:5198)
      at android.view.View$PerformClick.run(View.java:21147)
      at android.os.Handler.handleCallback(Handler.java:739)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5417)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   02-24 06:51:10.748 5961-5961/? E/EGL_emulation: tid 5961: eglCreateSyncKHR(1215): error 0x3004 (EGL_BAD_ATTRIBUTE)

有人知道如何在kotlin中处理这个问题吗?

尝试检查BaseResponse可能其中的一些字段没有注释为空

val value: String? = null

因此,您捕获了此异常。

请确保所有内容均不为空,或者尝试使用Parcelable的serializable instaed

而不是@Parcelize和:Parcelable Use:serializable为什么使用serializable优于Parcelable?Parcelable是一种性能更好的推荐方法。