2013-02-18 80 views
0

我有一些标签在我的主要活动,每个选项卡是一个片段。fragmen'ts onCreate被称为每当我切换到它在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; 
} 

的下载任务填充列表视图。现在,每当我从这个标签来回切换时,任务都会被反复调用,但不应该像创建片段时那样调用onCreated。我想只是第一次调用这个任务,然后用填充的listview保存这个片段。 我检查了一下,我看到onDestroy没有被调用...所以发生了什么?

回答

2

书面文档中为Fragment,如果你对你的FragmentsetRetainInstance(true)

onAttach(活动)和onActivityCreated(束)仍将被称为

所以把两者setRetainInstance()通话并将AsyncTask开始的代码添加到您的FragmentonCreate()以实现所需的行为。希望这可以帮助。

+1

我有setRetainInstance(false);但它似乎没有工作.. – Phate 2013-02-18 15:30:19

+0

@Phate,为什么是假?使用相同的代码,但把它放在片段的onCreate()而不是onActivityCreated(),这就是我想说的。 – Egor 2013-02-18 15:39:37

+0

我不明白这是正确的谢谢:) – Phate 2013-02-19 10:23:56

相关问题