Intereting Posts
IABHelper. QueryInventoryAsync не возвращает никаких покупок, но запуск потока продукта невозможен с помощью «Item Own Owned» Appcompat показать прогресс в панели действий вызывает NPE Масштабирование изображения с мультитачом Android? Что такое libcore и его роль в android? Что может быть причиной java.net.SocketException: recvfrom failed: ETIMEDOUT? Как вернуть результат «естественным образом», когда вызываемая вызываемая активность завершается? Изменение ориентации в сотах Android: getSupportActionBar () всегда возвращает null в библиотеке ActionBarSherlock Html5 <audio>: как использовать встроенные элементы `next` и` previous` на iOS 4.2 / Android 2.3 Программный доступ к внутреннему хранилищу (не SD-карта) на Verizon HTC Droid Incredible (Android) Тип сборки не является ошибкой jni debuggable Можно ли использовать общие предпочтения? Можно ли переместить внутреннюю БД на SDCard? Невозможно потоковое видео Издатель закрыл входной канал или произошла ошибка. события = 0x8

Арреалист в сравнимом объекте

До сих пор я видел множество убедительных примеров, но по какой-то причине я не могу заставить его работать, когда он становится немного сложнее. У меня есть объект Movie, который реализует Parcelable. Этот объект книги содержит некоторые свойства, такие как ArrayLists. Запуск моего приложения приводит к исключению NullPointerException при выполнении ReadTypedList! У меня действительно нет идей

public class Movie implements Parcelable{ private int id; private List<Review> reviews private List<String> authors; public Movie () { reviews = new ArrayList<Review>(); authors = new ArrayList<String>(); } public Movie (Parcel in) { readFromParcel(in); } /* getters and setters excluded from code here */ public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeList(reviews); dest.writeStringList(authors); } public static final Parcelable.Creator<Movie> CREATOR = new Parcelable.Creator<Movie>() { public MoviecreateFromParcel(Parcel source) { return new Movie(source); } public Movie[] newArray(int size) { return new Movie[size]; } }; /* * Constructor calls read to create object */ private void readFromParcel(Parcel in) { this.id = in.readInt(); in.readTypedList(reviews, Review.CREATOR); /* NULLPOINTER HERE */ in.readStringList(authors); } } 

Класс обзора:

  public class Review implements Parcelable { private int id; private String content; public Review() { } public Review(Parcel in) { readFromParcel(in); } public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(content); } public static final Creator<Review> CREATOR = new Creator<Review>() { public Review createFromParcel(Parcel source) { return new Review(source); } public Review[] newArray(int size) { return new Review[size]; } }; private void readFromParcel(Parcel in) { this.id = in.readInt(); this.content = in.readString(); } } 

Я был бы очень благодарен, если бы кто-то мог просто получить меня на правильном пути, я потратил немало времени на поиск этого!

Спасибо в адрес Уэсли

Solutions Collecting From Web of "Арреалист в сравнимом объекте"

reviews и authors являются нулевыми. Сначала вы должны инициализировать ArrayList. Один из способов сделать это – создать цепочку конструктора:

 public Movie (Parcel in) { this(); readFromParcel(in); } 

Из javadocs для readTypedList :

Чтение в данные List List, содержащие определенный тип объекта, которые были написаны с помощью writeTypedList(List)

В текущем dataPosition() . Список должен быть написан ранее через writeTypedList(List) с тем же типом объекта.

Вы написали их с простой

 dest.writeList(reviews);