Android не может сериализовать Kotlin лямбду - PullRequest
1 голос
/ 29 октября 2019

мы можем прочитать лямбда-функции, сериализуемые по умолчанию (https://discuss.kotlinlang.org/t/are-closures-serializable/1620),
, но я получаю ошибку:

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

Мой класс Аргументы:

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

Что не так смоя лямбда?
(Я получил эту ошибку, когда Android нужно убить мой фрагмент из-за нехватки памяти :))

1 Ответ

0 голосов
/ 29 октября 2019

Если вы хотите сериализовать или посылать что-либо, вам нужно убедиться, что каждое поле сериализуемо или разборчиво. В вашем случае вы пытаетесь сериализовать val function: ()-> Unit, который не сериализуем. К сожалению, вы не можете сделать функцию сериализуемой. Вы должны переосмыслить этот класс аргумента и передать что-то другое. Возможно, вы можете получить какой-то параметр, который приведет к принятию решения и последующему вызову функции из вашего фрагмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...