【问题标题】:Caused by: java.io.NotSerializableException: android.os.Handler引起:java.io.NotSerializableException: android.os.Handler
【发布时间】:2014-02-05 11:34:28
【问题描述】:

我不断收到这个 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 操作系统版本上一样。

【问题讨论】:

  • 你能提供一些类的代码吗?
  • 能否请您发布包含 my.app.OverviewFragment 的类的代码?

标签: android android-fragments serializable notserializableexception


【解决方案1】:

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

【讨论】:

  • 这就是问题所在,最后我不得不逐课上课,其中一个没有实现可序列化。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可能正在使用旧版 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 2013-07-11
      • 2013-01-03
      • 2013-09-13
      相关资源
      最近更新 更多