1

私のデータベースからfragmentpageradapterでホストされているフラグメントにデータをロードするカスタムカーソルローダーを実装しようとしています。私は、これが(新しいネストされたフラグメントを介して)fragmentpageradapterを実装するフラグメントを持つアクティビティ(SherlockFragmentActivityを拡張)を持っています。fragmentpageradapter の下の各フラグメントは、表示するデータを生成するカスタム カーソル ローダーを実装します。onActivityCreated でローダーを開始し、onResume で再起動し、onDestroy で破棄します。私がページ1にいるとしましょう。ページャーは自動的にページ2も開始します(より流動的なトランザクションのデフォルトの動作)問題は、ページ2に表示されるアイテムを(アクションバーから)追加し、ページ1にいる場合です。ローダーのページにスワイプすると、データが更新されません。

何かご意見は ?ありがとう !

4

1 に答える 1

0

LoaderManager と FragmentManager が連携して処理するため、ローダーを停止する必要はありません。そうは言っても、それがあなたの問題の原因であるかどうかはわかりません。先月、ローダーに関する多数のバグを発見しました。ただし、それらのほとんどは更新されていないローダーに関連しています。

ローダーに既存のバグがあることは知っていますが、それを追跡する時間がありません。そのための推奨される回避策を次に示します。これを試してみてください。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Start or restart the loader.  Note: this is a work-around to an Android
    // bug with loaders where they are not always properly activated with life-cycle
    // changes in the activity/fragment.
    Loader<Object> loader = getLoaderManager().getLoader((int) mId);
    if (loader != null && ! loader.isReset()) {
        mStatusLoader = (StatusItemLoader) getLoaderManager().restartLoader(
                                                    (int) mId, null, mLoadListener);
    } else {
        mStatusLoader = (StatusItemLoader) getLoaderManager().initLoader(
                                                    (int) mId, null, mLoadListener);
    }
}
于 2012-12-21T12:48:00.353 に答える