Android自定义异常类,使用自定义包裹类在Android应用中解组错误

对于我的

Android应用程序,我有几个解组错误,尽管我认为我已经完成了通过Parcelables正确保存和加载对象所需的一切.你能告诉我我的代码有什么问题吗?

错误1:

java.lang.RuntimeException: Unable to start activity ComponentInfo

Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41279860: Unmarshalling unknown type code 6619241 at offset 1372

at android.os.Parcel.readValue(Parcel.java:1922)

at android.os.Parcel.readMapInternal(Parcel.java:2094)

at android.os.Bundle.unparcel(Bundle.java:223)

at android.os.Bundle.getParcelable(Bundle.java:1158)

at android.app.Activity.onCreate(Activity.java:860)

at my.app.package.PlayComputer.onCreate(PlayComputer.java:1012)

at android.app.Activity.performCreate(Activity.java:4465)

MyActivity中的第1012行是调用super.onCreate(savedInstanceState);在Activity的onCreate()中.

protected void onSaveInstanceState(Bundle savedInstanceState) {

if (myObject == null) {

savedInstanceState.putParcelable("myObject", null);

}

else {

savedInstanceState.putParcelable("myObject", myObject);

}

savedInstanceState.putInt(...);

savedInstanceState.putString(...);

savedInstanceState.putBoolean(...);

super.onSaveInstanceState(savedInstanceState);

}

myObject是MyObject类,它具有以下方法:

public void writeToParcel(Parcel out, int flags) {

out.writeIntArray(...);

out.writeInt(...);

out.writeStringArray(...);

out.writeString(...);

out.writeParcelableArray(..., flags);

}

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

public MyObject createFromParcel(Parcel in) {

try {

if (in == null) {

return null;

}

else {

return new MyObject(in);

}

}

catch (Exception e) {

return null;

}

}

public MyObject[] newArray(int size) {

return new MyObject[size];

}

};

private MyObject(Parcel in) {

in.readIntArray(...);

... = in.readInt();

in.readStringArray(...);

... = in.readString();

... = (OtherObject[]) in.readParcelableArray(OtherObject.class.getClassLoader());

}

错误2:

java.lang.RuntimeException: Unable to start activity ComponentInfo

Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:

at android.os.Parcel.readParcelable(Parcel.java:1971)

at android.os.Parcel.readValue(Parcel.java:1859)

at android.os.Parcel.readMapInternal(Parcel.java:2099)

at android.os.Bundle.unparcel(Bundle.java:223)

at android.os.Bundle.getParcelable(Bundle.java:1158)

at android.app.Activity.onCreate(Activity.java:905)

at my.app.package.PlayComputer.onCreate(SourceFile:1012)

相同的文件和类.

错误3:

java.lang.RuntimeException: Unable to start activity ComponentInfo

Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@4051aff8: Unmarshalling unknown type code 7340149 at offset 1276

at android.os.Parcel.readValue(Parcel.java:1913)

at android.os.Parcel.readMapInternal(Parcel.java:2083)

at android.os.Bundle.unparcel(Bundle.java:208)

at android.os.Bundle.getParcelable(Bundle.java:1100)

at my.app.package.PlayComputer.onCreate(SourceFile:1111)

这一次,造成的线(1111)如下:

myObject = (MyObject) savedInstanceState.getParcelable("myObject");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值