0

メイン アクティビティにはいくつかのタブがあり、各タブはフラグメントです。

今、特定のフラグメントで私はこのようなことをします:

public class MyFragment extends Fragment{

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setRetainInstance(true);

    ... initialization

    DownloadTask dvt = new DownloadTask();
    dvt.execute(new Void[]{});
    dvt = null;
}

ダウンロード タスクはリストビューに入力します。さて、このタブを行ったり来たりするたびに、タスクが何度も呼び出されますが、onCreated はフラグメントの作成時にのみ呼び出されるはずなので、そうすべきではありません。このタスクを初めて呼び出してから、フラグメントをそのまま保存し、リストビューを作成したいと思います。確認したところ、 onDestroy が呼び出されていないことがわかりました...では、何が起こっているのでしょうか?

4

1 に答える 1

2

Fragmentのドキュメントに記載されているようsetRetainInstance(true)Fragment

onAttach(Activity)およびonActivityCreated(Bundle)は引き続き呼び出されます

setRetainInstance()したがって、呼び出しとAsyncTask開始コードの両方を自分のに配置FragmentonCreate()て、目的の動作を実現します。お役に立てれば。

于 2013-02-18T11:50:59.423 に答える