1

私は、私を困惑させている何かを持っています。3 つのフラグメント (左右にスワイプするため) を含む ViewPager を持つフラグメント (フラグメント A) があります。したがって、別のフラグメント内でonBackPressed()メソッドでgetFragmentManager().popBackStack()呼び出しを実行すると、フラグメント A が再び表示され (サブフラグメントの ViewPager を使用)、これが目的の状態になります。ただし、Fragment A または ViewPager 内には、Fragment A/ViewPager が再び表示されることを示すメソッドはありません。

Fragment ライフサイクル ( http://developer.android.com/guide/components/fragments.html ) で参照されているどのフラグメント メソッドも、「フラグメントがバック スタックからレイアウトを返す」場合に呼び出す必要がないか、いずれかのメソッドOnPageChangeListener 内で呼び出されます (はい、フラグメント A の onCreateView 内で viewPager.setOnPageChangeListener(this) を呼び出します)。

私がどこを見ることができるかについての考え?

4

1 に答える 1

0

レイアウトに追加されたアプリがあり、ViewPager後で別のフラグメントに置き換えられ、変更がトランザクション バック スタックに追加されます。Logページャの各ライフサイクル メソッドにステートメントがあります。[戻る] ボタンを押してページャーをレイアウトに戻すと、ページャーに対してlogcat呼び出された次のメソッドが出力に表示されます: onCreateView()onActivityCreated()、。フラグメントがバック スタックに入ると、そのビューは破棄されますが、フラグメント オブジェクトは破棄されないことに注意してください。したがって、フラグメントがバック スタックから戻るときに、 への呼び出しはありません。onStart()onResume()onCreate()

この動作は、フラグメント ガイドのライフサイクル図と一致しています。onResume()ページャーが表示されていることを示すために への呼び出しを使用できるはずです。ページャーのライフサイクル メソッドにデバッグ出力を追加して、出力を確認することをお勧めします。間違っていると思われる場合は、質問の投稿に追加してください。また、使用しているフラグメント トランザクション メソッドも示してください。またはhide()の代わりに使用している場合は、ライフサイクル イベントが異なり、 を使用する必要がある場合があります。remove()replace()onHiddenChanged()

于 2015-07-02T19:19:03.047 に答える