ParcelablePlease icon indicating copy to clipboard operation
ParcelablePlease copied to clipboard

Error in generated code on Parcelable with generics

Open fabioCollini opened this issue 10 years ago • 3 comments
trafficstars

Using ParcelablePlease on a class with a Parcelable field with a generic parameter there is an error in generated code. For example using ObservableParcelable class of data binding framework:

ObservableParcelable<App> app = new ObservableParcelable<>();

the generated code has a compilation error:

target.app = parcel.readParcelable(android.databinding.ObservableParcelable<App>.class.getClassLoader());

It can be fixed easily using a custom bagger:

public class ObservableParcelableBagger implements ParcelBagger<ObservableParcelable> {
    @Override public void write(ObservableParcelable value, Parcel out, int flags) {
        out.writeParcelable(value, flags);
    }

    @Override public ObservableParcelable read(Parcel in) {
        return in.readParcelable(ObservableParcelable.class.getClassLoader());
    }
}

Thanks for this great framework!

fabioCollini avatar Sep 25 '15 09:09 fabioCollini

I see ... The compilation error is the generic type <App> in ObservableParcelable<App>.class, right?

sockeqwe avatar Sep 25 '15 09:09 sockeqwe

Yes, to fix it you just need to remove the generic parameter <App>

fabioCollini avatar Sep 25 '15 10:09 fabioCollini

Thanks for reporting!

sockeqwe avatar Sep 25 '15 10:09 sockeqwe