如何在 kotlin @Parcelize 中使用 null
Posted
技术标签:
【中文标题】如何在 kotlin @Parcelize 中使用 null【英文标题】:How to use null with kotlin @Parcelize 【发布时间】:2018-04-03 03:56:56 【问题描述】:这是非常简单的代码:
@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
。如果它不为空,则代码可以正常工作,但是当它为空时,我会遇到异常:
java.lang.NullPointerException: Attempt to invoke interface method 'void android.os.Parcelable.writeToParcel(android.os.Parcel, int)' on a null object reference
如何解决这个问题?也许我做错了什么。
【问题讨论】:
这些文件是在test文件夹还是androidTest文件夹? @SangeetSuresh 它在androidTest中 这是一个错误youtrack.jetbrains.com/issue/KT-20032 @SilviaH 你是对的。谢谢。 【参考方案1】:该错误已在 Kotlin 1.1.60 中为 fixed。
【讨论】:
Kotlin 1.3.11 发生在我身上:/ 还有 1.3.21 ! 打了1.3.50的bug以上是关于如何在 kotlin @Parcelize 中使用 null的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin用@Parcelize实现序列化Parcelable