所以基本上我已经将我的应用程序更新为仅使用tabBar
中的活动到SherlockFragments
中使用supportActionBar
。你想的不是什么大不了的事情,我也是如此。在我的所有测试中,一切都完美无缺。然而,当我发布新版本时,我的用户开始抱怨并报告在调用getSherlockActivity()
时片段抛出NPE的大量崩溃。
我已经读过这个问题,这是一个恢复实例状态和片段的问题,这些状态和片段不再附加到任何活动但仍然由于某种原因而运行。我没有找到针对我的问题的特定解决方案(因为我使用actionBar来显示我的标签而不是ViewPager
)。
现在我的问题是,如果我可以简单地丢弃这些在调用null
时返回getSherlockActivity()
的片段?因为它们不附加于任何活动,它们是否也不可见?
如果没有,我该如何解决这个问题?
}我已经在创建它们之前检查已经存在的片段,但这还不够。请帮助我!
答案 0 :(得分:0)
您无需丢弃任何内容。所有必要的检查都需要在片段中完成。 你应该尽量避免在调用onAttach()之前使用getSherlockActivity()(因为它在onCreate()之前调用,应该没有问题,但仍然)并且在调用onDetach()之后。
if (isAdded() && !isDetached())
或
final SherlockActivity a = getSherlockActivity();
if (a != null)
可以正常工作。