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