2

我在活动中完成了此操作。这里的响应变量是自定义对象 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);

在报警服务

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
4

1 回答 1

2

问题在于您对 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));
于 2015-09-27T20:28:05.227 回答