Один из моих классов имеет 3 свойства ArrayList, как это:ArrayList <String> нуль при создании Parcel
public class Product implements Parcelable{
// other properties
private ArrayList<String> categoryIds;
private ArrayList<String> categorySlugs;
private ArrayList<String> categoryNames;
public Product(){}
// getters and setters
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// writing other properties
dest.writeStringList(categoryIds); // here aren't null
dest.writeStringList(categorySlugs);
dest.writeStringList(categoryNames);
}
public static final Parcelable.Creator<Product> CREATOR = new Parcelable.Creator<Product>() {
public Product createFromParcel(Parcel pc) {
return new Product(pc);
}
public Product[] newArray(int size) {
return new Product[size];
}
};
public Product(Parcel in){
// reading other properties, all correct
in.readStringList(categoryIds); // from here are all null
in.readStringList(categorySlugs);
in.readStringList(categoryNames);
}
}
Прочитайте комментарии в конструкторе Пакета. Эти три имеют значение null, но в функции «writeToParcel» они не равны нулю. Все остальные свойства верны. Что мне здесь не хватает?
Thanks :)
Вы никогда не экземпляр списка для создания экземпляра. Вам нужно 'private ArrayList categoryIds = new ArrayList ()'; «Новый ArrayList ()' является решающей частью, так как здесь вы создаете экземпляр объекта. –
TEK
Это первый раз, когда я использую ArrayList в пакете. До сих пор у меня также был собственный массив классов: ArrayList и не нужно создавать экземпляр. Но ты совершенно прав, это сработало, спасибо! если вы опубликуете его в качестве ответа, я его приму. –
AlbertoGarrido
Готово. Рад, что я мог бы помочь в некотором роде. :) – TEK