0

私はこのフラグメントを持っています:

public class ResultFragment extends Fragment implement LoaderCallbacks{

public static ResultFragment newInstance(Bundle args) {
ResultFragment fragment = new ResultFragment();
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    getActivity().getSupportLoaderManager().initLoader(0, null, this);

}

@Override
public Loader<EstateSearch> onCreateLoader(int id, Bundle args) {

        return new RESTLoader(getActivity(), "http://etc");

}

@Override
public void onLoadFinished(Loader<EstateSearch> loader, EstateSearch es) {

}

@Override
public void onLoaderReset(Loader<EstateSearch> loader) {

}

}

AsyncTaskLoader は次のようになります。

public class RESTLoader は AsyncTaskLoader を拡張します {

private String searchUrl; 

public RESTLoader(Context context, String searchUrl) {
    super(context);
    this.searchUrl = searchUrl; 


}

@Override
public EstateSearch loadInBackground() {


      EstateSearch es = null;       

      try {


    Network Stuff


    } catch (Exception e) {

    }

      return es; 
}

@Override
public void deliverResult(EstateSearch es) {


    super.deliverResult(es);
}

@Override
protected void onStartLoading() {
    forceLoad();
}

@Override
protected void onStopLoading() {

    cancelLoad();
}

@Override
protected void onReset() {
    super.onReset();        
    onStopLoading();     
}
}

アプリが不可解な (少なくとも私にとっては) エラーでクラッシュします。

http://i46.tinypic.com/260fw43.png

いくつかの Log.ds を入れることで、AsyncTaskLoader のコンストラクターが呼び出されていないことがわかりました。ローダーの init() をフラグメント ライフサイクルの後半に移動しようとしました。それが重要な場合、フラグメントはViewPager内にあります。AsyncTaskLoader は、Activity から呼び出されたときに正常に動作します。

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

0

さて、かなり恥ずかしい間違い: フラグメントがアタッチされているアクティビティに、ID 0 を持つ別のローダーが既にありました:-/

于 2013-02-08T14:04:33.800 に答える