梦书之家(移动开发)

你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。 ——肖伯纳

导航

使用Parcelable出现的几个问题

1.Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling : com.MyClass

原因:这个类我是通过将其放入Bundle中传递的,所以在从Bundle中取的时候需要先设置ClassLoader:

mBundle.setClassLoader(MyClass.class.getClassLoader());
myClass = mBundle.getParcelable( "MY_CLASS" );

2.Caused by: java.lang.NullPointerException: expected receiver of type com.yourpackagename.MyClass, but got null

W/System.err(3558): at java.lang.reflect.Field.getField(Native Method)
W/System.err(3558): at java.lang.reflect.Field.get(Field.java:269)
W/System.err(3558): at android.os.Parcel.readParcelable(Parcel.java:1955)
W/System.err(3558): at android.os.Parcel.readParcelableArray(Parcel.java:2008)

原因:是因为在 class :MyClass中的CREATOR成员变量 没有定义成静态的原因

public static final Parcelable.Creator<MyClass> CREATOR = new Parcelable.Creator<MyClass>() {

....

}

posted on 2012-08-01 10:34  梦书  阅读(4780)  评论(0编辑  收藏  举报