我有一个包含另一个对象的对象,我想使用parcelable从一个片段发送到另一个片段,例如:
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putParcelable(mykey, Parcels.wrap(MySubObj));
fragment.setArguments(bundle);
MyObj的POJO的结构:
class MyObj {
String value;
MySubObj value2;
//geters & seters
@Parcel
class MySubObj {
String name;
int age;
ActivityDomain acdomani;
//geters & seters
@Parcel
public class ActivityDomain {
String name;
String field;
int countEmpl;
//geters & seters
}
}
}
因此,在
Parcels.wrap(MySubObj)
处出现此错误:org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for com.mypakage.MyObj$MySubObj , verify that your class is configured properly and that the Parcelable class com.mypakage.MyObj$MySubObj$$Parcelable is generated by Parceler.
我想念什么吗?
最佳答案
com.mypakage.MyObj$MySubObj$$Parcelable
类在构建应用程序时自动生成。如果找不到,则可能有两个不同的原因:它从不存在或被Proguard删除。
因此,请确保正确配置Proguard
# Parcel library
-keep interface org.parceler.Parcel
-keep @org.parceler.Parcel class * { *; }
-keep class **$$Parcelable { *; }
并且不要忘了注释处理器的依赖性
compile 'org.parceler:parceler-api:1.1.5'
apt 'org.parceler:parceler:1.1.5'
关于java - 将Parceler POJO转换为Parcelable失败,并发生ParcelerRuntimeException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39683769/