我在实现Parcelable的类中有以下内容:
private static final long serialVersionUID = 66;
private HashMap<Integer, Bitmap> mBitmaps;
private HashMap<Integer, Drawable> mDrawables;
private Context mContext;
和
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeValue(mBitmaps);
dest.writeValue(mDrawables);
dest.writeValue(mContext);
dest.writeByte((byte) (mActive ? 0x01 : 0x00));
}
我收到错误:
java.lang.RuntimeException: Parcel: unable to marshal value android.app.Application@4051cfe0
at android.os.Parcel.writeValue(Parcel.java:1132)
at com.example.example.ImageManager.writeToParcel(ImageManager.java:82)
dest.writeValue(mContext); is on line 82.
答案 0 :(得分:0)
如本回答所述:https://stackoverflow.com/a/6112919/7721253
您正在尝试添加到不可序列化的宗地对象。您要序列化的对象中的对象也必须是可序列化的。
答案 1 :(得分:-1)
您正在写信给Parcel。
您是否实施了Parcelable?
您需要实现Serializable或Parcelable接口。否则,该值不会像错误所示那样被编组。
另外,
实现Parcelable接口的类也必须具有静态 字段名为CREATOR,它是一个实现的对象 Parcelable.Creator界面。
答案 2 :(得分:-1)
只需编写一个包含Context-Object的小类,如下所示:
import android.content.Context;
public class ContextHolder {
public static Context context = null;
public static void setContext(Context context){
ContextHolder.context = context;
}
public static Context getContext(){
return context;
}
}
然后,只要您需要Context,就可以从您需要的任何地方调用ContextHolder.getContext()函数。
干杯