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 サポート ライブラリを使用しています。
誰かが私が間違っていることを知っていますか?