Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【Android】Intentでクラスを渡す

こんばんは。

今回はIntentでクラスを渡す方法をメモします。
これを使うと、オブジェクトの受け渡しが可能となります。

ただし、クラス内のフィールドはプリミティブ型(intやboolean)か、もしくはシリアライズ可能なクラスでないといけません。
なので、多次元配列の受け渡しとかは出来ないです。やると落ちます。

今回は、人の情報(年齢、性別など)を格納したクラスのオブジェクトの受け渡しをやりたいと思います。

受け渡すクラスの作成

まずは対象となるクラスの作成を行います。
ポイントとしては、implements Serializable を記述するだけです。

public class TestData implements Serializable {
	// シリアライズバージョンID
	private static final long serialVersionUID = 212993500286484661L;
	// 各データ
	String name = "";
	Integer old = 0;
	Integer sex = 0;
	
	/**
	 * コンストラクタでデータを保存
	 */
	public TestData(String name, Integer old, Integer sex){
		this.name = name;
		this.old = old;
		this.sex = sex;
	}

	/**
	 * ゲッター
	 * @return 保存されているデータ
	 */
	public getName() {
		return name;
	}
	public getold() {
		return old;
	}
	public getSex() {
		return sex;
	}
	
	/**
	 * セッター
	 */
	public void setName(String name) {
		this.name = name;
	}
}

セッターはめんどくさいので省略しました笑

さて、作成が終わったら実際に受け渡しをします。

オブジェクトの受け渡し

まずは受け渡すほうの処理です。

TestData testData = new TestData(name, old, sex);
Intent intent = new Intent(this, SubActivity.class);
intent.putExtra("testData", testData);
startActivity(intent);


次に受け取る側の処理です。

TestData testData = (TestData)getIntent().getSerializableExtra("testData");
String name = testData.getName();


以上です。
簡単に出来ますね。

それでは。


参考にさせていただいたサイト

Intentでオブジェクトを渡す « Tech Booster