Parcelableのドキュメントを読みましたが、プリミティブ データ型の読み取り関数と書き込み関数しか見つかりませんでした。
Object データ型のデータをどのように読み書きしますか?
私が言及している「オブジェクト」はjava.lang.Object
私はAndroidにかなり慣れていないので、すべての助けに感謝します。
Parcelableのドキュメントを読みましたが、プリミティブ データ型の読み取り関数と書き込み関数しか見つかりませんでした。
Object データ型のデータをどのように読み書きしますか?
私が言及している「オブジェクト」はjava.lang.Object
私はAndroidにかなり慣れていないので、すべての助けに感謝します。
Object データ型のデータをどのように読み書きしますか?
したがって、Activity を介してデータを渡すには Parcelable インターフェイスが公式に推奨されていますが、同じソリューションを提供する Serializable インターフェイスもあります。
多くの人が私に反対するかもしれませんが、Serializable インターフェースを使用することをお勧めします。これにより、Activity を介してオブジェクト (およびカスタム オブジェクト) を非常に簡単な方法でシリアル化できるようになりました。
必要なのは、 Serializable インターフェイスを使用することだけです:
public class MyObjectsWrapper implements Serializable {
private Object obj1;
private Object obj2;
private MyCustomObject customObject;
// getters and setters
}
そして使用法:
// inserting data to Intent
Intent i = new Intent(context, Target.class);
i.putExtra("key", myObj);
// retrieving
MyObject obj = getIntent().getSerializableExtra("key");
Serializable インターフェイスをお勧めする理由は、実装と理解がはるかに簡単だからです。パーセル化可能なインターフェイスには、さらに多くのコードを記述する必要があり (私にとっては面倒です)、多くのオブジェクトがある場合、それを実装するのに時間がかかり、時は金なりです:)
public class Teacher implements Parcelable {
String name;
int age;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeInt(this.age);
}
public Teacher() {
}
protected Teacher(Parcel in) {
this.name = in.readString();
this.age = in.readInt();
}
public static final Creator<Teacher> CREATOR = new Creator<Teacher>() {
@Override
public Teacher createFromParcel(Parcel source) {
return new Teacher(source);
}
@Override
public Teacher[] newArray(int size) {
return new Teacher[size];
}
};
}