2015-09-27 18 views
2

我已經完成了這個活動。這裏迴應變量是類型自定義對象LeaseDetailResponse的ArrayList。如何使用Parceler庫將自定義對象類型的Arraylist從活動傳遞給Service?

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 

回答

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)); 
相關問題