3

我有一个带有 FragmentStatePagerAdapter 的 ViewPager。在 ViewPager 片段的 onViewCreated 方法中,我调用 LoadManager 的 initLoader 方法来启动这样的 AsyncTaskLoader

    public void onViewCreated(final View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        list = (ListView) view.findViewById(R.id.list);
        list.setEmptyView(view.findViewById(R.id.empty));
        getLoaderManager().initLoader(0, null, this).forceLoad();
    }

该片段当然实现了LoaderCallbacks,下面找到相关方法的实现:

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

    logger.debug("Created loader");

    return new AsyncTaskLoader<List<String>>(getActivity()) {

        @Override
        public List<String> loadInBackground() {
             return getResults();
        }

    };
}

@Override
public void onLoadFinished(Loader<List<String>> loader,
        List<String> data) {
    logger.debug("loader finished");
    if (data != null) {
        adapter = new CustomListAdapter(getActivity());
        list.setAdapter(adapter);
        adapter.addAll(data);
    }
}

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

}

我遇到的问题是,对于第一页,一切都按预期工作,但对于后续页面,我看到 onCreateLoader 调用已完成,调用了 AsyncTaskLoader 的 loadInBackground 方法,但未调用 onLoadFinished 因此现在结果交付。

我正在使用 Android 支持库。

有谁知道我做错了什么?

4

1 回答 1

0

所以我刚刚遇到了这个问题,看来你的做法和我完全一样。看起来如果您的加载程序都使用相同的 id(在您的示例 0 中),如果一个页面加载时间比另一个页面加载时间长,它们将在分页时重新启动并相互踩踏。希望这仍然与遇到此问题的人有关!

于 2016-07-11T03:53:33.400 回答