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起始代码都放在您Fragment的 'sonCreate()中以实现所需的行为。希望这可以帮助。

于 2013-02-18T11:50:59.423 回答