Существует два класса, которые связывают друг с другом. Проблема оказывает StackOverflow исключение, если я реализует Parceable этот путь:Возможные причины Stackoverflow
RSSFeed.java
public class RSSFeed implements Parcelable {
private String title;
private String link;
private ArrayList<RSSItem> rssItems;
public RSSFeed() {
rssItems = new ArrayList<RSSItem>();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[] { this.title, this.link });
Bundle b = new Bundle();
b.putParcelableArrayList("rssItems", rssItems);
dest.writeBundle(b);
}
public static final Parcelable.Creator<RSSFeed> CREATOR = new Parcelable.Creator<RSSFeed>() {
@Override
public RSSFeed createFromParcel(Parcel in) {
RSSFeed rssFeed = new RSSFeed();
String[] data = new String[2];
in.readStringArray(data);
rssFeed.title = data[0];
rssFeed.link = data[1];
Bundle b = in.readBundle(RSSItem.class.getClassLoader());
rssFeed.rssItems = b.getParcelableArrayList("rssItems");
return rssFeed;
}
@Override
public RSSFeed[] newArray(int size) {
return new RSSFeed[size];
}
};
RSSItem.java
public class RSSItem implements Parcelable {
private RSSFeed feed;
private String title;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Bundle b = new Bundle();
b.putParcelable("feed", this.feed);
dest.writeStringArray(new String[] { this.title });
}
public static final Parcelable.Creator<RSSItem> CREATOR = new Parcelable.Creator<RSSItem>() {
@Override
public RSSItem createFromParcel(Parcel in) {
RSSItem rssItem = new RSSItem();
Bundle b = in.readBundle(RSSFeed.class.getClassLoader());
rssItem.feed = b.getParcelable("feed");
String[] dataString = new String[1];
in.readStringArray(dataString);
rssItem.setTitle(dataString[0]);
return rssItem;
}
@Override
public RSSItem[] newArray(int size) {
return new RSSItem[size];
}
};
Итак, он сокрушает с помощью stackoverflow, я думаю, потому что он пытается в writeParcel(...)
пройти ArrayList<RSSItems>
, который в writeParcel(...)
попытается пройти RSSFeed
участник и снова и снова. Итак, вопрос в том, как решить эту проблему для Parce двух классов?
и точный stacktrace есть? –