4

ZooFragment含む がありViewPagerます。これには、 、、およびのViewPager3 つの子があり、これらの子はそれぞれ、新しい を呼び出すトランザクションを要求できます。LionFragmentLeopardFragmentTigerFragmentZooFragment

ZooFragment呼び出されたzooA(引数付き) が初期化されると、コンテンツ内の 3 つの子すべてが表示ViewPagerされます。任意の子フラグメントから、ユーザー touch は新しいZooFragment呼び出されたものを呼び出しますzooB(もちろん、異なる引数を使用して)。

子フラグメントから へのトランザクション アクションに基づくZooFragment:

1. を使用するtransaction.replace()と、zooBが空白になり、3 つの子すべてにzooBコンテンツが表示されず、空になります。で、ナビゲーションからハードキーをzooB押すと、空になります。BackzooA

2. を使用するとtransaction.add()zooB空白にならず、Backボタンを押すと空白にzooAなります。

クラスではZooFragment、 にデータをロードしますが、 のすべての子フラグメントが空onCreateView()になる理由は何ですか?ViewPager

4

1 に答える 1

0

ViewPager のフラグメントを置き換えないでください。ViewPager と同じレイアウトに含まれる他のものに (トランザクションを使用して) 表示するだけで、そのコンテナーは FrameLayout である必要があります。また、いつ、どのフラグメントが表示されるかを知るためのメカニズムも実装します。次に、フラグメントの更新に応答するユーティリティから新しいデータを要求します。ViewPager 内のすべてのフラグメントの場合、onDestroyed が呼び出されるとは思いません。ViewPager 内のフラグメントは固定されているため、アプリケーション マネージャーが破棄するまでコンテンツは移動しません。アダプター内のフラグメントを置き換えようとする代わりに、フラグメントの別のセットを提供して、notifyDataSet を変更するか、それを利用してください。ビューページャータブの現在のフラグメントの上に別のフラグメントを表示する FrameLayout の。

動作する私のソリューションがあります:

デフォルトのスワイプが無効になっている ViewPager とともにフラグメント レベルで適用されるスワイプ ジェスチャ

于 2013-11-20T12:58:38.280 に答える