【问题标题】:Downcasting from Serializable to LinkedList<Class> [duplicate]从 Serializable 向下转换为 LinkedList<Class> [重复]
【发布时间】:2012-09-27 23:45:16
【问题描述】:

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

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)

可能是什么错误?

【问题讨论】:

  • 所以你说codeActivity的类型是LinkedList&lt;Class&gt;?请在您的问题中添加codeActivity 的声明。
  • 对不起,是的……现在我要编辑我的问题;)

标签: java android linked-list classcastexception serializable


【解决方案1】:

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

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

或对象本身:

getIntent().getSerializableExtra("codaRedditi")

你收到了什么?

您还确定您使用正确的LinkedList 进行演员阵容吗?查看导入,是否声明:java.util.LinkedList

【讨论】:

  • 谢谢,今晚我会试试的,我会告诉你的 ;)
【解决方案2】:

你确定intentLinkedList 的实例吗?

尝试:

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

【讨论】:

  • 不,Intent 不是 LinkedList,但是 Intent.getSerializedExtra() 返回一个 Serializable,LinkedList 是。我试过你的代码,但 Eclipse 提醒我 LinkedList 没有带有 List 参数的构造函数...
  • @user1726800 但它[确实](docs.oracle.com/javase/6/docs/api/java/util/…!你确定你在声明中分别使用java.util.LinkedList作为演员表吗?
  • developer.android.com/reference/java/util/… 是的,我是。在这里,我只能看到一个 emty 构造函数和另一个,它需要一个 Collection,而不是 List..!
【解决方案3】:

来自文档:

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”这样的包前缀。也许这是导致问题的原因。

【讨论】:

  • 我尝试编辑这两个字符串,但没有什么不同:S
猜你喜欢
  • 2017-08-14
  • 2015-02-04
  • 1970-01-01
  • 2017-10-31
  • 2013-05-03
  • 2015-10-07
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多