私はJava Beanクラスを持っており、いくつかのフィールドに@Parcel(Parcel.Serialization.BEAN)
Gsonの注釈が付けられ@SerializedName
ています:
Question.java:
@Parcel(Parcel.Serialization.BEAN)
public class Question {
private Integer id;
private String title;
private String description;
private User user;
@SerializedName("other_model_id")
private Integer otherModelId,
@SerializedName("created_at")
private Date createdAt;
// ----- Getters and setters -----
}
を開始するときにShowQuestionActivity
、Parceledquestion
オブジェクトをそれに渡します (question
すべてのフィールドが設定されています)。
Intent intent = new Intent(context, ShowQuestionActivity.class);
intent.putExtra("extra_question", Parcels.wrap(question));
startActivity(intent);
で、オブジェクトから「 extra_question ShowQuestionActivity
」を取得します。intent
Question question = Parcels.unwrap(intent.getParcelableExtra(Constants.EXTRA_QUESTION));
しかし、Parceler はタイトルと説明 (文字列) のみを返します... 他のすべてのフィールドはnullです。
デバッガーでオブジェクトをラップしParcels.wrap(question)
てアンラップするとParcels.unwrap(question)
完全に機能しますが、インテントを通過した後、その値を「失う」ように見えますが、問題が見つかりません...
私のパーセラーのセットアップは次のとおりです。
モジュールbuild.gradle :
dependencies {
compile 'org.parceler:parceler-api:1.1.4'
apt 'org.parceler:parceler:1.1.4'
}
そして、私のプロジェクトのbuild.gradleで:
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}