Android-Parcelable类中的上下文
在实现Parcelable的类中,我有以下内容:Android-Parcelable类中的上下文,android,parcelable,Android,Parcelable,在实现Parcelable的类中,我有以下内容: private static final long serialVersionUID = 66; private HashMap<Integer, Bitmap> mBitmaps; private HashMap<Integer, Drawable> mDrawables; private Context mContext; 我得到一个错误: java.lang.RuntimeException: Parcel: un
private static final long serialVersionUID = 66;
private HashMap<Integer, Bitmap> mBitmaps;
private HashMap<Integer, Drawable> mDrawables;
private Context mContext;
我得到一个错误:
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.
你在给包裹写信 你有没有要求帕可拉这样做 您需要实现Serializable或Parcelable接口。否则,该值将不会如错误所示被删除 而且 实现Parcelable接口的类还必须具有静态 名为CREATOR的字段,它是实现 Parcelable.Creator界面
检查一下。您正在给包裹写信 你有没有要求帕可拉这样做 您需要实现Serializable或Parcelable接口。否则,该值将不会如错误所示被删除 而且 实现Parcelable接口的类还必须具有静态 名为CREATOR的字段,它是实现 Parcelable.Creator界面
检查。只需编写一个保存上下文对象的小类,如下所示:
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;
}
}
然后,无论何时需要上下文,只要从任何需要的地方调用ContextHolder.getContext()函数即可
干杯只需编写一个包含上下文对象的小类,如下所示:
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;
}
}
然后,无论何时需要上下文,只要从任何需要的地方调用ContextHolder.getContext()函数即可
干杯如回答中所述:
您正在尝试向地块中添加不可序列化的对象。要序列化的对象中的对象也必须是可序列化的。如本答案所述:
您正在尝试向地块中添加不可序列化的对象。要序列化的对象中的对象也必须是可序列化的。最大的问题是,为什么需要将上下文写入包???小问题的答案是上下文不可打包,所以您不能。请尝试在我的代码中阅读:BitmapFactory.decodeResource(mContext.getResources(),resource));我可以更改它吗?这样我就不必使用上下文来访问getResources()?最大的问题是为什么需要将上下文写入到包中???小问题的答案是上下文不可打包,所以您不能。请尝试在我的代码中阅读:BitmapFactory.decodeResource(mContext.getResources(),resource));我可以更改它吗?这样我就不必使用上下文来访问getResources()?Yes是在我试图传递的对象的类上实现了Parcelable。Yes是在我试图传递的对象的类上实现了Parcelable。在静态变量中添加上下文是内存泄漏。在静态变量中添加上下文是内存泄漏。