Error:(27, 64) error: Parceler: Unable to find read/write generator for type android.text.SpannableString for android.text.SpannableString span2
Error:(27, 87) error: Parceler: Unable to find read/write generator for type android.text.SpannableString for android.text.SpannableString span3
Error:(27, 41) error: Parceler: Unable to find read/write generator for type android.text.SpannableString for android.text.SpannableString span1
当我尝试构建项目时,我收到了上述错误。由于我正在使用的类是SpannableString
我知道我需要一些自定义序列化,我相信我已经实现了。有什么想法吗?
请参阅下面的代码:
@Parcel
public class ParcelerTest
{
@ParcelPropertyConverter(SpannableStringParcelConverter.class)
public SpannableString span1;
@ParcelPropertyConverter(SpannableStringParcelConverter.class)
public SpannableString span2;
@ParcelPropertyConverter(SpannableStringParcelConverter.class)
public SpannableString span3;
@ParcelConstructor
public ParcelerTest(SpannableString span1, SpannableString span2, SpannableString span3)
{
this.span1 = span1;
this.span2 = span2;
this.span3 = span3;
}
public class SpannableStringParcelConverter implements ParcelConverter
{
@Override
public void toParcel(Object input, android.os.Parcel parcel)
{
parcel.writeParcelable(Parcels.wrap(parcel), 0);
}
@Override
public Object fromParcel(android.os.Parcel parcel)
{
return Parcels.unwrap(parcel.readBundle(getClass().getClassLoader()));
}
}
}
答案 0 :(得分:1)
啊,这里有几个问题,有些是合法的错误:
以下是您的代码的更新工作版本:
@Parcel
public class ParcelerTest
{
public SpannableString span1;
public SpannableString span2;
public SpannableString span3;
@ParcelConstructor
public ParcelerTest(@ParcelPropertyConverter(SpannableStringParcelConverter.class) SpannableString span1,
@ParcelPropertyConverter(SpannableStringParcelConverter.class) SpannableString span2,
@ParcelPropertyConverter(SpannableStringParcelConverter.class) SpannableString span3)
{
this.span1 = span1;
this.span2 = span2;
this.span3 = span3;
}
public static class SpannableStringParcelConverter implements ParcelConverter<SpannableString>
{
@Override
public void toParcel(SpannableString input, android.os.Parcel parcel)
{
parcel.writeString(input.toString());
}
@Override
public SpannableString fromParcel(android.os.Parcel parcel)
{
return new SpannableString(parcel.readString());
}
}
}
此外,在代码库模型中使用SpannableString
有点奇怪。也许您只能使用普通String
?