Próbuję przekazać listę obiektów między dwiema czynnościami, ale moja aplikacja miażdży się podczas drugiej czynności. Czy ktoś może mi pomóc rozwiązać ten problem ...Przekazywanie tablicy obiektów między działaniami
Oto mój kod z mojej pierwszej działalności:
Intent i = new Intent();
Bundle b = new Bundle();
b.putParcelableArrayList("songs",(ArrayList<? extends Parcelable>) albumsArray.get(position).getSongs());
Log.v("--", "OK");
i.putExtras(b);
i.setClass(LatestAlbums.this, AlbumDetails.class);
startActivity(i);
i kod z drugiego działalności:
songs=new ArrayList<Songs>();
Bundle b = this.getIntent().getExtras();
if(b!=null)
songs = b.getParcelable("songs");
Log.v("--", songs.size()+"");
I moje wyjście logcat:
04-03 16:37:03.513: E/AndroidRuntime(6576): FATAL EXCEPTION: main
04-03 16:37:03.513: E/AndroidRuntime(6576): java.lang.RuntimeException: Parcel: unable to marshal value [email protected]
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Parcel.writeValue(Parcel.java:1137)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Parcel.writeList(Parcel.java:524)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Parcel.writeValue(Parcel.java:1097)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Parcel.writeMapInternal(Parcel.java:493)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Bundle.writeToParcel(Bundle.java:1612)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Parcel.writeBundle(Parcel.java:507)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.content.Intent.writeToParcel(Intent.java:6147)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1613)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.Activity.startActivityFromChild(Activity.java:3458)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.Activity.startActivityForResult(Activity.java:3210)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.Activity.startActivity(Activity.java:3297)
04-03 16:37:03.513: E/AndroidRuntime(6576): at com.outsourcefarm.musicagratis.activities.LatestAlbums$4$1.onItemClick(LatestAlbums.java:232)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.widget.AbsListView$1.run(AbsListView.java:3168)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Handler.handleCallback(Handler.java:605)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.os.Looper.loop(Looper.java:137)
04-03 16:37:03.513: E/AndroidRuntime(6576): at android.app.ActivityThread.main(ActivityThread.java:4440)
04-03 16:37:03.513: E/AndroidRuntime(6576): at java.lang.reflect.Method.invokeNative(Native Method)
04-03 16:37:03.513: E/AndroidRuntime(6576): at java.lang.reflect.Method.invoke(Method.java:511)
04-03 16:37:03.513: E/AndroidRuntime(6576): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-03 16:37:03.513: E/AndroidRuntime(6576): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-03 16:37:03.513: E/AndroidRuntime(6576): at dalvik.system.NativeStart.main(Native Method)
ma Twój obiekt '' Parcelable' Song' wdrożyć? –
@OvidiuLatcu no. Jak mogę to wdrożyć? –
'public class Song implementuje Parcable {...}'. http://developer.android.com/reference/android/os/Parcelable.html –