调用getSherlockActivity()时获取null

时间:2013-01-30 12:54:59

标签: android android-asynctask fragment

我在调用null

时收到getSherlockActivity();

这是因为活动是finished or killed

在我的案例中,我无法想出一个避免的解决方案:

这个SherlockActivity有一个带有4个标签的ViewPager。

adapter = new PagerAdapter((SherlockFragmentActivity) this, mViewPager);
adapter.addTab(actionBar.newTab(), Frag1.class, bundle);
adapter.addTab(actionBar.newTab(), Frag2.class, bundle);
adapter.addTab(actionBar.newTab(), Frag3.class, bundle);
adapter.addTab(actionBar.newTab(), Frag4.class, bundle);

启动此活动时,所有选项卡(片段)都有一个使用getSherlockActivity()doInBackground的AsyncTask。

因此,对于所有AsyncTasks来说,它需要大约3-5秒,同时如果我按下并完成此活动,最后一个片段 Frag4 尚未启动其AsyncTask(可能排队等待尝试getSherlockActivity()并崩溃。

我可以使用 Try-Catch块来解决这个问题,但有没有办法告诉片段如果父Activity已经死了,请停止所有后台任务等。 类似的东西?

谢谢

1 个答案:

答案 0 :(得分:0)

只需在Activity onDestroy()回调中调用每个片段的AsyncTask.cancel()。这样,asynctasks不会根据被破坏的Activity上下文执行任何操作。