我之前会问过类似的问题。很抱歉再次提问。
我在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);
上述代码完全正常,直到我们按下标签活动上的后退按钮
按下后退按钮后,它会在上面代码的getActivity()上抛出空指针异常
我猜可能是片段已经与活动分离,因此getActivity()返回null。
我的问题是如何实现上述场景,以便即使按下后退按钮也应该继续进行。任何最佳做法?
我从FragmentPageAdapter返回getItem方法中的Fragment的相同实例。
提前致谢!
答案 0 :(得分:0)
FragmentManager
在mActivity
后不久设置片段的onAttach()
字段,并在null
后不久将其设置为onDetach()
(请参阅source code),所以我的猜测是你试图在片段生命周期中过早或过晚地执行getActivity()
。