text: Q:
  
  Array of Parcelable objects that each contains a few strings and ArrayList of parcelable objects
  
  Hey guys im having alot of troubles getting the following code to work. I am trying to setup an array of parcelable objects named Topic which each contain 3 strings and an ArrayList of Issue objects that are created by parsing an XML file.
  The issue is that when im sending a specific Topic object via the following intent.
  Intent intent = new Intent(context, ListIssues.class);
  intent.putExtra("topic", topicObject);
  context.startActivity(intent)`
  
  And receiving the extras in the ListIssues.class 
  getIntent().getExtras().getParcelable("topic");
  
  I receive the proper result on the Activities OnCreate() method. I then am creating the following Fragment to display the Issue list objects.
  public static SymptomFragment newInstance(ArrayList<IssueParcel> mIssues) {
      SymptomFragment fragment = new SymptomFragment();
      Bundle args = new Bundle();
      args.putParcelableArray("topic", mIssues);
      fragment.setArguments(args);
      return fragment;
  }
  
   public SymptomFragment() {
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      if (getArguments() != null) {
          Array = getArguments().getParcelableArray("topic");
      }
      //Null when calling 
  }
  
  i am receiving a improperly stored/created arraylist of Issue objects. The strings (title,description,image_url) are fine, However the ArrayList<Issue> contains the valid array size, however the Issue objects themself are either null or were improperly created (certain child strings are wrong);
  Topic
  public class Topic implements Parcelable {
  
  String title;
  String description;
  String image_url;
  ArrayList<Issue> issues = new ArrayList<>();
  
  public Topic() {
  }
  
  public Topic(Parcel in) {
      this.title = in.readString();
      this.description = in.readString();
      this.image_url = in.readString();
      in.readList(this.issues, Issue.CREATOR);
  }
  
  public void setTitle(String title) {
      this.title = title;
  }
  public void setDescription(String description) {
      this.description = description;
  }
  public void setImageUrl(String image_url) {
      this.image_url = image_url;
  }
  public void setIssues(ArrayList<Issue> issues) {
      this.issues = issues;
  }
  
  public String getTitle() { return this.title; }
  public String getDescription() { return this.description; }
  public String getImageUrl() { return this.image_url; }
  public ArrayList<Issue> getIssues() { return this.issues; }
  
  @Override
  public int describeContents() {
      return 0;
  }
  
  @Override
  public void writeToParcel(Parcel dest, int flags) {
      dest.writeString(getTitle());
      dest.writeString(getDescription());
      dest.writeString(getImageUrl());
      /** Think this could be the culprit */
      dest.writeList(getIssues());
  }
  
  public static final Parcelable.Creator<Topic> CREATOR = new  Parcelable.Creator<Topic>() {
      public Topic createFromParcel(Parcel in) {
          return new Topic(in);
      }
      @Override
      public Topic[] newArray(int size) {
          return new Topic[size];
      }
   };
  }
  
  Issue
  public class Issue implements Parcelable {
  
  private String connectedtype;
  private String symptom;
  private String problem;
  private String solution;
  private String comments;
  
  public Issue() {
  }
  
  public Issue(Parcel in) {
      this.connectedtype = in.readString();
      this.symptom = in.readString();
      this.problem = in.readString();
      this.solution = in.readString();
      this.comments = in.readString();
  }
  
  public void setConnectionType(String connectedtype) {
      this.connectedtype = connectedtype;
  }
  public void setSymptom(String symptom) {
      this.symptom = symptom;
  }
  public void setProblem(String problem) {
      this.problem = problem;
  }
  public void setSolution(String solution) {
      this.solution = solution;
  }
  public void setComments(String comments) {
      this.comments = comments;
  }
  
  public String getConnectionType() {
      return this.connectedtype;
  }
  public String getSymptom() {
      return this.symptom;
  }
  public String getProblem() {
      return this.problem;
  }
  public String getSolution() {
      return this.solution;
  }
  public String getComments() {
      return this.comments;
  }
  @Override
  public int describeContents() {
      return 0;
  }
  @Override
  public void writeToParcel(Parcel dest, int flags) {
      dest.writeString(getConnectionType());
      dest.writeString(getSymptom());
      dest.writeString(getProblem());
      dest.writeString(getSolution());
      dest.writeString(getComments());
  }
  
  public static final Parcelable.Creator<Issue> CREATOR = new Parcelable.Creator<Issue>() {
      @Override
      public Issue createFromParcel(Parcel source) {
          return new Issue(source);
      }
      @Override
      public Issue[] newArray(int size) {
          return new Issue[size];
      }
    };
  }
  
  Creating the Objects
  public ArrayList<Topic> parseXML() throws XmlPullParserException, IOException {
      XmlPullParser xmlPullParser;
      XmlPullParserFactory xmlPullParserFactory =    XmlPullParserFactory.newInstance();
      xmlPullParser = xmlPullParserFactory.newPullParser();
      xmlPullParser.setInput(openStream());
      int eventType = xmlPullParser.getEventType();
      boolean completed = false;
  
      Issue mIssue = new Issue();
      ArrayList<Issue> mIssues = new ArrayList<>();
  
      Topic mTopic = new Topic();
      ArrayList<Topic> mTopics = new ArrayList<>();
  
      while (eventType != XmlPullParser.END_DOCUMENT && !completed) {
          String tagName = xmlPullParser.getName();
          switch (eventType) {
              case XmlPullParser.START_DOCUMENT:
                  break;
              case XmlPullParser.START_TAG:
                  if (tagName.equals(topic)) {
                      mTopic = new Topic();
                  }
                  if (tagName.equals(title)) {
                      mTopic.setTitle(xmlPullParser.nextText());
                  }
                  if (tagName.equals(description)) {
                      mTopic.setDescription(xmlPullParser.nextText());
                  }
                  if (tagName.equals(image_url)) {
                      mTopic.setImageUrl(xmlPullParser.nextText());
                  }
                  if (tagName.equals(issues)) {
                      mIssues = new ArrayList<Issue>();
                  }
                  if (tagName.equals(issue)) {
                      mIssue = new Issue();
                  }
                  if (tagName.equals(connection_type)) {
                      mIssue.setConnectionType(xmlPullParser.nextText());
                  }
                  if (tagName.equals(symptom)) {
                      mIssue.setSymptom(xmlPullParser.nextText());
                  }
                  if (tagName.equals(problem)) {
                      mIssue.setProblem(xmlPullParser.nextText());
                  }
                  if (tagName.equals(solution)) {
                      mIssue.setSolution(xmlPullParser.nextText());
                  }
                  if (tagName.equals(comments)) {
                      mIssue.setComments(xmlPullParser.nextText());
                  }
                  break;
              case XmlPullParser.END_TAG:
                  if (tagName.equals(root)) {
                      completed = true;
                  } else if (tagName.equals(issue)) {
                      mIssues.add(mIssue);
                  } else if (tagName.equals(issues)) {
                      mTopic.setIssues(mIssues);
                  } else if (tagName.equals(topic)) {
                      mTopics.add(mTopic);
                  }
                  break;
          }
          eventType = xmlPullParser.next();
      }
      closeStreams();
      return mTopics;
  }
  
  A:
  
  So by changing putParcelableArray("topic", mIssues) to putParcelableArrayList("topic", mIssues) and retrieving it via getParcelableArrayList() instead of getParcelableArray() the issue has been resolved.
  I can then update the Topic object with in.readTypedList(x, y)
  
  