2016-09-25 2 views
0

J'ai un objet qui contient un autre objet et je voudrais envoyer d'un fragment à l'autre, en utilisant parcelable, comme:Parceler POJO à Parcelable échoue avec ParcelerRuntimeException

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

La structure de POJO du 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 
      } 
     } 
    } 

donc à Parcels.wrap(MySubObj) Je reçois cette erreur:

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. 

Il me manque quelque chose?

Répondre

1

La classe com.mypakage.MyObj$MySubObj$$Parcelable est généré automatiquement lors de la construction de votre application. Si ce n'est pas trouvé, il peut y avoir deux raisons différentes pour cela: Il n'a jamais existé en premier lieu ou a été retiré dans la construction par Proguard.

Donc, assurez-vous de configurer correctement Proguard

# Parcel library 
-keep interface org.parceler.Parcel 
-keep @org.parceler.Parcel class * { *; } 
-keep class **$$Parcelable { *; } 

Et ne pas oublier les dépendances pour le processeur d'annotation

compile 'org.parceler:parceler-api:1.1.5' 
apt 'org.parceler:parceler:1.1.5' 
+0

si je annonce apt 'org.parceler: parceler: 1.1.5' Je reçois 'erreur: (32, 0) Impossible de trouver la méthode apt() pour les arguments [org.parceler: parceler: 1.1.5] sur l'objet de type org.gradle.api.internal.artifacts.dsl.dependencies .DefaultDependencyHandler.' –

+1

https://bitbucket.org/hvisser/andro id-apt – tynn