2013-03-13 58 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 
     } 
    } 
} 

这也是可行的。

相关问题