December 3, 2012

Intentにオブジェクトを付加して送信する

Intentを送るとき、さまざまな情報(intやStringなど)を付加することができますが、自分で作ったクラスのオブジェクトそのものを付加することもできます。

ただし、どんなクラスでも付加できるわけではなく、条件としてそのクラスがSerializableインターフェースを実装している必要があります。もちろんクラス内部のメンバー変数もすべてSerializableを実装したクラス、またはintなどのプリミティブである必要があります。

Serializableへの対応は特殊な使い方をしない限り、特に必須で実装するものはありません。通常は"implements Serializable"をクラスに追加し、serialVersionUIDを定義するだけです(eclipseで自動生成できます)。このUIDの値も気にする必要はありません。

例:クラスの定義
public class SampleClass implements Serializable {
    private static final long serialVersionUID = 1L;

例:intentを送る
public class SampleClass implements Serializable {
    SampleClass sample = new SampleClass();
    Intent intent = new Intent(getApplicationContext(), MyActivity.class);
    intent.putExtra("Foo", sample);
    startActivity(intent);

例:intentを受ける
    SampleClass sample = (SampleClass) getIntent().getSerializableExtra("Foo");

オブジェクトを送ることができると書きましたが、送り側と受け手側で同じ中身のオブジェクトが受け取れるという意味で、インスタンスは異なります。

参考:Android Developers:Serializable
参考:Android Developers:Intent

No comments:

Post a Comment