I have following setup:
Kotlin data class:
data class Error(val throwable: Throwable, val reloadAction: (() -> Unit)? = null) : Serializable
类的初始化:
val instance = Error(throwable,this::loadData)
这里的 this
是来自于 Android Architecture 组件中的 ViewModel
当我将这个数据类传递给 Parcelable 时:
parcel.writeSerializable(instance as Serializable)
我收到了以下异常:
我遇到了以下异常:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.mypackagename.Error)
at android.os.Parcel.writeSerializable(Parcel.java:1468)
at com.mypackagename.CustomView$Companion$SavedState.writeToParcel(CustomView.kt:177)
...
Caused by: java.io.NotSerializableException: com.mypackagename.ExampleViewModel
在这个问题中:有没有办法在活动之间传递函数引用?,以下是答案:
如果它是函数引用(SomeClass::someFunction)或lambda,则实际上将其序列化。但是,如果它是函数接口 () -> Unit 的自定义实现,则可能不是,因此应检查并处理其不是的情况。
这是我的情况吗? 或者当函数是非可序列化对象(ViewModel)的函数时,数据类不能被序列化? 有没有其他可能性可以将函数文本作为Serializable传递到数据类中?