我基本上是想在不同的州之间保存一个位图数组。
我的片段在SaveInstanceState上:
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArray(SELECTED_IMAGES_ARRAY_BUNDLE, galleryAdapter.getImageBitmaps());
}
在它的oncreateview中,我检索数组如下:
savedInstanceState.setClassLoader(Bitmap.class.getClassLoader());
Bitmap[] savedSelectedImages = (Bitmap[]) savedInstanceState.getParcelableArray(SELECTED_IMAGES_ARRAY_BUNDLE);
这是正常工作的,除了android操作系统进行内存管理时,如果进程是在后台运行的,它会终止进程,然后在我返回时尝试恢复它。
这是我得到的错误:
AndroidRuntime(4985): Caused by: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to android.graphics.Bitmap[]
我认为这与没有正确设置类加载器有关,但我尝试了所有的方法,但似乎无法使其工作
最佳答案
你可以这样做。其中p是你的包裹清单。最后将位图列表转换回数组。
List<Parcelable> pList = Arrays.asList(p);
ArrayList<Bitmap> bList = new ArrayList<Bitmap>();
for(Parcelable px : pList){
bList.add((Bitmap)px);
}