parceler - 如何使用 Parceler 库将自定义对象类型的 Arraylist 从 Activity 传递到 Service?

标签 parceler

我已经在 Activity 中完成了此操作。这里 responses 变量是自定义对象 LeaseDetailResponse 类型的 ArrayList。

 Intent intent = new Intent(TestActivity.this, AlarmService.class);
    intent.putParcelableArrayListExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, (ArrayList<? extends Parcelable>) Parcels.wrap(responses));
    startService(intent);

在 AlarmService

Parcels.unwrap((Parcelable) intent.getParcelableArrayListExtra(LEASE_DETAIL_RESPONSE_LIST));

显示错误

    java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList

  Caused by: java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList

最佳答案

问题在于您对 ArrayList 的转换...Parceler 只处理 Parcelable。您需要使用 putExtra() 而不是不进行强制转换:

Intent intent = new Intent(TestActivity.this, AlarmService.class);
intent.putExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, Parcels.wrap(responses));
startService(intent);

并在 AlarmService 中反序列化:

Parcels.unwrap(intent.getParcelableExtra(LEASE_DETAIL_RESPONSE_LIST));

关于parceler - 如何使用 Parceler 库将自定义对象类型的 Arraylist 从 Activity 传递到 Service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811665/

相关文章:

kotlin - 打包程序:无法找到类型io.realm.RealmList的读/写生成器

Android:将 Parcelable 转换为 JSON

java - Parceler 库是否使用反射?

android - Parceler - 无法找到生成的 Parcelable 类

java - Android Parceler库: Unable to find generated Parcelable class

java - 将 Bundle 从一个 Activity 传递到另一个 Activity 时出现 Parceler 错误

android - DP5 7.0 - 向未决 Intent 添加额外内容会失败吗?