In my custom view I have:
@Override
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
return new SavedState(superState, mSomeBoolean);
}
@Override
public void onRestoreInstanceState(Parcelable state) {
final SavedState savedState = (SavedState) state;
super.onRestoreInstanceState(savedState.getSuperState());
this.mSomeBoolean = savedState.someBoolean;
}
My SavedState
implements BaseSavedState
, and the problem is that it appears that writeToParcel(Parcel out, int flags)
does not get called, but, strangely enough, the state is correctly saved.
I do not understand why it happens and, more so, how the someBoolean
state is saved despite not being written to parcel
. Any help or direction would help.
Update:
Here is the SavedState
implementation:
class SavedState extends View.BaseSavedState {
boolean someBoolean;
SavedState(Parcelable superState, boolean someBoolean){
super(superState);
this.someBoolean = someBoolean;
}
private SavedState(Parcel in) {
super(in);
this.someBoolean = (in.readInt() != 0);
}
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeInt(someBoolean ? 1 : 0);
}
public static final Parcelable.Creator<SavedState> CREATOR
= new Parcelable.Creator<SavedState>() {
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}