我有一个带有 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 支持库。
有谁知道我做错了什么?