2013-03-13 61 views
0

我需要在ListFragment中顯示一些數據。我使用AsyncTask從互聯網下載數據,然後使用Adapter更新數據。如何知道片段是否被重新創建

public void onActivityCreated(Bundle savedInstanceState) { 

    super.onActivityCreated(savedInstanceState); 
    activity = getActivity(); 
    context = activity.getApplicationContext(); 
    res = activity.getResources(); 
    resFactory = createFactory(context); 
    dataFolder = resFactory.getDataFolder(); 
    dataFile = resFactory.getDataFile(); 
    ArrayList list = resFactory.getArrayList(); 
    setListAdapter(resFactory.getAdapter(context, list)); 
    linkToData = resFactory.getDataLink(res); 
    getData(); 

} 

getData我開始AsyncTask

我想getData在一個用戶會話中只能執行一次。因此,如果碎片被分離並再次附着,我不想再次下載數據。但是,如果片段剛剛創建,我希望它下載數據。

對此的簡單回答將從onCreate()調用getData,但後來我得到nullPointer,因爲那時我沒有AsyncTask。所以我需要以某種方式知道片段是否已經被創建,或者它只是被分離,然後再次被連接。

英語不是我的母語。所以我很抱歉如果我的問題不是很理解。

+0

將數據加載後,將其作爲靜態集合保存在某個其他類中,當您到達該片段時,首先檢查數據是否存在或者不加載。 – Triode 2013-03-13 14:16:04

+0

我的數據保存在文件(xml,json和jpeg縮略圖)中。 如果我只是檢查這個文件是否存在,那麼當我的應用程序被啓動的時候會更多,然後它不會更新數據,因爲文件會存在。如果可能的話,我希望我的應用能夠在每次啓動時更新數據。所以這不是我的問題的解決方案。 – user1685095 2013-03-13 15:43:43

+0

這不是我的問題的解決方案,因爲它存儲在用戶會話之間的數據。因此,當應用程序第二次啓動時,數據將存在於xml,json和jpeg文件中,並且不會被更新。 – user1685095 2013-03-13 16:22:15

回答

1
package com.example.gridview; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 

/** 
* @author rajeshcp 
*/ 
public class FrgamentX extends Fragment { 

    private boolean mIsCreated; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 



    @Override 
    public void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     if(!mIsCreated) 
     { 
        mIsCreated = true; 
      //load data 
     } 
    } 
} 

這也是可行的。

相關問題