Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在解组父视图SavedState时,还原视图SavedState会引发ClassNotFoundException_Android_Parcelable_Savestate_Parcel - Fatal编程技术网

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 {