Uma*_*Uma 13 android nullpointerexception android-fragments android-activity
我在我的应用程序中使用片段.使用它们时非常常见的问题是使用getActivity()时的NPE.我知道我们可以通过检查是否getActivity() != null每一次或检查片段来解决它isAdded().
在我的一个课程中,我在60多个地方获得了活动的背景.检查getActivity()是否为null或者片段是否仍然添加到所有位置的活动中会使代码变得丑陋,更大且不可维护.有没有其他方法来处理这个?当从活动中删除片段时,甚至可以销毁片段(并在删除时停止它所做的任何工作)?
han*_*and 11
根据我的经验,大多数返回null的getActivity()都是在异步回调中.
例如,您的片段触发AsyncTask,然后在后台作业完成之前被删除,然后当后台作业完成并在onPostExecute()中调用getActivity()时,它将获得null,因为片段已经从活动.
我的解决方案
1.在每个异步回调的开头检查getActivity()== null,如果是这种情况,则只是中止该方法.
2.在onDetach()中取消异步作业.
我认为这是比在onAttach()中保存活动实例更好的解决方案,因为自从你的片段被移除后,为什么还要麻烦地完成回调中剩下的所有工作(在大多数情况下是UI代码)?
| 归档时间: |
|
| 查看次数: |
13563 次 |
| 最近记录: |