坏的可分辨异常

时间:2012-12-01 07:03:39

标签: android fragment android-fragmentactivity badparcelableexception

我已经使用片段与片段活动进行通信,并且此片段活动传递其引用以处理片段中的点击事件,如下所示。

 Bundle tempBundle = new Bundle();
tempBundle.putParcelable("Interface", (Parcelable) new ClickHandler());

哪里

class ClickHandler implements ItemClickListener, Parcelable
{
 }

这很好用,当我浏览应用程序时,问题就出现了,只有当我退出应用程序时(通过按HOME键)并且几分钟后我返回从最近使用的应用程序返回应用程序(介意)回到应用程序立即不会导致异常)。

是否有人遇到过这样的问题

1 个答案:

答案 0 :(得分:0)

我也有这个问题,我花了很多时间来弄清楚错误发生的位置。我所做的是遵循这个question的公认答案中的建议。

我做的第一步是搜寻应用程序正在从发生崩溃的类相关的savedInstanceState恢复数据的实例。我只是按照我提供的链接中的建议设置了那些savedInstanceState包的类加载器。但它第一次没有工作。崩溃仍然发生,但它已更改其错误日志堆栈跟踪,以便我的代码中没有指出任何行。然后我在自定义parcelable对象中查找可能的空值,并将它们设置为非空值。如果您在代码中的某些位置检查null,这可能会很麻烦。你只需要咬紧牙关就行了,因为很明显,Android不喜欢parcelables中的空值。

完成这两项后,它仍然不适合我。所以我看得更远,我注意到我实际上正在从适配器中的捆绑中恢复实例。有些适配器会这样做,例如FragmentStatePagerAdapter。我只需设置该捆绑包的类加载器,然后就可以了。