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);

上記のコードは、タブ アクティビティの上で戻るボタンを押すまでは問題なく動作します。
戻るボタンが押されると、上記のコードの getActivity() で null ポインター例外がスローされます。
フラグメントがアクティビティから切り離されている可能性があるため、getActivity() が null を返している可能性があります。私の質問は、上記のシナリオを達成する方法です。そのため、戻るボタンが押されてもプロセスが続行されます。ベストプラクティスはありますか?
FragmentPageAdapter から getItem メソッドで Fragment の同じインスタンスを返しています。

前もって感謝します!

4

1 に答える 1

0

FragmentManagerフラグメントのmActivityフィールドを直後にonAttach()設定し、null直後に設定しますonDetach()ソースコードを参照)。したがって、フラグメントのライフサイクルで実行しようとしているのがgetActivity()早すぎるか遅すぎると思います。

于 2013-09-18T14:09:22.977 に答える