2012-06-25 10 views
5

Este es el códigono puede pasar un ArrayList <Parcelable> a una actividad

ArrayList<MyObject> list = new ArrayList<MyObject>(); 
list.add(new MyObject()); 
Intent intent = new Intent(this, ReceiverActivity.class); 
intent.putExtra("list", list); 
startActivity(intent); 

ReceiverActivity

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getParcelable("list"); 

Aquí lista es nula. Además, esto no funciona:

List<MyObject> list = (List<MyObject>)getIntent().getExtras().getSerializable("list"); 

MyObject es Parcelable, implementé todos los métodos necesarios. Supongo que esta implementación no es el problema, porque de lo contrario recibiría otro tipo de excepciones. Pero no obtengo nada además de que la lista es nula.

Gracias de antemano ...

Ahora me encontré con esto:

List<Parcelable> list = (List<Parcelable>)getIntent().getParcelableArrayListExtra("list"); 

que tiene que ser utilizado en la actividad del receptor, pero ¿cómo lo envío y cómo consigo List<MyObject> de List<Parcelable> ?

Respuesta

15

USe i.putParcelableArrayListExtra(name, value) donde soy su intención. No use putExtra() para ArrayList que se puede parcelar.

+0

El método getParcelableArrayListExtra me da ArrayList ¿Cómo consigo ArrayList ? Parece que tengo que lanzar los elementos o crear una nueva copia con ArrayList ? – Ixx

+0

sus objetos deben implementar Parcelable. Entonces deberían hacerlo bien – Akhil

+0

No es posible emitirlos porque están en una lista y los genéricos no son covariantes. – Ixx

6

Probar:

ArrayList<MyObject> myList = extras.<MyObject>getParcelableArrayList("list")); 
+0

Solo como una nota al margen. Para el intento en sí mismo es intent.getParcelableArrayListExtra ("nombre") –

Cuestiones relacionadas