07-14 00:42:37.414: E/AndroidRuntime(17687): FATAL EXCEPTION: main
07-14 00:42:37.414: E/AndroidRuntime(17687): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called  CREATOR on class com.txrj.sms.model.TxrjContact
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Looper.loop(Looper.java:137)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at dalvik.system.NativeStart.main(Native Method)
07-14 00:42:37.414: E/AndroidRuntime(17687): Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called  CREATOR on class com.txrj.sms.model.TxrjContact
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readParcelable(Parcel.java:1975)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readValue(Parcel.java:1854)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 00:42:37.414: E/AndroidRuntime(17687):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 00:42:37.414: E/AndroidRuntime(17687):     ... 11 more

参考示例

public class Person implements Parcelable

http://blog.csdn.net/knxw0001/article/details/9283867

在传递对象列表时,必须将对象实现Parcelable接口,但又必须创建CREATOR类

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

@Override
    public TxrjContact createFromParcel(Parcel source) {
        TxrjContact contact = new TxrjContact();
        contact.contactId = source.readInt();
        contact.name = source.readString();
        //contact.selected = source.readInt();
        contact.hasNumber = source.readInt();
        contact.time = source.readLong();
        // contact.bSim
        // contact.phoneList = source.readArrayList()
        contact.sortKey = source.readString();
        contact.photoId = source.readLong();
        return contact;
    }

@Override
    public TxrjContact[] newArray(int size) {
        return new TxrjContact[size];
    }
};

在创建CREATOR类时,布尔值怎么读?List值怎么读?

以上代码执行果然还出现别的错误

07-14 00:55:43.301: E/AndroidRuntime(18040): FATAL EXCEPTION: main
07-14 00:55:43.301: E/AndroidRuntime(18040): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@41274138: Unmarshalling unknown type code 3145783 at offset 164
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Looper.loop(Looper.java:137)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at dalvik.system.NativeStart.main(Native Method)
07-14 00:55:43.301: E/AndroidRuntime(18040): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41274138: Unmarshalling unknown type code 3145783 at offset 164
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Parcel.readValue(Parcel.java:1921)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 00:55:43.301: E/AndroidRuntime(18040):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 00:55:43.301: E/AndroidRuntime(18040):     ... 11 more

参考:

1. Android之进程间传递自定义类型参数

http://www.linuxidc.com/Linux/2011-08/41323.htm

2. Android进程间传递自定义类型参数实现Parcelable接口

http://www.2cto.com/kf/201303/193947.html

系统提供的Parcelable示例

A typical implementation of Parcelable is:

 public class MyParcelable implements Parcelable {
private int mData; public int describeContents() {
return 0;
} public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
} public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
} public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
}; private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
 

07-14 06:54:58.766: E/AndroidRuntime(21250): FATAL EXCEPTION: main
07-14 06:54:58.766: E/AndroidRuntime(21250): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: java.lang.RuntimeException: bad array lengths
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Looper.loop(Looper.java:137)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at dalvik.system.NativeStart.main(Native Method)
07-14 06:54:58.766: E/AndroidRuntime(21250): Caused by: java.lang.RuntimeException: bad array lengths
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readBooleanArray(Parcel.java:619)
07-14 06:54:58.766: E/AndroidRuntime(21250):    at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:38)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:1)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readParcelable(Parcel.java:1992)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readValue(Parcel.java:1854)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 06:54:58.766: E/AndroidRuntime(21250):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 06:54:58.766: E/AndroidRuntime(21250):     ... 11 more

问题原因:

boolean[] ba = new boolean[1];

source.readBooleanArray(ba);

改成

contact.selected = (source.readByte() == 1 ? true : false);

 

07-14 07:00:20.019: E/AndroidRuntime(21603): FATAL EXCEPTION: main
07-14 07:00:20.019: E/AndroidRuntime(21603): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@41c85dc8: Unmarshalling unknown type code 3145783 at offset 164
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Looper.loop(Looper.java:137)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at dalvik.system.NativeStart.main(Native Method)
07-14 07:00:20.019: E/AndroidRuntime(21603): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41c85dc8: Unmarshalling unknown type code 3145783 at offset 164
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readValue(Parcel.java:1921)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:41)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:1)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readParcelable(Parcel.java:1992)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readValue(Parcel.java:1854)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 07:00:20.019: E/AndroidRuntime(21603):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 07:00:20.019: E/AndroidRuntime(21603):     ... 11 more

问题原因:

contact.phoneList = source.readArrayList(TxrjPhone.class.getClassLoader());

改成

TxrjPhone[] phones = (TxrjPhone[]) source
        .readParcelableArray(TxrjPhone.class.getClassLoader());
for (int i = 0; i < phones.length; i++) {
    contact.phoneList.add(phones[i]);
}

07-14 07:06:23.363: E/Parcel(21880): Class not found when unmarshalling: ����com.txrj.sms.model.TxrjContact����N��{ContactId, e: java.lang.ClassNotFoundException: ����com.txrj.sms.model.TxrjContact����N��{ContactId
07-14 07:06:23.363: D/AndroidRuntime(21880): Shutting down VM
07-14 07:06:23.363: W/dalvikvm(21880): threadid=1: thread exiting with uncaught exception (group=0x40c0ba68)
07-14 07:06:23.383: E/AndroidRuntime(21880): FATAL EXCEPTION: main
07-14 07:06:23.383: E/AndroidRuntime(21880): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ����com.txrj.sms.model.TxrjContact����N��{ContactId
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Looper.loop(Looper.java:137)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at dalvik.system.NativeStart.main(Native Method)
07-14 07:06:23.383: E/AndroidRuntime(21880): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ����com.txrj.sms.model.TxrjContact����N��{ContactId
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readParcelable(Parcel.java:1966)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readParcelableArray(Parcel.java:2008)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:42)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:1)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readParcelable(Parcel.java:1992)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readValue(Parcel.java:1854)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 07:06:23.383: E/AndroidRuntime(21880):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 07:06:23.383: E/AndroidRuntime(21880):     ... 11 more

问题语句:

dest.writeString(this.toString());

改成

dest.writeInt(contactId);
dest.writeString(name);
dest.writeByte(selected ? (byte)1 : (byte)0);
dest.writeInt(hasNumber);
dest.writeLong(time);
dest.writeByte(bSim ? (byte)1 : (byte)0);
dest.writeParcelableArray((Parcelable[])phoneList.toArray(), flags);
dest.writeString(sortKey);
dest.writeLong(photoId);

07-14 07:17:06.171: E/AndroidRuntime(22121): FATAL EXCEPTION: main
07-14 07:17:06.171: E/AndroidRuntime(22121): java.lang.ClassCastException: java.lang.Object[] cannot be cast to android.os.Parcelable[]
07-14 07:17:06.171: E/AndroidRuntime(22121):     at com.txrj.sms.model.TxrjContact.writeToParcel(TxrjContact.java:165)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeParcelable(Parcel.java:1156)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeValue(Parcel.java:1075)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeList(Parcel.java:524)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeValue(Parcel.java:1097)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeMapInternal(Parcel.java:493)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Bundle.writeToParcel(Bundle.java:1612)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Parcel.writeBundle(Parcel.java:507)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.content.Intent.writeToParcel(Intent.java:6279)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.app.ActivityManagerProxy.finishActivity(ActivityManagerNative.java:1845)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.app.Activity.finish(Activity.java:3709)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at com.txrj.sms.activity.ContactListActivity.onClick(ContactListActivity.java:272)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.view.View.performClick(View.java:3567)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.view.View$PerformClick.run(View.java:14224)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Handler.handleCallback(Handler.java:605)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.os.Looper.loop(Looper.java:137)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 07:17:06.171: E/AndroidRuntime(22121):     at dalvik.system.NativeStart.main(Native Method)

问题语句:

dest.writeParcelableArray((Parcelable[])phoneList.toArray(), flags);

改成

Parcelable[] value = new Parcelable[phoneList.size()];
for(int i=0;i<value.length;i++){
    value[i] = phoneList.get(i);
}

07-14 07:22:45.932: E/AndroidRuntime(22442): FATAL EXCEPTION: main
07-14 07:22:45.932: E/AndroidRuntime(22442): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to com.txrj.sms.model.TxrjPhone[]
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2997)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3040)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread.access$1100(ActivityThread.java:128)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1191)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Looper.loop(Looper.java:137)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at java.lang.reflect.Method.invoke(Method.java:511)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at dalvik.system.NativeStart.main(Native Method)
07-14 07:22:45.932: E/AndroidRuntime(22442): Caused by: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to com.txrj.sms.model.TxrjPhone[]
07-14 07:22:45.932: E/AndroidRuntime(22442):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:41)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at com.txrj.sms.model.TxrjContact$1.createFromParcel(TxrjContact.java:1)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readParcelable(Parcel.java:1992)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readValue(Parcel.java:1854)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readListInternal(Parcel.java:2103)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readArrayList(Parcel.java:1544)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readValue(Parcel.java:1875)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Parcel.readMapInternal(Parcel.java:2094)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Bundle.unparcel(Bundle.java:223)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.os.Bundle.getParcelableArrayList(Bundle.java:1202)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.content.Intent.getParcelableArrayListExtra(Intent.java:4147)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at com.txrj.sms.activity.CreateMessageActivity.onActivityResult(CreateMessageActivity.java:276)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
07-14 07:22:45.932: E/AndroidRuntime(22442):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2993)
07-14 07:22:45.932: E/AndroidRuntime(22442):     ... 11 more

问题语句:

TxrjPhone[] phones = (TxrjPhone[]) source
        .readParcelableArray(TxrjPhone.class.getClassLoader());

for (int i = 0; i < phones.length; i++) {
    contact.phoneList.add(phones[i]);
}

改成

Parcelable[] phones = source
        .readParcelableArray(TxrjPhone.class.getClassLoader());
for (int i = 0; i < phones.length; i++) {
    contact.phoneList.add((TxrjPhone)phones[i]);
}

OK!!!

Parcelable类型的数据传递成功!

通过Parcelable协议传递数据出现系列错误的更多相关文章

  1. 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用

    [源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...

  2. MVC学习系列3--怎么从控制器向视图传递数据

    在MVC中,从控制器到视图,传递数据,可以使用 ViewData 和 ViewBag:同样从视图到控制器,传递数据,可以使用Post,QueryString,或者隐藏域:最后从控制器到控制器,传递数据 ...

  3. Controller之间传递数据:协议传值

    http://itjoy.org/?p=416 前边介绍过从第一个页面传递数据到第二个页面,那么反过来呢我们该如何操作?还是同一个例子,将第二个页面的字符串传递到第一个页面显示出来,这中形式就可以使用 ...

  4. Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口

    package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...

  5. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  6. JavaScript onclick传递对象参数(easyui传递一行数据时)错误:uncaught SyntaxError: Unexpected identifier

    JavaScript onclick传递对象参数(easyui传递一行数据时)错误:uncaught SyntaxError: Unexpected identifier 博主遇到的是用onclick ...

  7. 【iOS系列】-UINavigationController的使用(Segue传递数据)

    [iOS系列]-UINavigationController的使用 UINavigationController是以以栈(先进后出)的形式保存子控制器, 常用属性: UINavigationItem有 ...

  8. LabVIEW系列——错误簇的传递

    从以下示例可以得出结论: 1.图一出现的三种错误,分别位于打开/创建/替换文件函数,写入文本文件函数,读取文件文件函数.说明三个函数都被运行了. 2.图二只出现了一种错误,位于打开/创建/替换文件函数 ...

  9. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

随机推荐

  1. google的transformer模型的解释

    参考这篇文章: https://blog.csdn.net/mijiaoxiaosan/article/details/73251443 看了下: 最核心的如下:其最重要的创新应该就是Self-Att ...

  2. Ubuntu升级到18.04

    1.更新 sudo apt-get update 2.升级 sudo apt-get upgrade 3.检测最新版本 sudo update-manager -c -d 然后就会弹出窗口,提示ubu ...

  3. Graph 卷积神经网络:概述、样例及最新进展

    http://www.52ml.net/20031.html [新智元导读]Graph Convolutional Network(GCN)是直接作用于图的卷积神经网络,GCN 允许对结构化数据进行端 ...

  4. AI-终极算法-神经网络(连结学派)

  5. IDEA初使用:解决搜狗输入法不跟随BUG

    IDEA初使用:解决搜狗输入法不跟随BUG https://blog.csdn.net/qq_27905183/article/details/79119237 嗯,学习了: 然而,效果不明显:

  6. Is there anyway to discover which ip addresses are connected to the db?

    From mongo shell run db.currentOp() to show all active connections or db.currentOp(true) to show all ...

  7. sql存储过程加密和解密(MSSQL)

    在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的.后来自己根据实际的应用环境,编写了两个存储过 ...

  8. ScrollView嵌套ListView,ListView完全展开及makeMeasureSpec测量机制原理分析

    在实际应用中,经常会碰到非常规的布局要求,比如说在ScrollView里嵌套ListView,ScrollView和ListView都是可以滚动的控件,这样布局看似很奇怪,但是有些效果又不得不这样做. ...

  9. Linux网络编程:基于UDP的程序开发回顾篇

    基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下:   对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了 ...

  10. 【转】java 线程的几种状态

    java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...