Serializableエラーメッセージlang.RuntimeException: Parce


コードではParcelを使用して2つのActivityでデータ転送を行い、ParcelはParcelableインタフェースを実装する必要があります.Parcelクラスで他のbeanデータを読み書きする必要がある場合、これらのbeanはSerializableシーケンス化インタフェースを実現する必要があります.さもないとjavaが現れます.lang.RuntimeException:Parcel:unable to marshal valueエラー!
    public static ProgramInformationFragment newInstance(List<ChannelItem> items) {
        ProgramInformationFragment fragment = new ProgramInformationFragment();
        Bundle args = new Bundle();
        // items Serializable bundle
        args.putSerializable(KEY_PROGRAM_ITEMS, (Serializable) items);
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mProgramItems = (ArrayList<ChannelItem>) getArguments().getSerializable(KEY_PROGRAM_ITEMS);
            Logger.i("lfj mProgramItems.size = " + mProgramItems.size());
        }
    }

Serializableが実装されていない場合はエラーが発生します.
04-10 12:12:01.616    7702-7702/**.**.android.debug E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Parcel: unable to marshal value jp.nhkworldtv.android.model.ChannelItem@41b981a0
            at android.os.Parcel.writeValue(Parcel.java:1137)
            at android.os.Parcel.writeList(Parcel.java:524)
            at android.os.Parcel.writeValue(Parcel.java:1097)
            at android.os.Parcel.writeMapInternal(Parcel.java:493)
            at android.os.Bundle.writeToParcel(Bundle.java:1612)
            at android.os.Parcel.writeBundle(Parcel.java:507)
            at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:136)
            at android.os.Parcel.writeTypedArray(Parcel.java:1004)
            at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:383)
            at android.os.Parcel.writeParcelable(Parcel.java:1156)
            at android.os.Parcel.writeValue(Parcel.java:1075)
            at android.os.Parcel.writeMapInternal(Parcel.java:493)
            at android.os.Bundle.writeToParcel(Bundle.java:1612)
            at android.os.Parcel.writeBundle(Parcel.java:507)
            at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2016)
            at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2880)
            at android.app.ActivityThread.access$900(ActivityThread.java:128)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1175)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4514)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
            at dalvik.system.NativeStart.main(Native Method)

変更方法は、呼び出されたクラスでSerializableを実装する必要があります.
public class ChannelItem implements Serializable{
    /**
     * シリアル。
     */
    private static final long serialVersionUID = 1L;
    private String mSeriesId;
    private String mAiringId;
    .
    .
    .

以下の記事を参照してください.
http://blog.csdn.net/huim_lin/article/details/16959865