Parceler POJO для Parcelable завершается с ошибкой ParcelerRuntimeException

У меня есть объект, который содержит другой объект, и я хотел бы отправить его из одного фрагмента в другой, используя посылки, например:

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putParcelable(mykey, Parcels.wrap(MySubObj));
fragment.setArguments(bundle);

Структура POJO MyObj:

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.

Я что-то упускаю?


person Vasile Doe    schedule 25.09.2016    source источник


Ответы (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'
person tynn    schedule 25.09.2016
comment
если я подхожу org.parceler:parceler:1.1.5 , я получаю Error:(32, 0) Could not find method apt() for arguments [org.parceler:parceler:1.1.5] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. - person Vasile Doe; 25.09.2016