2010-06-28 45 views
5

Có thể bỏ qua putSerializable không?Sử dụng putSerializable trong Android

Khi tôi vượt qua null với putSerializable lớp FillSummary.class bắt đầu như nó cần. Nếu tôi tuy nhiên vượt qua đối tượng TestSerial hơn là lực lượng Android đóng.

Tôi phải làm gì để chuyển đối tượng tùy chỉnh qua Gói?

public class TestSerial implements Serializable{ 
    private static final long serialVersionUID = 2310640779687082782L; 
    public int i; 
    public TestSerial(){ 
     i=1; 
    } 
} 

private void renderSummary(){ 

    Intent intent = new Intent(FillForm.this, FillSummary.class); 
    Bundle extras = new Bundle(); 

    extras.putSerializable("test serial", new TestSerial()); 
    intent.putExtras(extras); 

    startActivityForResult(intent, Forms.DISPLAY_SUMMARY); 
} 

Lỗi:

06-28 13:56:02.436: ERROR/AndroidRuntime(1136): Uncaught handler: thread main exiting due to uncaught exception 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { action=Return user choice (has extras) }} to activity {com.Questionaire/com.Questionaire.FillForm}: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.Questionaire.FillForm$TestSerial) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3005) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3047) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread.access$2300(ActivityThread.java:112) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1721) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Looper.loop(Looper.java:123) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread.main(ActivityThread.java:3948) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at dalvik.system.NativeStart.main(Native Method) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136): Caused by: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.Questionaire.FillForm$TestSerial) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Parcel.writeSerializable(Parcel.java:1147) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Parcel.writeValue(Parcel.java:1101) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Parcel.writeMapInternal(Parcel.java:469) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Parcel.writeBundle(Parcel.java:491) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.content.Intent.writeToParcel(Intent.java:4471) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1036) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1449) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.Activity.startActivityForResult(Activity.java:2656) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at com.Questionaire.FillForm.renderSummary(FillForm.java:206) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at com.Questionaire.FillForm.renderNext(FillForm.java:178) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at com.Questionaire.FillForm.onActivityResult(FillForm.java:86) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.Activity.dispatchActivityResult(Activity.java:3595) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3001) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  ... 11 more 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136): Caused by: java.io.NotSerializableException: com.Questionaire.FillForm 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1753) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:2073) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1900) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1863) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1354) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:421) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1456) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1789) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:2073) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1900) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1863) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  at android.os.Parcel.writeSerializable(Parcel.java:1142) 
06-28 13:56:02.784: ERROR/AndroidRuntime(1136):  ... 23 more 
+0

Bạn có thể đăng nhật ký lỗi không? –

Trả lời

11

TestSerial nên thể là tĩnh hoặc tuyên bố trong một tệp riêng để nó sẽ không được kéo các loại phi serializable kèm theo.

+3

Bạn có thể giải thích "được khai báo trong một tệp riêng biệt không?" –

Các vấn đề liên quan