2

我已经使用 Fragment 与 Fragment Activity 进行通信,并且这个 Fragment Activity 传递它的引用来处理 Fragment 中的点击事件,如下所示。

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

在哪里

class ClickHandler implements ItemClickListener, Parcelable
{
 }

这工作得很好,当我浏览应用程序时,只有当我退出应用程序(按 HOME 键)和几分钟后我从最近使用的应用程序返回到应用程序时才导致问题(注意回来应用程序立即不会导致异常)。

有没有人遇到过这样的问题

4

1 回答 1

0

我也遇到了这个问题,我花了很多时间才弄清楚错误发生在哪里。我所做的是遵循这个问题的已接受答案中的建议。

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

做了这两个之后,它仍然对我不起作用。所以我看得更远,我注意到我实际上是从适配器中的捆绑包中恢复实例。一些适配器会这样做,例如,FragmentStatePagerAdapter. 我只是设置了那个包的类加载器,然后它就为我解决了。

于 2013-05-30T05:48:19.390 回答