2012-06-25 2 views
5

Это кодНе удается передать ArrayList <Parcelable> к деятельности

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

Здесь список пустым. Также это не работает:

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

MyObject is Parcelable, я внедрил все необходимые методы. Я предполагаю, что эта реализация не является проблемой, потому что в противном случае я бы воспользовался другими исключениями. Но я ничего не получаю, кроме того, что список имеет значение null.

Заранее спасибо ...

Теперь я нашел это:

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

, который должен быть использован в деятельности приемника, но как я могу отправить его и как я могу получить List<MyObject> от List<Parcelable> ?

ответ

15

USe i.putParcelableArrayListExtra(name, value) где я - ваше намерение. Не используйте putExtra() для произвольного массива ArrayList.

+0

Метод getParcelableArrayListExtra дает мне ArrayList как получить ArrayList ? Похоже, мне нужно наложить элементы или создать новую копию с типом ArrayList ? – Ixx

+0

Ваши объекты должны быть реализованы. Поэтому они должны делать штраф – Akhil

+0

Невозможно отбросить их, потому что они находятся в списке, а дженерики не ковариантны. – Ixx

6

Try:

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

Как примечание стороны. Для самого намерения это намерение.getParcelableArrayListExtra («имя») –

Смежные вопросы