- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 2 个类 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];
}
};
}
没什么特别的,当我直接使用这个 View 时,一切都按预期工作(保存\恢复状态)。
然后我有 ChildClass
扩展 ParentClass
它还使用完全相同的代码保存它的状态,只是我只保存 long 和 int 字段。
当应用程序尝试通过使用 CREATOR
的 Parcel
调用它的 SavedState
构造函数来恢复 ChildClass
View 状态时使用以下堆栈崩溃:
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.company.app.ParentClass$SavedState
1 android.os.Parcel.readParcelableCreator Parcel.java, line 2320
2 android.os.Parcel.readParcelable Parcel.java, line 2270
3 android.view.AbsSavedState.<init> AbsSavedState.java, line 57
4 android.view.View$BaseSavedState.<init> View.java, line 20128
5 com.company.app.ChildClass$SavedState.<init> ChildClass.java, line 151
6 com.company.app.ChildClass$SavedState$1.a ChildClass.java, line 166
7 com.company.app.ChildClass$SavedState$1.createFromParcel ChildClass.java, line 164
最佳答案
让你的SavedState类实现Parcelable
public static class SavedState extends Parcelable {
关于android - 解码父 View SavedState 时恢复 View SavedState 抛出 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625545/
我认为,我的问题是我有一个纵向模式的图库和一个横向模式的 ListView 。他们都使用相同的适配器并在相同的 View 中。但是,在方向更改时, ListView 会尝试从图库中读取信息并且程序会崩
我有 2 个类 ParentClass 和 ChildClass: ParentClass 是 RelativeLayout 的子类,它使用以下代码使用 onSaveInstanceState()/o
我正在努力寻找有关 stateSaver/savedState 字典如何用于 Windows 安装程序的文档,在安装和卸载覆盖中,有人可以提供帮助。 在我的安装程序 CustomAction 中,我一
我需要使用 AndroidViewModel带有应用程序上下文和 SavedStateHandle .我已经将它与应用程序上下文一起使用,但我无法添加 SavedStateHandle给它。 这就是我
我正在关注谷歌的这个 Codelab,但它无法保存数据。这是链接 https://codelabs.developers.google.com/codelabs/android-lifecycles/
我有一个扩展 CoordinatorLayout 的自定义 View 我正在重写 onRestoreInstanceState 和 onSaveInstanceState 使用类扩展 BaseSave
java.lang.IllegalArgumentException:错误的状态类,需要查看状态但收到的是 class android.widget.CompoundButton$SavedState
我已按照 Google Codelab 中有关保存状态模块的说明进行操作。 我的gradle依赖是: implementation "androidx.lifecycle:lifecycle-view
我正在使用 Maps API 创建一个简单的 Android 应用程序,但我遇到了一个我无法解决的奇怪错误。它通常发生在我旋转我的设备时。我正在使用谷歌服务 8.4.0 4-23 15:39:47.5
我正在使用 android studio 开发我的 android full c++ 游戏,我使用了来自 google samples (native-activity) 的代码。一切正常。但是当我点
我在 Crashlytics 上经常看到以下错误: Caused by java.lang.ClassCastException: android.view.AbsSavedState$1 canno
我在 Android 崩溃报告中看到以下错误: android.os.BadParcelableException: ClassNotFoundException when unmarshalling
我在 Android 崩溃报告中看到以下错误: android.os.BadParcelableException: ClassNotFoundException when unmarshalling
我的 android 应用程序的生产 apk 中出现以下异常已有 1 天了: java.lang.RuntimeException: Unable to start activity Componen
当我的应用程序从后台转到前台时,它经常崩溃。 Scenerio:假设我正在玩任何游戏并且我的应用程序在最近的列表中并且玩完后,如果我选择应用程序,它会崩溃并显示错误。我的应用程序中没有工具栏,只有我使
我是一名优秀的程序员,十分优秀!