BadParcelable异常偶尔会导致应用程序崩溃
我收到错误android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR
,但它只发生偶尔和随机。我不知道为什么有时它会导致应用程序崩溃,而其他时间则不会。BadParcelable异常偶尔会导致应用程序崩溃
在我的对象类中,我的writeToParcel方法是完全空的,我认为这可能与它有关。
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
}
变量我穿过parcelable对象的类型是布尔值,字符串,整数,字符串数组列表,布尔数组,我提出另一个parcelable对象的ArrayList。
什么导致偶尔的崩溃任何想法?
完全logcat的下面
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.OptimusApps.stayhealthy/com.OptimusApps.stayhealthy.MainActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.OptimusApps.stayhealthy.DatabaseHelper.Workout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.OptimusApps.stayhealthy.DatabaseHelper.Workout
at android.os.Parcel.readParcelableCreator(Parcel.java:2165)
at android.os.Parcel.readParcelable(Parcel.java:2106)
at android.os.Parcel.readValue(Parcel.java:2022)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2323)
at android.os.Bundle.unparcel(Bundle.java:249)
at android.os.Bundle.getParcelable(Bundle.java:1206)
at com.OptimusApps.stayhealthy.WorkoutPreview.initializeVariables(WorkoutPreview.java:175)
at com.OptimusApps.stayhealthy.WorkoutPreview.onCreateView(WorkoutPreview.java:84)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566)
at com.OptimusApps.stayhealthy.MainActivity.onStart(MainActivity.java:295)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1239)
at android.app.Activity.performStart(Activity.java:5322)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2569)
... 11 more
你缺少Parcelable.Creator。您必须在对象中添加创建者
public static final Parcelable.Creator<YourObject> CREATOR = new Creator<YourObject>() {
@Override
public YourObject[] newArray(int size) {
// TODO Auto-generated method stub
return new YourObject[size];
}
@Override
public YourObject createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new YourObject(source);
}
};
那么,我必须通过这种方法检索每个变量吗? – 2014-10-01 03:49:38
最有可能的是..看看这个其他前。 http://wptrafficanalyzer.in/blog/android-parcelable-example-passing-data-between-activities/ – 2014-10-01 03:53:11
该死的很讨厌。为什么它只是有时崩溃而不是每次都崩溃? – 2014-10-01 03:54:27
我不认为这是因为您的功能是空的。你的类是否实现Parcelable? – 2014-10-01 03:36:16