Using Parceler with android

Roman picture Roman · Jul 30, 2015 · Viewed 7.4k times · Source

I'm trying Parceler library for android. So far I've had only one same error, using plain sample from the documentation.

@Parcel(Parcel.Serialization.BEAN)
public class Example {
  private String name;
  private int age;

  public String getName() { return name; }
  public void setName(String name) { this.name = name; }

  public int getAge() { return age; }
  public void setAge(int age) { this.age = age; }
}

And

Parcelable p = Parcels.wrap(new Example());

Which crashes with

07-30 12:31:46.439: E/AndroidRuntime(4945): FATAL EXCEPTION: main
07-30 12:31:46.439: E/AndroidRuntime(4945): Process: com.sample.app.android.debug, PID: 4945
07-30 12:31:46.439: E/AndroidRuntime(4945):  org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable  class for com.sample.app.android.entity.Example, verify that  your class is configured properly and that the Parcelable class  com.sample.app.android.entity.Example$$Parcelable is generated  by Parceler.
07-30 12:31:46.439: E/AndroidRuntime(4945):     at  org.parceler.Parcels$ParcelCodeRepository.get(Parcels.java:201)
07-30 12:31:46.439: E/AndroidRuntime(4945):     at org.parceler.Parcels.wrap(Parcels.java:85)
07-30 12:31:46.439: E/AndroidRuntime(4945):     at org.parceler.Parcels.wrap(Parcels.java:69)

What do I miss?

Answer

John Ericksen picture John Ericksen · Aug 4, 2015

It sounds like the annotation processor isn't running or is misconfigured. I'd recommend using the annotationProcessor scope if you're using a Gradle build along with separate scopes for the processor and api libraries:

compile 'org.parceler:parceler-api:1.1.9'
annotationProcessor 'org.parceler:parceler:1.1.9'

See the Getting Parceler section of the website for the latest.