Имеется у меня меня объект NewsRequest, который требуется передать во второе Activity. Вот его объявление:
public class NewsRequest implements Parcelable {
private boolean success;
private List<News> newsList;
protected NewsRequest(Parcel in) {
success = in.readByte() != 0;
in.readList(newsList, News.class.getClassLoader());
}
public static final Creator<NewsRequest> CREATOR = new Creator<NewsRequest>() {
@Override
public NewsRequest createFromParcel(Parcel in) {
return new NewsRequest(in);
}
@Override
public NewsRequest[] newArray(int size) {
return new NewsRequest[size];
}
};
public List<News> getNewsList() {
return newsList;
}
public boolean isSuccess() {
return success;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeByte((byte) (success ? 1 : 0));
parcel.writeTypedList(newsList);
}
}
News:
public class News implements Parcelable {
private long date;
private String sourceLogo;
private String title;
private String url;
private String source;
protected News(Parcel in) {
date = in.readLong();
sourceLogo = in.readString();
title = in.readString();
url = in.readString();
source = in.readString();
}
public static final Creator<News> CREATOR = new Creator<News>() {
@Override
public News createFromParcel(Parcel in) {
return new News(in);
}
@Override
public News[] newArray(int size) {
return new News[size];
}
};
public long getDate() {
return date;
}
public String getSourceLogo() {
return sourceLogo;
}
public String getTitle() {
return title;
}
public String getUrl() {
return url;
}
public String getSource() {
return source;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(date);
parcel.writeString(sourceLogo);
parcel.writeString(title);
parcel.writeString(url);
parcel.writeString(source);
}
}
Вот так я передаю объект:
Intent intent = new Intent(StartActivity.this, NewsActivity.class);
intent.putExtra(NewsRequest.class.getCanonicalName(), news);
startActivity(intent);
А вот так я его принимаю:
NewsRequest getNews = (NewsRequest) getIntent().getParcelableExtra(
NewsRequest.class.getCanonicalName());
Программа валится на строчке (NullPointerException): in.readList(newsList, News.class.getClassLoader()); (NewsRequest.java)
Пробовал также in.readList(newsList, null) - такая же ошибка