0

I am getting the error android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR but it only happens occasionaly and randomly. I have no idea why sometime it cause the app to crash and other times it doesn't.

In my objects class my writeToParcel method is completely empty, I think that may have something to do with it.

@Override
public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub


}

The types of variables I pass through the parcelable object are boolean, string, int, string arraylist, boolean array, and an arraylist of another parcelable object I made.

Any ideas on what is causing the occasional crash?

Full Logcat below

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
Cam Connor
  • 1,231
  • 2
  • 25
  • 40

1 Answers1

0

Your missing a Parcelable.Creator. You must add a creator too inside your object

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);
    }
};
bean_droid
  • 117
  • 7
  • So do I have to retrieve every variable through this method? – Cam Connor Oct 01 '14 at 03:49
  • Most likely yes.. look at this other ex. http://wptrafficanalyzer.in/blog/android-parcelable-example-passing-data-between-activities/ – bean_droid Oct 01 '14 at 03:53
  • Damn that's annoying. Why is it only crashing sometimes then and not every time? – Cam Connor Oct 01 '14 at 03:54
  • It will generates instances of your Parcelable class from a Parcel. Crashing sometimes? what do you mean? Did you add the creator already in your object class? – bean_droid Oct 01 '14 at 03:56