0

我需要在 ListFragment 中显示一些数据。我正在使用 AsyncTask 从 Internet 下载数据,然后使用 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在一个用户会话中执行一次。因此,如果片段被分离然后再次附加,我不想再次下载数据。但是,如果刚刚创建片段,我希望它下载数据。

对此的简单答案是调用getDatafrom onCreate(),但随后我得到 nullPointer,因为那时我没有AsyncTask. 所以我需要以某种方式知道片段是刚刚创建还是刚刚分离然后再次附加。

英语不是我的母语。所以我很抱歉如果我的问题不是很容易理解。

4

1 回答 1

2
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
        }
    }
}

这也将起作用。

于 2013-03-13T14:19:40.527 回答