I found a lot of places where they send an ArrayList, but I need to send a simple array of my custom Card object from action A to B. I believe that I made classes so that it would allow my object to be passed as an extra out of intention. This is my cool board:
import android.os.Parcel; import android.os.Parcelable; public class Card implements Parcelable{ public String suit; public int value; public String color; public Card(String suit, int value){ this.suit = suit; this.value = value; if(suit == "hearts" || suit == "diamonds"){ this.color = "red"; }else{ this.color = "black"; } } public String toString(){ String s = suit; return s; } private Card(Parcel in) { value = in.readInt(); color = in.readString(); suit = in.readString(); } public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeInt(value); out.writeString(color); out.writeString(suit); } public static final Parcelable.Creator<Card> CREATOR = new Parcelable.Creator<Card>() { public Card createFromParcel(Parcel in) { return new Card(in); } public Card[] newArray(int size) { return new Card[size]; } }; }
and thatβs how I add it to the intention in activity A (for example, the main activity):
Card[] myCardArray = new Card[7]; //Note the card array is filled before starting the intent. Intent intnt = new Intent(this, B.class); intnt.putExtra("array", myCardArray); startActivity(intnt);
Then I return it to Action B onCreate like this:
allCards = (Card[]) getIntent().getExtras().getParcelableArray("array");
The unourntunatley application crashes as soon as it reaches the code in Activity B. Do I call it the wrong way? Here is logcat
09-05 15:27:37.007: E/Trace(26971): error opening trace file: No such file or directory (2) 09-05 15:27:37.007: D/ActivityThread(26971): setTargetHeapUtilization:0.25 09-05 15:27:37.007: D/ActivityThread(26971): setTargetHeapIdealFree:8388608 09-05 15:27:37.007: D/ActivityThread(26971): setTargetHeapConcurrentStart:2097152 09-05 15:27:37.228: D/libEGL(26971): loaded /system/lib/egl/libEGL_adreno200.so 09-05 15:27:37.228: D/libEGL(26971): loaded /system/lib/egl/libGLESv1_CM_adreno200.so 09-05 15:27:37.228: D/libEGL(26971): loaded /system/lib/egl/libGLESv2_adreno200.so 09-05 15:27:37.248: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:37.268: E/(26971): <s3dReadConfigFile:75>: Can't open file for reading 09-05 15:27:37.268: E/(26971): <s3dReadConfigFile:75>: Can't open file for reading 09-05 15:27:37.268: D/OpenGLRenderer(26971): Enabling debug mode 0 09-05 15:27:39.640: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:41.963: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:42.844: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:44.425: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:46.257: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:47.799: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:49.781: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:51.182: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:51.943: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:55.237: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:56.468: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:57.910: I/Adreno200-EGLSUB(26971): <ConfigWindowMatch:2087>: Format RGBA_8888. 09-05 15:27:59.101: D/AndroidRuntime(26971): Shutting down VM 09-05 15:27:59.101: W/dalvikvm(26971): threadid=1: thread exiting with uncaught exception (group=0x412e8438) 09-05 15:27:59.111: E/AndroidRuntime(26971): FATAL EXCEPTION: main 09-05 15:27:59.111: E/AndroidRuntime(26971): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.marco.pokerhands2/com.marco.pokerhands2.DisplayHands}: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to com.marco.pokerhands2.Card[] 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread.access$700(ActivityThread.java:139) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.os.Handler.dispatchMessage(Handler.java:99) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.os.Looper.loop(Looper.java:137) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread.main(ActivityThread.java:4918) 09-05 15:27:59.111: E/AndroidRuntime(26971): at java.lang.reflect.Method.invokeNative(Native Method) 09-05 15:27:59.111: E/AndroidRuntime(26971): at java.lang.reflect.Method.invoke(Method.java:511) 09-05 15:27:59.111: E/AndroidRuntime(26971): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 09-05 15:27:59.111: E/AndroidRuntime(26971): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 09-05 15:27:59.111: E/AndroidRuntime(26971): at dalvik.system.NativeStart.main(Native Method) 09-05 15:27:59.111: E/AndroidRuntime(26971): Caused by: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to com.marco.pokerhands2.Card[] 09-05 15:27:59.111: E/AndroidRuntime(26971): at com.marco.pokerhands2.DisplayHands.onCreate(DisplayHands.java:30) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.Activity.performCreate(Activity.java:5048) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 09-05 15:27:59.111: E/AndroidRuntime(26971): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052) 09-05 15:27:59.111: E/AndroidRuntime(26971): ... 11 more
java android object arrays android-intent
user2748360
source share