Android片段没有活动。丢弃安全吗?

时间:2013-04-26 10:40:22

标签: android android-fragments android-actionbar

所以基本上我已经将我的应用程序更新为仅使用tabBar中的活动到SherlockFragments中使用supportActionBar。你想的不是什么大不了的事情,我也是如此。在我的所有测试中,一切都完美无缺。然而,当我发布新版本时,我的用户开始抱怨并报告在调用getSherlockActivity()时片段抛出NPE的大量崩溃。

我已经读过这个问题,这是一个恢复实例状态和片段的问题,这些状态和片段不再附加到任何活动但仍然由于某种原因而运行。我没有找到针对我的问题的特定解决方案(因为我使用actionBar来显示我的标签而不是ViewPager)。

现在我的问题是,如果我可以简单地丢弃这些在调用null时返回getSherlockActivity()的片段?因为它们不附加于任何活动,它们是否也不可见?

如果没有,我该如何解决这个问题?

}我已经在创建它们之前检查已经存在的片段,但这还不够。

请帮助我!

1 个答案:

答案 0 :(得分:0)

您无需丢弃任何内容。所有必要的检查都需要在片段中完成。 你应该尽量避免在调用onAttach()之前使用getSherlockActivity()(因为它在onCreate()之前调用,应该没有问题,但仍然)并且在调用onDetach()之后。

if (isAdded() && !isDetached())

final SherlockActivity a = getSherlockActivity();
if (a != null)

可以正常工作。