无法调试实现parcelable的类

时间:2017-04-03 19:45:12

标签: android parcelable

如果我有一个名为“EditorialCollection”的对象并且它实现了parcelable,为什么我不能调试像writeToParcel这样的覆盖方法?

protected EditorialCollection(Parcel in) {
        super(in);
//break point here:
        items = new ArrayList<>();
        in.readList(items, CollectionItem.class.getClassLoader());
        embedPagination = (EmbedPagination) in.readValue(EmbedPagination.class.getClassLoader());
    }

    @Override
    public int describeContents() {
        return 0;
    }
public static final Creator<EditorialCollection> CREATOR = new Creator<EditorialCollection>() {
    @Override
    public EditorialCollection createFromParcel(Parcel in) {
        return new EditorialCollection(in);
    }

    @Override
    public EditorialCollection[] newArray(int size) {
        return new EditorialCollection[size];
    }
};

我无法击中断点,也无法在那里输出记录。我做错了什么或者有人可以解释为什么日志/断点在这里不起作用。

谢谢, 里德

2 个答案:

答案 0 :(得分:0)

无法调试宗地对象或可宗地实现对象。

public final class Parcel {
    private static final boolean DEBUG_RECYCLE = false;
    private static final boolean DEBUG_ARRAY_MAP = false;
    private static final String TAG = "Parcel";
    .
    .
    .
} 

答案 1 :(得分:0)

您可以使用Parcelables.forceParcel(builder, CREATOR)方法来测试Parcel类。

但是它仅适用于测试类

还可以从Parcelables类复制此功能。您可以尝试使用Java代码:

public static <T extends Parcelable> T forceParcel(T parcelable, Creator<T> creator) {
   Parcel parcel = Parcel.obtain();
   try {
     parcelable.writeToParcel(parcel, 0);
     parcel.setDataPosition(0);
     return creator.createFromParcel(parcel);
   } finally {
     parcel.recycle();
   }
}