RealmObjects (およびLombok ) でFragmentArgsにParcelerを使用していて、次のビルド エラーが発生します。
Error:(73, 70) error: Parceler: Unable to find read/write generator for type io.realm.RealmList<backend.model.Invitation> for backend.model.ProjectInfo#invitations
私のクラスProjectInfoは次のようになります
@Parcel(implementations = {ProjectInfoRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {ProjectInfo.class})
public class ProjectInfo extends RealmObject
{
@Getter @Setter @PrimaryKey long projectId;
@ParcelPropertyConverter(RealmListParcelConverter.class) @Getter @Setter @Ignore RealmList<Invitation> invitations;
@ParcelPropertyConverter(RealmListParcelConverter.class) @Getter @Setter RealmList<Submission> submissions;
}
Classes Submission と Invitation はどちらも非常に単純なデータ構造であり、拡張もされていますRealmObject
クラスRealmListParcelConverter
は次のようになります。
public class RealmListParcelConverter implements TypeRangeParcelConverter<RealmList<? extends RealmObject>, RealmList<? extends RealmObject>>
{
private static final int NULL = -1;
@Override
public void toParcel(RealmList<? extends RealmObject> input, Parcel parcel)
{
parcel.writeInt(input == null ? NULL : input.size());
if(input != null)
{
for(RealmObject item : input)
{
parcel.writeParcelable(Parcels.wrap(item), 0);
}
}
}
@Override
public RealmList fromParcel(Parcel parcel)
{
int size = parcel.readInt();
RealmList list = new RealmList();
for(int i = 0; i < size; i++)
{
Parcelable parcelable = parcel.readParcelable(getClass().getClassLoader());
list.add((RealmObject) Parcels.unwrap(parcelable));
}
return list;
}
}
私は何を間違っていますか?
更新 1
招待クラス
@Parcel(implementations = {InvitationRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {Invitation.class})
public class Invitation extends RealmObject
{
@Getter @Setter long accountId;
@Getter @Setter long projectId;
@Getter @Setter boolean declined;
@Getter @Setter String name;
public Invitation() {}
}
そして提出クラス
@Parcel(implementations = {SubmissionRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {Submission.class})
public class Submission extends RealmObject
{
@Getter @Setter @PrimaryKey long id;
@Getter @Setter long creator;
@Getter @Setter float length;
public Submission() {}
}
UPDATE2
これは、使用した場合にのみ発生します
@Parcel(implementations = {ProjectInfoRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {ProjectInfo.class})
シンプルなものを使用する場合
@Parcel
クラッシュで実行時にクラッシュします
org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for io.realm.ProjectInfoRealmProxy
更新 3
このように @Args アノテーション内で区画を使用しています
@Arg(bundler = ParcelerArgsBundler.class) ProjectInfo projectInfo;