Bundle没有完全收到

时间:2011-08-19 11:35:34

标签: android bundle android-intent parcelable

我在通过捆绑包发送数据时遇到了问题。

Intent toAudio = new Intent(TourDescription.this, Audio.class);
toAudio.putParcelableArrayListExtra("poi", arraypoi);
startActivity(toAudio);

这里发送arraypoi这是一个ArrayList。此ArrayList包含一组值。

在接收课上,我喜欢这个

listOfPOI = getIntent().getParcelableArrayListExtra("poi");
Collections.sort(listOfPOI);

其中listOfPOI也是一个数组列表。

我面临的问题是,我无法接收listOfPOI中的3个特定变量的值(来自null),其余所有值都正常。

发送捆绑包时,我的意思是arraypoi我也能正确发送所有值,但问题是在接收时。

注意:我的课程仅实现为parcelable

对此有何答案?

1 个答案:

答案 0 :(得分:0)

我的观点有两种解决方法。

<强>首先

您需要将YourOwnArrayList作为ArrayList<YourObject>implements Parcelable的子类。 Tutorial Here

<强>第二

使用for()循环传递您的Object。像这样。

Intent toAudio = new Intent(TourDescription.this, Audio.class);
toAudio.putExtra("SIZE", arraypoi.size());
for(int i=0; i<arraypoi.size(); i++)
    toAudio.putExtra("POI"+i, arraypoi.get(i));
startActivity(toAudio);

并且在进入其他课程时

Bundle data = getIntent().getExtras();
int size=data.getInt("SIZE");
for(int i=0; i<size; i++)
    listOfPOI.add((YOUR_OBJECT) data.getParcelable("POI"+i));

YOUR_OBJECT是您Object的类名。