创建Loader时不兼容的类型

时间:2016-11-11 12:17:44

标签: android asynctaskloader

我对装载机有一些问题。 我有Fragment,他实现了LoaderManager.LoaderCallbacks。 当我执行onCreateLoader时,会发生错误不兼容的类型。 (错误的上下文) 我的代码示例使用“getActivity()”或“getContext()”。如何解决错误?感谢。

片段

<header class="pt100 pb100 parallax-window-2" data-image-src="background.jpg">

装载机

public class FitnessDataFragment extends Fragment implements LoaderManager.LoaderCallbacks<List<AllFitnessDataModel>> {
    private Loader<List<AllFitnessDataModel>> loader;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        loader = getActivity().getSupportLoaderManager().initLoader(LOADER_ID, getArguments(), this);
    }

    @Override
    public Loader<List<AllFitnessDataModel>> onCreateLoader(int id, Bundle args) {
        return new AsyncTracksLoader(getActivity(),args);
    }

导入片段

public class AsyncTracksLoader extends AsyncTaskLoader<List<AllFitnessDataModel>> {
private List<AllFitnessDataModel> dataModelList = new ArrayList<>();
private int typeReminder;

public AsyncTracksLoader(Context context, Bundle args) {
    super(context);
    if (args != null) {
        typeReminder = args.getInt(ARG_SECTION_NUMBER);
    }
}


@Override
protected void onStartLoading() {
    super.onStartLoading();
    if(dataModelList!=null){
        deliverResult(dataModelList);
    }else {
        forceLoad();
    }
}


@Override
public List<AllFitnessDataModel> loadInBackground() {
    //do something
    return dataModelList;
}


@Override
public void deliverResult(List<AllFitnessDataModel> data) {
    dataModelList = data;
    super.deliverResult(data);
}
}

2 个答案:

答案 0 :(得分:2)

片段有自己的加载器管理器 - 尝试拨打getLoaderManager()而不是getActivity().getSupportLoaderManager()

另外,请确保您在使用android.appandroid.support.v4.app LoaderManagerLoaderManager.LoaderCallbacks等方面保持一致。

答案 1 :(得分:0)

还有一件事要确保当你编写“工具......”并弹出建议时,请确保根据实施装载程序的方式选择正确的版本。它有两个版本。一个是支持一个,一个是正常支持。

相关问题