2013-03-09 82 views
0

在我最近的項目中,我使用v4支持庫作爲FragmentTabHost。fragmenttabhost重新創建標籤時切換

當選項卡和片段初始化時,創建並呈現綁定到該標記的片段。它的生命週期

的onCreate ==> onCreateView ==> onActivityCreated

我推翻了onActivityCreated方法,因爲我需要從API獲取一些數據。

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    Lg.i("on TagDiscoverListFragment activity created"); 

    new GetDiscoversTask().execute(); 

} 

但每次我切換到該選項卡時,該aysnTask再次執行,因爲當開關發生時,片段來電:

onCreateView ==> onActivityCreated

我不想數據再次刷新。

當然,我可以擴展FragmentTabHost並覆蓋方法doTabChange()並更改片段的Attach/Detach操作以隱藏/查看。

那麼,還有其他解決方案嗎?

回答

1

你應該重寫「的onSaveInstanceState(包outState)」在您的片段 和存儲數據,從API到「outState」

當標籤切換時,onCreateView將被調用,在這一點上,你可以檢索來自「savedInstanceState」的api數據(第三個參數)