나는 Parcelable
인터페이스를 구현하는 클래스를 가지고있다. HashMap
을 포함하는이 HashMap
에는 비트 맵 이미지가 포함되어 있습니다. 모든 활동에 대해이 번호가 필요합니다. HashMap
. 그래서 Parcelable
을 사용했습니다. 내 Parcelable
코드를 확인하십시오.안드로이드에서 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 C
에 예를 Activity B
하십시오.) 다른 활동에이를 전달하면 HashMap
이 더 포함되어 있음을 의미한다이 의지 집단. 그 크기는 내가 Activity C
에서 같은 일을하고있어
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_B
에서 Activity_A에서 0,
Intent setIntent = new Intent(activity_a, Activity_B.class);
ParcelFullData parcelData = new ParcelFullData();
Bundle b = new Bundle();
b.putParcelable("parcelData", parcelData);
startActivity(setIntent);
입니다.
사용 방법이 문제를 해결하려면 어떻게해야합니까?
어떻게 당신이받을 수 있습니까 더욱이 parcelable 개체를 전달? 여기에 코드를 제공 할 수 있습니까? – Yury
@ Yury, 내 업데이트를보세요. – bharath
체크 아웃 [이 하나] (http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/) –