java - AndroidRuntime: java.lang.RuntimeException: Parcelable遇到IOException写入可序列化对象
问题描述
错误报告如下:
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: FATAL EXCEPTION: main
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: Process: com.android.settings, PID: 12975
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.android.settings.accessibility.ToggleColorInversionPreferenceFragment$3)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:2116)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1886)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeArrayMapInternal(Parcel.java:978)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1629)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Bundle.writeToParcel(Bundle.java:1303)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeBundle(Parcel.java:1047)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.app.FragmentState.writeToParcel(FragmentState.java:120)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeTypedObject(Parcel.java:1740)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeTypedArray(Parcel.java:1720)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.app.FragmentManagerState.writeToParcel(FragmentManager.java:619)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeParcelable(Parcel.java:1907)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1813)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeArrayMapInternal(Parcel.java:978)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1629)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Bundle.writeToParcel(Bundle.java:1303)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4604)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:938)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Looper.loop(Looper.java:233)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8049)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: Caused by: java.io.NotSerializableException: com.android.settings.accessibility.ToggleColorInversionPreferenceFragment
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:2111)
01-12 06:22:27.481 1000 12975 12975 E AndroidRuntime: ... 23 more
问题是 Bean 什么都没有。所有 putInt() 和 getInt() 都是基于 android 系统的类。
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
...
@Retention(RetentionPolicy.SOURCE)
public @interface State {
int OFF = 0;
int ON = 1;
}
...
final boolean enabled = Settings.Secure.getInt(context.getContentResolver(),
settingsSecureKey, State.OFF) == State.ON;
...
Settings.Secure.putInt(getContentResolver(), ENABLED, checked ? ON : OFF);
并且错误报告没有提供发生此错误的实际行号。我对此很困惑。希望有人回复我:)
解决方案
推荐阅读
- r - R - 正则表达式以提取包含关键字的括号之间的文本
- ios - ScrollView 与 NavigationLink 向后滑动手势冲突
- c# - 通过实现接口的类型列表在运行时转换接口以在运行时创建类
- python - sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 尝试写入只读数据库
- c# - SharpZipLib : 如何使用 FastZip 将单个文件压缩为单个 zip 文件
- python-3.x - 为什么我会收到“TypeError: unsupported operand type(s) for -: 'str' and 'str'” 错误?
- vuejs3 - Vue 3 中的一页上的多个图表
- android - 为什么智能手机在网络变化期间一直连接到服务器
- c# - 自定义控件未设置为内容宽度
- ios - 如何在 Azure DevOps 中安装 net6 的 iOS 工作负载?