Android 无法序列化 Kotlin lambda

标签 android kotlin serialization jvm

我们可以看到 lambda 函数默认是序列化的(https://discuss.kotlinlang.org/t/are-closures-serializable/1620),
但我收到错误:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.dialogfragment.Arguments)

我的类(class)参数:

class Arguments(val function: ()-> Unit) : Serializable

我的 lambda 有什么问题?
(当 Android 由于内存不足而需要杀死我的 fragment 时,我得到了这个错误:))

最佳答案

如果您想序列化或打包某些内容,您需要确保每个字段都是可序列化或可打包的。 在您的情况下,您正在尝试序列化不可序列化的 val function: ()-> Unit 。不幸的是,您不能使函数可序列化。你应该重新考虑这个参数类并传递一些不同的东西。可能你可以获得一些参数来做出决定,然后在你的 fragment 中调用一个函数。

关于Android 无法序列化 Kotlin lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599594/

相关文章:

java - 无法实例化 Android 驱动程序 appium 1.8.1

android - getDrawingCache()方法有什么用

android - 使用 Kotlin 中的自定义布局查看 DialogFragment 中的绑定(bind)

json - 我的 Json 字符串未使用 JSONSerialization.jsonObject() 解码

android - 默认展开 CustomExpandable View 的第一项

Kotlin/对任何 Kotlin 库的原生支持?

java - 是否可以将 ViewFlipper 扩展为自定义 View ,以便更改预览中的初始页面?

c# - 在 WCF 中返回已经序列化的类型

generics - 用 Jackson 序列化 Map<Date, String>

android - 无法在 Android P 中写入文件