2

我知道以前有人问过类似类型的问题。不好意思再问。
我在标签 FragmentActivity 中有一个片段。在onActivityCreated的片段中,我必须在每个修复间隔之后安排一个任务。

Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
   getActivity().runOnUiThread(new Runnable() {
            @Override
    public void run() {
        new fetchDataInBackground(ctx).execute();           //async task
    }
   });
}
}, 0, 20000);

上面的代码工作得很好,直到我们在tab activity上按下后退按钮。
一旦按下后退按钮,它就会在上述代码的 getActivity() 上引发空指针异常。
我猜可能是片段已与活动分离,因此 getActivity() 返回 null。我的问题是如何实现上述场景,以便即使按下后退按钮,该过程也应该继续。有什么最佳实践吗?
我正在从 FragmentPageAdapter 的 getItem 方法中返回相同的 Fragment 实例。

提前致谢!

4

1 回答 1

0

FragmentManager sets the fragment's mActivity field shortly after onAttach() and sets it to null shortly after onDetach() (see the source code), so my guess is that you are trying to execute getActivity() either too early or too late in the fragment lifecycle.

于 2013-09-18T14:09:22.977 回答