无法将物件投递为可包裹的

时间:2018-08-25 21:18:58

标签: android android-intent broadcastreceiver classcastexception parcelable

我有一个Intent服务。在onHandleIntent中,我想将List<Trends>类型的对象放入一个Intent,以便可以通过sendBroadcast发送该Intent,如下面的代码所示。

我现在面临的问题是,当我将列表对象放到Bundle并将其强制转换为Parcelable时,我收到以下发布的错误。

我的代码

Intent intentBroadcast = new Intent();
Bundle bundleList = new Bundle();
bundleList.putParcelable("data", (Parcelable) this.mTrendsList); //java.util.ArrayList cannot be cast to android.os.Parcelable
intentBroadcast.putExtra(TwitterTrendsAPIService.CONST_INTENT_KEY, bundleList);
sendBroadcast(intentBroadcast);

错误

java.lang.ClassCastException: java.util.ArrayList cannot be cast to android.os.Parcelable
at com.example.pc_amr.twittertrendsnearlocation.services.TwitterTrendsAPIService.onHandleIntent(TwitterTrendsAPIService.java:86)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:1

3 个答案:

答案 0 :(得分:1)

您只能放置实现Parcelable的类的对象。

有关更多信息,read this

答案 1 :(得分:0)

putParcelable()方法在这里使用错误。此方法可用于保存实现Parcelable接口的类的单个对象。要保存数组,您需要使用putParcelableArrayList()方法。

答案 2 :(得分:0)

如果您需要传递ArrayList,那么我将继续实施Parcelable