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ます。

getData1つのユーザーセッション内で1回だけ実行したい。そのため、フラグメントを切り離してから再度アタッチした場合、データを再度ダウンロードしたくありません。ただし、フラグメントが作成されたばかりの場合は、データをダウンロードする必要があります。

それに対する簡単な答えはgetDataからの呼び出し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 に答える