2015-07-18 2 views
-1

J'essaie de passer un objet d'une activité à une autre, mon objet est une classe personnalisée de java et implémente déjà sérialisable. le principal problème, je ne peux pas trouver un moyen approprié pour y parvenir.Comment transférer un objet de l'activité à l'activité en utilisant Serializable?

toutes les réponses d'autres questions sur stackoverflow de type similaire, ne semble pas résoudre mon problème.

LogCat:

07-19 01:56:02.058: D/dalvikvm(4811): Late-enabling CheckJNI 
07-19 01:56:02.218: I/PGA(4811): Attempting to create new SOCKET connectionn pid = 4811, tid = 4811 
07-19 01:56:02.228: I/PGA(4811): New SOCKET connection: com.jutt.dotbot (pid 4811, tid 4811) 
07-19 01:56:05.728: D/dalvikvm(4811): JIT code cache reset in 0 ms (1222 bytes 2/0) 
07-19 01:56:05.728: D/dalvikvm(4811): GC_FOR_ALLOC freed 192K, 46% free 3775K/6968K, paused 0ms, total 0ms 
07-19 01:56:05.738: I/dalvikvm-heap(4811): Grow heap (frag case) to 6.630MB for 560912-byte allocation 
07-19 01:56:05.748: D/dalvikvm(4811): GC_FOR_ALLOC freed <1K, 43% free 4323K/7516K, paused 10ms, total 10ms 
07-19 01:56:09.848: D/dalvikvm(4811): GC_FOR_ALLOC freed 15K, 43% free 4351K/7516K, paused 10ms, total 10ms 
07-19 01:56:09.898: I/dalvikvm-heap(4811): Grow heap (frag case) to 16.785MB for 10618892-byte allocation 
07-19 01:56:09.908: D/dalvikvm(4811): GC_FOR_ALLOC freed 20K, 18% free 14700K/17888K, paused 10ms, total 10ms 
07-19 01:56:09.938: D/dalvikvm(4811): GC_FOR_ALLOC freed 14K, 16% free 15030K/17888K, paused 10ms, total 10ms 
07-19 01:56:10.008: I/dalvikvm-heap(4811): Grow heap (frag case) to 27.990MB for 11432316-byte allocation 
07-19 01:56:10.018: D/dalvikvm(4811): GC_FOR_ALLOC freed 1K, 10% free 26193K/29056K, paused 10ms, total 10ms 
07-19 01:56:10.038: D/dalvikvm(4811): GC_FOR_ALLOC freed 7K, 10% free 26191K/29056K, paused 0ms, total 0ms 
07-19 01:56:10.098: I/dalvikvm-heap(4811): Grow heap (frag case) to 38.775MB for 11312124-byte allocation 
07-19 01:56:10.118: D/dalvikvm(4811): GC_FOR_ALLOC freed <1K, 8% free 37238K/40104K, paused 20ms, total 20ms 
07-19 01:56:10.148: D/dalvikvm(4811): GC_FOR_ALLOC freed 3K, 8% free 37239K/40104K, paused 10ms, total 10ms 
07-19 01:56:10.198: I/dalvikvm-heap(4811): Grow heap (frag case) to 50.183MB for 11962004-byte allocation 
07-19 01:56:10.208: D/dalvikvm(4811): GC_FOR_ALLOC freed <1K, 6% free 48921K/51788K, paused 10ms, total 10ms 
07-19 01:56:10.238: D/dalvikvm(4811): GC_FOR_ALLOC freed 9K, 6% free 48922K/51788K, paused 10ms, total 10ms 
07-19 01:56:10.308: I/dalvikvm-heap(4811): Grow heap (frag case) to 60.312MB for 10618892-byte allocation 
07-19 01:56:10.318: D/dalvikvm(4811): GC_FOR_ALLOC freed <1K, 5% free 59292K/62160K, paused 10ms, total 10ms 
07-19 01:56:10.348: D/dalvikvm(4811): GC_FOR_ALLOC freed 17K, 5% free 59293K/62160K, paused 10ms, total 10ms 
07-19 01:56:10.418: I/dalvikvm-heap(4811): Grow heap (frag case) to 71.720MB for 11962004-byte allocation 
07-19 01:56:10.428: D/dalvikvm(4811): GC_FOR_ALLOC freed <1K, 4% free 70975K/73844K, paused 10ms, total 10ms 
07-19 01:56:13.688: E/InputEventSender(4811): Exception dispatching finished signal. 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): Exception in MessageQueue callback: handleReceiveCallback 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.jutt.dotbot.ScoreSaver) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Parcel.writeSerializable(Parcel.java:1316) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Parcel.writeValue(Parcel.java:1264) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Parcel.writeArrayMapInternal(Parcel.java:618) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Bundle.writeToParcel(Bundle.java:1692) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Parcel.writeBundle(Parcel.java:636) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.content.Intent.writeToParcel(Intent.java:7013) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1502) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.startActivityForResult(Activity.java:3424) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.startActivityForResult(Activity.java:3385) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.startActivity(Activity.java:3627) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.startActivity(Activity.java:3595) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at com.jutt.dotbot.PointsDrawerActivity.onBackPressed(PointsDrawerActivity.java:205) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.onKeyUp(Activity.java:2193) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.KeyEvent.dispatch(KeyEvent.java:2664) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.Activity.dispatchKeyEvent(Activity.java:2423) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3718) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2023) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1705) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1696) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2000) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.MessageQueue.nativePollOnce(Native Method) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.MessageQueue.next(MessageQueue.java:138) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.os.Looper.loop(Looper.java:123) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at android.app.ActivityThread.main(ActivityThread.java:5021) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.lang.reflect.Method.invokeNative(Native Method) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.lang.reflect.Method.invoke(Method.java:515) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at dalvik.system.NativeStart.main(Native Method) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): Caused by: java.io.NotSerializableException: android.app.SharedPreferencesImpl 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
07-19 01:56:13.688: E/MessageQueue-JNI(4811): at java.io.Obj 
07-19 01:56:13.688: D/AndroidRuntime(4811): Shutting down VM 
07-19 01:56:13.688: W/dalvikvm(4811): threadid=1: thread exiting with uncaught exception (group=0x65d70b20) 
07-19 01:56:13.688: D/AndroidRuntime(4811): procName from cmdline: com.jutt.dotbot 
07-19 01:56:13.688: E/AndroidRuntime(4811): in writeCrashedAppName, pkgName :com.jutt.dotbot 
07-19 01:56:13.698: D/AndroidRuntime(4811): file written successfully with content: com.jutt.dotbot StringBuffer : ;com.jutt.dotbot 
07-19 01:56:13.708: I/Process(4811): Sending signal. PID: 4811 SIG: 9 
07-19 01:56:13.708: E/AndroidRuntime(4811): FATAL EXCEPTION: main 
07-19 01:56:13.708: E/AndroidRuntime(4811): Process: com.jutt.dotbot, PID: 4811 
07-19 01:56:13.708: E/AndroidRuntime(4811): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.jutt.dotbot.ScoreSaver) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Parcel.writeSerializable(Parcel.java:1316) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Parcel.writeValue(Parcel.java:1264) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Parcel.writeArrayMapInternal(Parcel.java:618) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Bundle.writeToParcel(Bundle.java:1692) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Parcel.writeBundle(Parcel.java:636) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.content.Intent.writeToParcel(Intent.java:7013) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1502) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.startActivityForResult(Activity.java:3424) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.startActivityForResult(Activity.java:3385) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.startActivity(Activity.java:3627) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.startActivity(Activity.java:3595) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at com.jutt.dotbot.PointsDrawerActivity.onBackPressed(PointsDrawerActivity.java:205) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.onKeyUp(Activity.java:2193) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.KeyEvent.dispatch(KeyEvent.java:2664) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.Activity.dispatchKeyEvent(Activity.java:2423) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3718) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2023) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1705) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1696) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2000) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.MessageQueue.nativePollOnce(Native Method) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.MessageQueue.next(MessageQueue.java:138) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.os.Looper.loop(Looper.java:123) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at android.app.ActivityThread.main(ActivityThread.java:5021) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.lang.reflect.Method.invoke(Method.java:515) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at dalvik.system.NativeStart.main(Native Method) 
07-19 01:56:13.708: E/AndroidRuntime(4811): Caused by: java.io.NotSerializableException: android.app.SharedPreferencesImpl 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
07-19 01:56:13.708: E/AndroidRuntime(4811):  at java.io.ObjectOutputStream.w 
+0

Cette question a déjà été répondu [ici] [1] [1]: http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity -to-another-in-android –

+0

duplicata possible de [Comment envoyer un objet d'une activité Android à une autre en utilisant Intents?] (http://stackoverflow.com/questions/2139134/how-to-send-an-object -de-un-android-activity-to-another-using-intents) –

+0

J'ai vu beaucoup de questions à ce sujet, mais je ne connais pas cet exemple de méthode sérialisable, ça ne semble pas fonctionner pour moi, mais ça plante mon activité. –

Répondre

0

Dans la première activité à passer:

Intent intent = new Intent(First.this, Second.class); 
intent.putExtra("ObjectToPass", myObject); 
startActivity(intent); 

Dans l'activité Deuxième pour récupérer l'objet:

MyObject myObject = (MyObject) getIntent().getSerializableExtra("ObjectToPass"); 

Cela suppose queLa classeimplémente déjà Serializable.

+0

cette méthode ne fonctionne pas, elle bloque plutôt mon activité. –

+0

C'est la bonne façon de le faire. Quelle est l'erreur Logcat? Postez ça. –

+0

@BadComputer S'il y a une possibilité que l'activité de réception soit démarrée sans passer l'objet, assurez-vous de tester null avant d'essayer de l'utiliser. –

0

Je pense que vous pouvez appeler intent.putExtra("key", obj) sur votre intention lorsque obj est votre objet et entrez la clé dans laquelle vous souhaitez stocker l'objet. Dans l'activité démarrée, vous pouvez appeler getIntent().getSerializableExtra("key") pour récupérer votre objet. Voir this link.

+0

Oups Samrat était plus rapide ... –