从Serializable转向LinkedList <class> </class>

时间:2012-10-07 14:21:13

标签: java android linked-list classcastexception serializable

我正在尝试将Activity中的LinkedList发送给另一个。 在我的第一个活动中:

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,代码中绝对不存在!O.O)

可能是什么错误?

3 个答案:

答案 0 :(得分:2)

您确定要访问的意图是您创建的意图吗?尝试调试意图,例如输出:

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

或对象本身:

getIntent().getSerializableExtra("codaRedditi")

你收到了什么?

您还确定使用正确LinkedList进行演员表演吗?查看导入,它是否说明:java.util.LinkedList

答案 1 :(得分:0)

您确定intentLinkedList的实例吗?

尝试:

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

答案 2 :(得分: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”的包前缀。也许这会导致问题。