每次我在tabhost中切换到它时,都会调用fragmen'ts onCreate

时间:2013-02-18 11:45:34

标签: android android-fragments android-tabhost

我的主要活动中有一些标签,每个标签都是一个片段。

现在,在某个片段中,我做了类似的事情:

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

下载任务填充了listview。现在,每次我从这个标签中来回反复调用任务,但它不应该因为onCreated应该在片段创建时被调用。我想第一次调用此任务,然后使用填充的listview保存片段。 我检查过,我发现onDestroy没有被调用......所以发生了什么?

1 个答案:

答案 0 :(得分:2)

正如Fragment文档中所述,如果您在setRetainInstance(true)上致电Fragment

  

onAttach(Activity)和onActivityCreated(Bundle)仍将被调用

因此,将setRetainInstance()调用和AsyncTask起始代码放入Fragment的{​​{1}}以实现所需的行为。希望这会有所帮助。