【发布时间】: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 的无头片段?