4

アクティビティから別のアクティビティに 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);

2番目のものでは、代わりに:

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

アプリを実行しようとすると、DVM はそのコードが原因で ClassCastException をスローします (コードには絶対に存在しない ArrayList について話します! OO)

間違いは何ですか?

4

3 に答える 3

2

アクセスしているインテントが作成したものであると確信していますか? たとえば、次の出力を使用して、インテントのデバッグを試みます。

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

またはオブジェクト自体:

getIntent().getSerializableExtra("codaRedditi")

あなたは何を受け取りますか?

またLinkedList、キャストを行う場所を正しく使用していますか? インポートを調べてください、それは述べていますか:java.util.LinkedList

于 2012-10-07T14:41:08.470 に答える
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」のようなパッケージプレフィックスが必要です。たぶんこれが問題の原因です。

于 2012-10-07T15:03:25.677 に答える
0

intentのインスタンスでよろしいですかLinkedList?

しようとしている:

codaRedditi=new LinkedList((List)(getIntent().getSerializableExtra("codaRedditi")));
于 2012-10-07T14:32:41.130 に答える