Here is very simple code:

@Parcelize
data class Inner(val a: Int): Parcelable

@Parcelize
data class Test(val a: Int, val inner: Inner?): Parcelable

@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
    @Test
    fun testParcel() {
        val test = Test(0, null)

        val parcel = Parcel.obtain()
        parcel.writeParcelable(test, test.describeContents())
    }
}

我的财产为Test.inner.如果它不为null,代码可以正常工作,但当它为null时,我有一个例外:

java.lang.NullPointerException: Attempt to invoke interface method 'void android.os.Parcelable.writeToParcel(android.os.Parcel, int)' on a null object reference

如何解决这个问题?也许我做错了什么.

推荐答案

The bug has been fixed in Kotlin 1.1.60.

Kotlin相关问答推荐

如何访问方法引用的接收者?

Kotlin异步不并行运行任务

Kotlin编译器如何决定是否可以在任何给定点调用Suspend方法?

在 Kotlin 中 import 如何找到文件路径?

为什么 Kotlin 的 null 安全性不能与局部变量初始化器一起正常工作?

Kotlin 可打包类抛出 ClassNotFoundException

如何在 kotlin 中通过反射设置委托属性值?

是否可以通过超时暂停协程?

无法删除部分子项.这可能是因为进程打开了文件或将其工作目录设置在目标目录中

Kotlin 静态函数:伴生对象,@JvmStatic @JvmField

无法为 retrofit2.Call 调用无参数构造函数

将 Android Studio 升级到 3.1.0 后的 Android Support 插件错误

Jetpack Compose State:修改类属性

未解决的参考 dagger 2 + kotlin + android gradle

以Kotlin为单位的货币数据类型

在 suspendCoroutine 块中调用挂起函数的适当方法是什么?

Mocked suspend函数在Mockito中返回null

什么是 Kotlin 等价于 Class<?>

如何将vararg作为数组传递给Kotlin中的函数?

kotlin中的全局可拓函数