0

これが私がしていることです。

「e」は次のように定義されます。

Option e[];

Option は Serializable を実装するクラスです

Intent intent =new Intent(this,list_create.class); 
intent.putExtra("element", e);
startActivity(intent); 

2番目のアクティビティでは、このように取得しています

Intent i = getIntent();
Option e = (Option)i.getSerializableExtra("element");

しかし、「startActivity(intent)」で java.io.notSerializableException を与えています。ここで何が間違っていますか??

4

5 に答える 5

1

ArrayListのコンテナとして使用しOptionます。ArraylistはSerializableです。ListインターフェースはではありませんSerializable

また、がであってもOptionSerializableの属性もであるOption必要がSerializableあります。属性を転送しない場合は、transientキーワードでフラグを立てる必要があります。

于 2012-08-02T07:11:18.873 に答える
1

確認はしていませんが、これが役立つかもしれませんが、

intent.putParcelableArrayListExtra("elements", e);

2番目のアクティビティから取得、

Intent i = getIntent();
Option e = (Option)i.getParcelableArrayListExtra("element");
于 2012-08-02T05:19:57.180 に答える
0

OptionOptionはシリアル化可能ですが、シリアル化の概念に反するタイプの配列を送信しています。

代わりに、Option送信する必要のあるすべてのオプションを含む配列をクラスに含める必要があります。次に、タイプのその1つの要素だけを配置しますOption

于 2012-08-02T07:06:25.340 に答える
0

あなたはあなたが望むものは何でも渡すことができます。

新しいクラスを作成し、必要なものを投入して、Serializableを実装します。

public class myClass  implements Serializable{
// Whatever fields
}
于 2012-08-02T07:24:51.800 に答える
0

配列オブジェクトをバイトとして送信する必要があると思います。その後、バイトから再構築します。

このリンクを確認してください

Javaのシリアル化可能なオブジェクトからバイト配列

于 2012-08-02T05:24:04.180 に答える