我有一個實現Parcelable
接口的類。包含HashMap
,這HashMap
包含位圖圖像。我需要這個HashMap
爲我的所有活動。所以我用Parcelable
。看看我的Parcelable
代碼。如何重用Android中的Parcelable對象?
private HashMap<String, Bitmap> map;
public ParcelFullData() {
map = new HashMap();
}
public ParcelFullData(Parcel in) {
map = new HashMap();
readFromParcel(in);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public ParcelFullData createFromParcel(Parcel in) {
return new ParcelFullData(in);
}
public ParcelFullData[] newArray(int size) {
return new ParcelFullData[size];
}
};
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(map.size());
for (String s: map.keySet()) {
dest.writeString(s);
dest.writeValue(map.get(s));
}
}
public void readFromParcel(Parcel in) {
int count = in.readInt();
for (int i = 0; i < count; i++) {
map.put(in.readString(), (Bitmap)in.readValue(Bitmap.class.getClassLoader()));
}
}
public Bitmap get(String key) {
return map.get(key);
}
public String[] getKeys() {
Set<String> mapset = map.keySet();
String[] photoName = new String[mapset.size()];
Iterator<String> itr = mapset.iterator();
int index = 0;
while (itr.hasNext()) {
String name = itr.next();
photoName[index] = name;
index++;
}
return photoName;
}
public void put(String key, Bitmap value) {
map.put(key, value);
}
public HashMap<String, Bitmap> getHashMap() {
return map;
}
這將精細的工作時,我通過一個Activity
到另一個Activity
。(例如Activity A
到Activity B
)。但是如果我通過這次到另一個活動(例如Activity B
到Activity C
。)表示HashMap
不含元素。這大小爲0
在Activity_A,
Intent setIntent = new Intent(activity_a, Activity_B.class);
ParcelFullData parcelData = new ParcelFullData();
Bundle b = new Bundle();
b.putParcelable("parcelData", parcelData);
startActivity(setIntent);
在Activity_B
ParcelFullData parcelData = (ParcelFullData)bundle.getParcelable("parcelData");
Parcel parcel = Parcel.obtain();
parcel.writeParcelable(parcelData , 0);
parcelData.writeToParcel(parcel, 0);
Intent setIntent = new Intent(activity_a, Activity_B.class);
Bundle b = new Bundle();
b.putParcelable("parcelData", parcelData);
startActivity(setIntent);
我做同樣的Activity C
。
如何解決這個問題?
如何和你在哪裏獲得,並進一步通過這個parcelable對象?你能在這裏提供代碼嗎? – Yury 2012-01-03 09:57:29
@ Yury,看看我的更新。 – bharath 2012-01-03 10:06:42
查看[this one](http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/) – 2012-01-03 10:18:48