2015-08-24 2 views
1

Я хочу, чтобы отправить список Parcelable объектов к деятельности, но я получаю пустые объекты при получении объектов из свертка деятельностиПрием нуля Parcelable объектов из Bundle

У меня есть метод, который начинает деятельность, отправка список Parcelable объектов в пачке:

public void openActivity(){ 
     ArrayList<ReportErrorVO> reports = new ArrayList<>(); 

     ReporteErrorVO reportError = new ReporteErrorVO(); 
     reportError.setTituloError("Error title 1"); 
     reportError.setDescripcionError("Error description 1"); 
     reports.add(reportError); 

     reportError = new ReporteErrorVO(); 
     reportError.setTituloError("Error title 2"); 
     reportError.setDescripcionError("Error description 2"); 
     reports.add(reportError); 

     Intent intent = new Intent(this, ReporteErrorActivity.class); 
     Bundle args = new Bundle(); 
     args.putParcelableArrayList("reports", reports); 
     intent.putExtras(args); 
     startActivity(intent); 
    } 

Мой Parcelable класс:

public class ReportErrorVO implements Parcelable { 

private String titleError; 
private String descriptionError; 

public ReportErrorVO(Parcel in) { 
    titleError = in.readString(); 
    descriptionError = in.readString(); 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeString(titleError); 
    dest.writeString(descriptionError); 
} 

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
    public ReportErrorVO createFromParcel(Parcel in) { 
     return new ReportErrorVO(in); 
    } 

    public ReportErrorVO[] newArray(int size) { 
     return new ReportErrorVO[size]; 
    } 
}; 

@Override 
public int describeContents() { 
    return 0; 
} 
} 

И деятельность, что называется, я получил:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

    ...//Activity initializer code.. 

    Bundle bundle = getIntent().getExtras(); 
    ArrayList<ReportErrorVO> reports = new ArrayList<>(); 
    try { 
     reports = bundle.getParcelableArrayList("reports"); 
    }catch (Exception ex){ 
     System.out.println(ex.getMessage()); 
    }  

} 

Проблема заключается в том, что при анализе массива отчетов я обнаружил, что у меня есть размер = 2, у меня есть второй элемент null (позиция позиции = 1). Обратите внимание, что кулак этого списка отлично. Что не так?

ответ

4

Я просто сталкивался с такой же проблемой сегодня, и я решил этим путем:

Запись данных:

Bundle data = new Bundle(); 
data.putParcelableArrayList("reports", reports); 
intent.putExtra("bundle", data); 

чтения данных:

Bundle data = intent.getBundleExtra("bundle"); 
ArrayList<ReportErrorVO> reports= data.getParcelableArrayList("reports"); 

Надежда это помогает :)

Смежные вопросы