1

我不断收到这个 Serializable 错误。我的两个类都实现了它。我似乎找不到问题。我上过所有的课,仍然找不到原因。它仅发生在较旧的 Android 版本 2.3 及更低版本上。似乎可以在 4.0+ 上找到?

更新

对了,这个问题又回来了。

这次我得到

java.lang.RuntimeException: Parcelable 遇到 IOException 写入可序列化对象 (name = ....datastructures.model.PortfolioAccount)

PorfolioAccount 包含所有 GSON 对象和变量。

它是由这个引起的

Caused by: java.io.NotSerializableException: android.os.Handler

我检查了所有需要可序列化的类,但仍然找不到任何东西。就像以前它只发生在旧的 Android 操作系统版本上一样。

4

3 回答 3

5

我相信您的对象具有不可序列化的属性。确保你的类属性都实现了 Serializable 接口。如果这不是问题,我建议实现 Parcelable 接口。

于 2014-01-16T15:29:13.780 回答
1

我正在挖掘代码并设法找到一个没有实现它的类!问题是我在 2 个类之间共享这些数据,而 Logcat 抛出了关于已实现可序列化的类的错误,而不是相反!

于 2014-01-20T15:01:57.747 回答
0

可能您正在使用旧版本 Android 不支持的异常处理或方法调用。

让我举个例子:

所以一些新的 Android 4 功能没有在 Android 2.3 中实现,例如ImageView.setLayerType. 为了避免运行时错误,只需:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
   setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

这种方法也应该与异常处理一起使用:

} catch (NetworkOnMainThreadException nomte) {
   // log this exception
} catch (SocketTimeoutException socketTimeoutException) {
   // log this exception
}

NetworkOnMainThreadException未在 Android 2.3 中实现,因此当加载类java.lang.VerifyError时(而不是之前!) ,运行时发生异常。

于 2014-01-16T14:13:51.210 回答