【问题标题】:Bundle does not fully received捆绑包未完全收到
【发布时间】:2011-08-19 11:35:33
【问题描述】:

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

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(以null 出现)中接收3 个特定变量的值,其余所有值都正确。

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

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

有答案吗?

【问题讨论】:

  • 必须看到parcelable类代码。编辑你的答案。

标签: android bundle android-intent parcelable


【解决方案1】:

在我看来有两种解决方法。

第一:

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

第二:

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

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 的类名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多