【问题标题】:getActivity() inside Fragment sometimes crashFragment 中的 getActivity() 有时会崩溃
【发布时间】:2013-11-12 22:55:50
【问题描述】:

当我需要片段中的上下文时,我使用 getActivity(),但有时这个代码崩溃给我 NullPointer,我相信是因为 android 继续在片段中执行代码但活动已经死亡。

所以,要修复它,我需要始终使用:

final Activity activity = getActivity();
if(activity != null) {
   //TODO: Use activity here
}

但是如果 Activity 不为空,它总是会验证, 有没有其他方法可以做到不崩溃?

【问题讨论】:

  • 托管 Fragment 的 Activity 永远不会消亡,没有宿主 Activity 就无法显示 Fragment。您是在将 Fragment 添加到 Activity 之前还是在将其从 Activity 中删除之后尝试在 Fragment 中执行某些操作?
  • 不,但是我在 Fragment 中使用 AsyncTasks(在 onCreateView 中执行),在我的 AsyncTask 的 OnPostExecute 中我使用 getActivity,在这种情况下给我 NullPointer,我相信这是因为一个新的活动占据了前台,并且Android 从我的第一个活动中执行 AsyncTask 的 onPostExecute,但已经丢失了 de 引用。
  • 哦,所以你有一个不属于 UI 的无头片段?

标签: android android-fragments


【解决方案1】:

你可能是对的。当您的 AsyncTask 到达 onPostExecute 时,Activity 可能已经结束。

当 Fragment 从 Activity 分离时,您需要 cancel() AsyncTask。这将确保不会调用 onPostExecute

【讨论】:

  • 谢谢!我没有想过。
猜你喜欢
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2018-05-28
相关资源
最近更新 更多