Intereting Posts
Как полностью заменить listView / GridView с помощью RecyclerView? Android: установите альфа на кнопку при нажатии. Предпочтительно только xml Android – лучший способ реализовать LocationListener для нескольких действий Проводник файлов всегда пуст в Eclipse Android: сохраните MediaPlayer во время обновления ориентации экрана Activity Может ли выставляемая форма иметь размер, соответствующий fill_parent? Поделиться счетом на Facebook android Добавить панель инструментов поиска по карте google, например, в приложении для родных Android. Как сделать первый символ намного больше, чем другой в TextView Воспроизведение по умолчанию мягкой клавиатуры при нажатии кнопок в android Широковещательное зарядное устройство отключено в Android O Фон с круговой диаграммой меняется, если срез слишком мал в MPAndroidChart Параметр ViewPager's PageAdapter сбрасывается при изменении ориентации Как получить язык (локаль) в настоящее время отображается Android-приложение? Shell / пакетный скриптинг для непосредственных команд для adb shell

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

До сих пор я видел множество убедительных примеров, но по какой-то причине я не могу заставить его работать, когда он становится немного сложнее. У меня есть объект 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);