我将ArrayList<Custom implements Parcelable> myList
传递给意图。
将ArrayList放入新的Intent中,以下两种方法似乎都能正常工作。
results.putParcelableArrayListExtra("list", myList);
results.putExtra("list", myList);
当我检查mIntent / mExtras / mMap / table时,它就是那里的一切。但是在onCreate方法的意图中,一些数据似乎丢失了。我正在使用myList = (ArrayList<Custom>) this.getIntent().getParcelableArrayListExtra("list");
例如,该列表包含五个项目[a],[b],[c],[d]和[e]:
put... get...
[a] -> [a]
[b] -> null
[c] -> [b]
[d] -> null
[e] -> [c]
似乎新列表中的每个第二项都不是预期的,并占用了最后遗漏的一个地方。 你能告诉我我做错了什么吗?
答案 0 :(得分:1)
尝试使用
检索数组getIntent().getExtras().getParcelableArrayList(yourArray);
答案 1 :(得分:1)
试试我的朋友:
intent.putParcelableArrayListExtra("tag",yourObjectImplementsParceable);
xxx = (ArrayList<yourClassImplementsParceable>) intent.getParcelableArrayListExtra("tag");
希望这会有所帮助
答案 2 :(得分:1)
与其亲自编写Parcelable实现,不如尝试使用Android Studio代码完成功能(在Windows中:一旦您写入“ implements Parcelable”,然后再次在CustomObject类名上输入Alt + Enter)。这样可以防止实现中的常见错误。
即使如此,请注意:如果您实现了Parcelable并随后在CustomObject中添加/删除对象变量,则Parcelable的实现将不再有效。
在这种情况下,您可以手动将缺少的详细信息添加到Parcelable方法中,但是我更喜欢删除它们并让Android Studio再次实现它们(请确保删除CustomObject中所有已实现的Parcelable方法,因为Android Studio不会更新已经存在的Parcelable方法。
我遇到了与您所写的相同的错误,并且在CustomObject上正确地重新实现了Parcelable之后(自从我上次实现Parcelable以来,我对其进行了几次更改),一切正常。