LogCat:
原因:java.lang.InstantiationException: Can't instantiate abstract class uk.ivanc.archimvp.model.entities.Campaigns
detailMessage:Failed to invoke public uk.ivanc.archimvp.model.entities.Campaigns() with no args
Campaigns.java
@AutoValue
public abstract class Campaigns implements Parcelable{
public abstract String remaining_days_formatted();
public abstract String end_time_formatted();
public abstract String badge_url();
public abstract String newsletter_urlkey();
public abstract String id_campaign();
public abstract String navigation_url();
public abstract Object promotion_line();
public abstract ImmutableList<Videos> videos();
public abstract String start_time_formatted();
public abstract String subline();
public abstract String banner_url();
public abstract Object banner_url_original();
public abstract String message_line_style();
public abstract String end_time();
public abstract String description();
public abstract String name();
public abstract Images images();
public abstract String start_time();
public abstract String url_key();
public abstract String message_line();
public abstract Object themeday();
public static Builder builder() {
return new AutoValue_Campaigns.Builder();
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder remaining_days_formatted(String value);
public abstract Builder end_time_formatted(String value);
public abstract Builder badge_url(String value);
public abstract Builder newsletter_urlkey(String value);
public abstract Builder id_campaign(String value);
public abstract Builder navigation_url(String value);
public abstract Builder promotion_line(Object value);
public abstract Builder videos(ImmutableList<Videos> value);
public abstract Builder start_time_formatted(String value);
public abstract Builder subline(String value);
public abstract Builder banner_url(String value);
public abstract Builder banner_url_original(Object value);
public abstract Builder message_line_style(String value);
public abstract Builder end_time(String value);
public abstract Builder description(String value);
public abstract Builder name(String value);
public abstract Builder images(Images value);
public abstract Builder start_time(String value);
public abstract Builder url_key(String value);
public abstract Builder message_line(String value);
public abstract Builder themeday(Object value);
public abstract Campaigns build();
}
}
代码生成异常(调用
onError
)public void getCampaigns() {
WestwingApplication application = WestwingApplication.get(campaignsMvpView.getContext());
WestwingService westwingService = application.getWestwingService();
subscription = westwingService.getCampaigns()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(application.defaultSubscribeScheduler())
.subscribe(new Observer<List<Campaigns>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<Campaigns> campaigns) {
campaignsMvpView.showCampaigns(campaigns);
}
});
}
}
Dependencies.gradle
dependencies = [
appCompat: "com.android.support:appcompat-v7:$supportLibraryVersion",
cardView: "com.android.support:cardview-v7:$supportLibraryVersion",
recyclerView: "com.android.support:recyclerview-v7:$supportLibraryVersion",
retrofit: "com.squareup.retrofit2:retrofit:$retrofitVersion",
retrofitConverterGson: "com.squareup.retrofit2:converter-gson:$retrofitVersion",
retrofitAdapterRxJava: "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion",
picasso: 'com.squareup.picasso:picasso:2.5.2',
rxAndroid: 'io.reactivex:rxandroid:1.1.0',
circleImageView: 'de.hdodenhof:circleimageview:1.3.0',
jUnit: 'junit:junit:4.12',
mockito: 'org.mockito:mockito-core:1.10.19',
robolectric: 'org.robolectric:robolectric:3.0',
autoparcel: 'frankiesardo:auto-parcel:1.0.1',
aptautoparcel: 'frankiesardo:auto-parcel:1.0.1',
palette: "com.android.support:palette-v7:$supportLibraryVersion",
design: "com.android.support:design:$supportLibraryVersion"
]
最佳答案
将此方法添加到模型中
public static TypeAdapter<Campaigns> typeAdapter(Gson gson) {
return new AutoValue_Campaigns.GsonTypeAdapter(gson);}