Я пытаюсь передать список категорий из Деятельности в другой. Я реализовал Parcelable в классе, но каждый раз он разбивает приложение. Примечание: действие работает, когда вы не передаете это дополнительно. Примечание 2: Я не могу видеть журнал, просто так медленно и внезапно "D/AndroidRuntime: Выключение ВМ"Parcelable, содержащий ArrayList самого себя
Это пакет:
public class Category implements Parcelable{
private String categoryId;
private String name;
private boolean active;
private String slug;
private String externalId;
private String parentId;
private Integer level;
private String categoryTreeNodeId;
private ArrayList<Category> children;
public Category() {}
// Getters and Setters...
@Override
public int describeContents() {
// ignore for now
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(categoryId);
dest.writeString(name);
dest.writeByte((byte) (active ? 1 : 0));
dest.writeString(slug);
dest.writeString(externalId);
dest.writeString(parentId);
dest.writeInt(level);
dest.writeString(categoryTreeNodeId);
dest.writeTypedList(children);
}
/** Static field used to regenerate object, individually or as arrays */
public static final Parcelable.Creator<Category> CREATOR = new Parcelable.Creator<Category>() {
public Category createFromParcel(Parcel pc) {
return new Category(pc);
}
public Category[] newArray(int size) {
return new Category[size];
}
};
/**Ctor from Parcel, reads back fields IN THE ORDER they were written */
public Category(Parcel in){
categoryId = in.readString();
name = in.readString();
active = in.readByte() != 0;
slug = in.readString();
externalId = in.readString();
parentId = in.readString();
level = in.readInt();
categoryTreeNodeId = in.readString();
in.readTypedList(children, Category.CREATOR);
}
}
Это как Я называю активность:
ArrayList<Category> list = currentCategory.getChildren();
intent.putParcelableArrayListExtra(SubCategoryActivity.EXTRA_CATEGORY_LIST, list);
intent.putExtra(SubCategoryActivity.EXTRA_CURRENT_CAT_NAME, currentCategory.getName());
context.startActivity(intent);
EXTRA_CURRENT_CAT_NAME это просто строка, и это прекрасно работает.
Я считаю, что проблема в ArrayList. Любые советы или опыты, делающие что-то подобное?
Спасибо.
Единственный журнал, я получаю:
08-04 17: 56: 21,529 30543-30543/com.example.test D/AndroidRuntime: Выключение VM 08-04 17: 56: 41,554 30543-30552/com.example.test I/искусство: резьба [5, TID = 30552, WaitingInMainSignalCatcherLoop, резьба * = 0xb81e22d0, равный = 0x12c00080, "Сигнал пропасть"]: реагирует на сигнал 3 08-04 17:56: 41.554 30543-30552/com.example.test I/art: [08-04 17: 56: 41.754 787: 809 I/Process] Сигнал отправки. PID: 787 SIG: 3
Можете ли вы опубликовать трассировку стека? Возможно, ошибка не там, где вы думаете. С первого взгляда реализация выглядит отлично. – kcoppock
@kcoppock См. Обновленный, но там немного ... Я был до того, как исполнил действие, и есть только это. – AlbertoGarrido