我有一个包含另一个对象的对象,我想使用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.
我遗失了什么?
答案 0 :(得分:1)
在构建应用时会自动生成课程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'