i have a base class 'TestImage' which has a concrete implementation instance variable 'urlImageState' of type 'State'
public class TestImage implements Parcelable {
private State urlImageState, state;
private TestImage(Parcel in) {
urlImageState = in.readParcelable(UrlImageState.class.getClassLoader());
}
public static final Creator<TestImage> CREATOR = new Creator<TestImage>() {
@Override
public TestImage createFromParcel(Parcel in) {
return new TestImage(in);
}
@Override
public TestImage[] newArray(int size) {
return new TestImage[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(urlImageState, flags);
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
UrlImageState class:
public class UrlImageState implements Parcelable, State {
private TestImage image;
private OwnerContract.ViewModel ownerViewModel;
public UrlImageState(OwnerContract.ViewModel viewModel, TestImage image) {
this.ownerViewModel = viewModel;
this.image = image;
}
private UrlImageState(Parcel in) {
}
public static final Creator<UrlImageState> CREATOR = new Creator<UrlImageState>() {
@Override
public UrlImageState createFromParcel(Parcel in) {
return new UrlImageState(in);
}
@Override
public UrlImageState[] newArray(int size) {
return new UrlImageState[size];
}
};
@Override
public void loadImage() {
Log.e("", "UrlImageState");
this.ownerViewModel.loadImageUrl(image.getUrl());
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}
'State' interface
public interface State extends Parcelable {
void loadImage();
}
inside 'onSaveInstanceState' method TestImage state is of type 'UrlImageState' as the log reveals.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.e(debugTag, image.getState() + " onSaveInstanceState");
outState.putParcelable("image", image);
}
The problem is inside onCreate i am not getting the state(null pointer exception). Something is going very wrong with my parcelable implementation. Can anybody help??