gpt4 book ai didi

Android fragment getActivity() = null

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:10 28 4
gpt4 key购买 nike

我在我的应用程序中使用 fragment 。使用它们时最常见的问题是使用 getActivity() 时的 NPE。我知道我们可以通过每次检查 getActivity() != null 或检查 fragment isAdded() 来解决它。

在我的一门类(class)中,我在 60 多个地方获取了 Activity 的上下文。检查 getActivity() 是否不为 null 或 fragment 是否仍被添加到所有地方的 Activity 中会使代码变得丑陋、更大且不可维护。还有其他方法可以处理吗?当它从 Activity 中移除时,甚至有可能销毁 fragment (并停止它在被移除时一直在做的任何工作)吗?

Also Is this way a suggested one?

最佳答案

根据我的经验,大多数 getActivity() 返回 null 的情况都发生在异步回调中。

例如,您的 fragment 触发一个 AsyncTask,然后在后台作业完成之前被移除,然后当后台作业完成并在 onPostExecute() 中调用 getActivity() 时,它将得到一个 null,因为该 fragment 已经脱离 Activity 。

我的解决方案:

1.在每个异步回调开始时检查getActivity()==null,如果是这样就中止该方法。

2.在onDetach()中取消异步作业。

而且我认为这是比在 onAttach() 中保存 Activity 实例更好的解决方案,因为既然您的 fragment 已被删除,为什么还要费心去做回调中剩下的所有工作(在大多数情况下是 UI 代码)?

关于Android fragment getActivity() = null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com