una studio pasar otra objetos entre datos como clase activity actividades android android-intent arraylist android-activity parcelable

android - studio - Pasar una lista de objetos entre actividades



pasar arraylist entre activity android (4)

Debes hacer que tu clase Song implemente Parcelable .

Estoy tratando de pasar una lista de objetos entre dos actividades, pero mi aplicación se aplasta en la segunda actividad. ¿Alguien puede ayudarme a resolver este problema ...

Aquí está mi código de mi primera actividad:

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);

Y el código de la segunda actividad:

songs=new ArrayList<Songs>(); Bundle b = this.getIntent().getExtras(); if(b!=null) songs = b.getParcelable("songs"); Log.v("--", songs.size()+"");

Y mi salida de 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 com.musicapp.objects.Songs@419489e8 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)


Intent intent=new Intent(ActivityFrom.this,ActivityTo.class); intent.putExtra("StringKey",arrayList); startActivity(intent);

y para recuperar

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("StringKey");


Intenta lo siguiente

intent.putParcelableArrayListExtra("key", ArrayList<T extends Parcelable> list); startActivity(intent);

Recuperarlo

getIntent().getParcelableArrayListExtra("key");

Pasar una lista de arrays de objetos definidos por el usuario a Intent Android . Comprueba la respuesta de Sajmon

De acuerdo con los comentarios hechos por Sajmon, la clase Song debe implement Parcelable


i.setClass(LatestAlbums.this, AlbumDetails.class); i.putStringArrayListExtra("list", your song list); startActivity(i);

Para obtener la lista de matriz en actividad.

ArrayList<String> fetchList= new ArrayList<String>(); fetchList= getIntent().getStringArrayListExtra("list");

Espero que esto te ayudará.

Para más referencia, use este enlace .