2

6つのフラグメントでを作成しようとしていますViewPagerが、2番目のフラグメントから5番目のフラグメントにのみ表示するデータが含まれており、最初のフラグメントと最後のフラグメントを使用してデータをリロードし、位置を2番目のフラグメントに再度設定します。全体的なフローは次のようになります。

1番目(リロードして2番目に戻る)<-2番目のフラグメント<->5番目のフラグメント->6番目のフラグメント(1番目と同じ)

私が試したのは、このように1番目のフラグメントと6番目のフラグメントからコールバックを作成することです。

public static class callbackFragmentLoading implements callbackFragmentLoad {

    @Override
    public void onLoading() {
        mPager.setAdapter(mAdapter);
        mPager.setCurrentItem(2,false);
    }

}

そして、onActivityCreatedでonLoading関数を呼び出すことができるように、コールバックをフラグメントコンストラクターに渡しました。しかし、私はそれを行うたびに、アプリケーションが強制的に閉じられ、logcatが表示されます

保留中のトランザクションを実行するための再帰的なエントリ

これを行う方法はありますか?またはそれを行うための私の方法は間違っていますか?

ありがとうございました

4

1 に答える 1

2

これを行う方法はありますか?またはそれを行うための私の方法は間違っていますか?

Fragmentsの間にコールバックをいじることViewPagerは、おそらくそれほど良い考えではありません。代わりに私はこのようにします:

  • からのデータ(のようにLoader)をロードしないでください。代わりに、ロードさせてください(そして、からのメソッドを介してデータを取得します)。FragmentsViewPagerFragmentActivityFragmentsActivity
  • 2つのロードフラグメント(position0と)は、それらのメソッドで親に対するリロードアクション(再起動など5)を呼び出します。onResumeActivityLoader
  • この時点で、Activityはデータをロード/リロードし、それが終了するとViewPager、を正しい項目(1または4)に設定します。
  • データフラグメントのonResumeメソッドでは、フラグメントのデータを更新します(ここでは、更新コードを複製する必要があるため、何らかのシグナリングシステムを使用する必要がありますonCreateView(一部のフラグメントは、遠くにあるとビューが破壊される可能性があります)現在の表示位置は別として))。

内部データフラグメントについて多くのことを知らないので、基本的なスケルトンサンプルを作成しました(アクティビティにデータをロードせずに)。

于 2012-12-19T07:50:29.827 に答える