Android 在解组父视图SavedState时,还原视图SavedState会引发ClassNotFoundException
我有两个班Android 在解组父视图SavedState时,还原视图SavedState会引发ClassNotFoundException,android,parcelable,savestate,parcel,Android,Parcelable,Savestate,Parcel,我有两个班ParentClass和ChildClass: ParentClass是RelativeLayout的子类,它使用onSaveInstanceState()/onRestoreInstanceState()和以下代码保存状态: @Override protected Parcelable onSaveInstanceState() { SavedState savedState = new SavedState(super.onSaveInstanceState());
ParentClass
和ChildClass
:
ParentClass
是RelativeLayout的子类,它使用onSaveInstanceState()/onRestoreInstanceState()和以下代码保存状态:
@Override
protected Parcelable onSaveInstanceState() {
SavedState savedState = new SavedState(super.onSaveInstanceState());
savedState.someObj = someObj;
savedState.someInt = someInt;
savedState.someEnum = someEnum;
return savedState;
}
@Override
protected void onRestoreInstanceState(Parcelable in) {
if (!(in instanceof SavedState)) {
super.onRestoreInstanceState(in);
return;
}
SavedState savedState = (SavedState) in;
super.onRestoreInstanceState(savedState.getSuperState());
this.someObj = savedState.someObj;
this.someInt = savedState.someInt;
this.someEnum = savedState.someEnum;
}
下面是SavedState
代码:
public static class SavedState extends BaseSavedState {
private SomeObj someObj;
private int someInt;
private SomeEnum someEnum;
public SavedState(Parcelable superState) {
super(superState);
}
public SavedState(Parcel source) {
super(source);
someInt = source.readInt();
someEnum = SomeEnum.values()[source.readInt()];
someObj = source.readParcelable(SomeObj.class.getClassLoader());
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(someInt);
dest.writeInt(someEnum.ordinal());
dest.writeParcelable(someObj, flags);
}
public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}
使您的SavedState类实现可打包
public static class SavedState extends Parcelable {
SavedState
扩展BaseSavedState
它扩展了AbsSavedState
它实现了Parcelable
,所以我认为它不会有帮助!你找到解决办法了吗?谢谢
public static class SavedState extends Parcelable {