我已经使用片段与片段活动进行通信,并且此片段活动传递其引用以处理片段中的点击事件,如下所示。
Bundle tempBundle = new Bundle();
tempBundle.putParcelable("Interface", (Parcelable) new ClickHandler());
哪里
class ClickHandler implements ItemClickListener, Parcelable
{
}
这很好用,当我浏览应用程序时,问题就出现了,只有当我退出应用程序时(通过按HOME键)并且几分钟后我返回从最近使用的应用程序返回应用程序(介意)回到应用程序立即不会导致异常)。
是否有人遇到过这样的问题
答案 0 :(得分:0)
我也有这个问题,我花了很多时间来弄清楚错误发生的位置。我所做的是遵循这个question的公认答案中的建议。
我做的第一步是搜寻应用程序正在从发生崩溃的类相关的savedInstanceState
恢复数据的实例。我只是按照我提供的链接中的建议设置了那些savedInstanceState
包的类加载器。但它第一次没有工作。崩溃仍然发生,但它已更改其错误日志堆栈跟踪,以便我的代码中没有指出任何行。然后我在自定义parcelable对象中查找可能的空值,并将它们设置为非空值。如果您在代码中的某些位置检查null,这可能会很麻烦。你只需要咬紧牙关就行了,因为很明显,Android不喜欢parcelables中的空值。
完成这两项后,它仍然不适合我。所以我看得更远,我注意到我实际上正在从适配器中的捆绑中恢复实例。有些适配器会这样做,例如FragmentStatePagerAdapter
。我只需设置该捆绑包的类加载器,然后就可以了。