2013-02-18 81 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

相關問題