2014-10-01 118 views
0

我收到錯誤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 
+0

我不認爲這是因爲您的功能是空的。你的類是否實現Parcelable? – 2014-10-01 03:36:16

回答

0

你缺少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); 
    } 
}; 
+0

那麼,我必須通過這種方法檢索每個變量嗎? – 2014-10-01 03:49:38

+0

最有可能的是..看看這個其他前。 http://wptrafficanalyzer.in/blog/android-parcelable-example-passing-data-between-activities/ – 2014-10-01 03:53:11

+0

該死的很討厭。爲什麼它只是有時崩潰而不是每次都崩潰? – 2014-10-01 03:54:27