私のクラスを使用して、パーセル可能なオブジェクトを作成する必要がある別のアクティビティにオブジェクトを渡すことができますが、Bean クラスがここでパーセルを実装していることを確認してください。
/**
* A method to create pacelable{@link Parcelable} object
* @param album
* @return
*/
public ParcelHashMap parseObject(CategoryBean mCategoryBean){
ParcelHashMap p = new ParcelHashMap();
p.put("CategoryBean", mCategoryBean);
return p;
}
Activity1 から意図的に渡す
Intent in=new Intent(Activity1.this,Activity2.class);
in.putExtra("myCatObject", parseObject(selectedCategoryObject));
startActivity(in);
そして secondActivity では、その parcelabel オブジェクトを渡して、以下のような実際のオブジェクトを取得します
/**
* To get parsed object from Parcelable object, you can use int,string or any object
* @param parsedObje Parcelable
* @return PhotosBean Object
*/
public CategoryBean parseObject(Parcelable parsedObje){
return (CategoryBean)((ParcelHashMap)parsedObje).get("CategoryBean");
}
小包のクラス
パッケージcom.ixorian; java.util.HashMap をインポートします。
import android.os.Parcel;
import android.os.Parcelable;
public class ParcelHashMap implements Parcelable {
private HashMap<String,Object> map;
public ParcelHashMap() {
map = new HashMap<String,Object> ();
}
public ParcelHashMap(Parcel in) {
map = new HashMap<String,Object> ();
readFromParcel(in);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public ParcelHashMap createFromParcel(Parcel in) {
return new ParcelHashMap(in);
}
public ParcelHashMap[] newArray(int size) {
return new ParcelHashMap[size];
}
};
// @Override
public int describeContents() {
return 0;
}
// @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(map.size());
// for (String s: map.keySet().toArray(new String[0])) {
// dest.writeString(s);
// dest.writeString((String) map.get(s));
// }
for (HashMap.Entry<String, Object> entry : map.entrySet()) {
dest.writeString(entry.getKey());
dest.writeValue(entry.getValue());
}
}
public void readFromParcel(Parcel in) {
int count = in.readInt();
for (int i = 0; i < count; i++) {
map.put(in.readString(), in.readValue(ParcelHashMap.class.getClassLoader()));
}
}
public Object get(String key) {
return (Object) map.get(key);
}
public void put(String key, Object value) {
map.put(key, value);
}
}