2012-06-25 82 views
5

这是代码不能一个ArrayList <Parcelable>传递给活动

ArrayList<MyObject> list = new ArrayList<MyObject>(); 
list.add(new MyObject()); 
Intent intent = new Intent(this, ReceiverActivity.class); 
intent.putExtra("list", list); 
startActivity(intent); 

ReceiverActivity

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getParcelable("list"); 

下面列表为空。此外,这是行不通的:

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getSerializable("list"); 

MyObject是Parcelable,我实现了所有必需的方法。我想这个实现不是问题,否则我会收回其他类型的异常。但除了列表之外我什么也没有得到任何东西。

在此先感谢...

现在我发现这一点:

List<Parcelable> list = (List<Parcelable>)getIntent().getParcelableArrayListExtra("list"); 

已在接收活动中使用,但我怎么把它和我如何获得List<MyObject>List<Parcelable>

回答

15

USe i.putParcelableArrayListExtra(name, value)其中我是你的意图。不要使用putExtra()作为parcelable ArrayList。

+0

方法getParcelableArrayListExtra给我的ArrayList 我怎么ArrayList的?看起来像我必须投入元素,或实例化一个新的副本与类型ArrayList ? – Ixx

+0

你的对象必须实现Parcelable。所以他们应该做得很好 – Akhil

+0

因为他们在一个List中,所以他们不可能施放它们,而且泛型不是协变的。 – Ixx

6

尝试:

ArrayList<MyObject> myList = extras.<MyObject>getParcelableArrayList("list")); 
+0

正如一个侧面说明。对于intent本身,它是intent.getParcelableArrayListExtra(“name”) –

相关问题