2012-10-07 17 views
4

我想从一个活动发送一个LinkedList到另一个。 在第一个活动,我有:从Serializable向下链接到LinkedList <Class>

LinkedList<Class> codaActivity; 
/* Lots of code here... */ 
Intent intent = new Intent(this, codaActivity.remove()); 
intent.putExtra("codaRedditi", codaActivity); // this is putExtra(String, Serializable) 
startActivity(intent); 

在第二个,而不是:

// The following throws a ClassCastException 
codaRedditi=(LinkedList<Class>) (getIntent().getSerializableExtra("codaRedditi")); 

当我尝试运行我的应用程序中,DVM抛出造成的代码一个ClassCastException(和谈论一个ArrayList,绝对不存在于代码中!OO)

可能是什么错误?

+0

所以,你说'codeActivity'的类型是'LinkedList '?请将'codeActivity'的声明添加到您的问题中。 –

+0

对不起,现在我要编辑我的问题;) – user1726800

回答

0

您确定intentLinkedList的实例吗?

尝试:

codaRedditi=new LinkedList((List)(getIntent().getSerializableExtra("codaRedditi"))); 
+0

不,Intent不是LinkedList,但Intent.getSerializedExtra()返回一个Serializable,LinkedList是。 我试过了你的代码,但是Eclipse提醒我LinkedList没有带List参数的构造函数... – user1726800

+0

@ user1726800但是[[]](http://docs.oracle.com/javase/6/docs /api/java/util/LinkedList.html#LinkedList(java.util.Collection)!您是否确定您在演绎中分别使用java.util.LinkedList'作为参数? –

+0

http://developer.android .com/reference/java/util/LinkedList.html#LinkedList%28 是的,在这里,我只能看到一个emty构造函数和另一个需要一个Collection的列表,不是List ..! – user1726800

2

你确定你正在访问的目的是您所创建的一个?尝试用输出到调试的意图,例如:

getIntent().getSerializableExtra("codaRedditi").getClass()

或对象本身:

getIntent().getSerializableExtra("codaRedditi")

你怎么收?

你是否确定你正在使用正确的LinkedList你在哪里演员?考虑进口,做它的状态:java.util.LinkedList

+0

谢谢,我会试试这个晚上,我会让你知道;) – user1726800

0

从文档:

public Intent putExtra (String name, Serializable value) 

Since: API Level 1 
Add extended data to the intent. The name must include a package prefix, for example the app com.android.contacts would use names like "com.android.contacts.ShowAll". 

Parameters 
name The name of the extra data, with package prefix. 
value The Serializable data value. 

它说,在“名称”字段”应该有包前缀,如“com.blah.something”。也许这是造成这个问题的原因。

+0

我试着编辑这两个字符串,但没有什么不同:S – user1726800