下の図に示すように、3つのフラグメントがあります。 .xmlファイルを使用してLinearLayoutにこれら3つのフラグメントをすべて追加しました。ランチャーアクティビティの開始時にsetContentViewを使用してその.xmlレイアウトをロードします。
私はfragment2にいくつかのコントロールを持っています。いずれかをクリックすると、FragmentTransactionとcommitメソッドを使用してプログラムで フラグメント4がロードされます。この断片は画面に追加されますが、問題は画面全体に断片的に追加された断片4です。何が問題なの?
注:どの項目でもf2をクリックすると、f2のみを新しいフラグメントf4に置き換えます。私はf1、f2、f3をxmlレイアウトファイルに追加し、プログラムで新しいフラグメントf4を追加したことに留意してください。 フラグメントをプログラムで置き換えます。
答えて
フラグメントをプログラマチックに追加、削除、置換する必要があります。したがって、F-1、F-2、F-3のフラグメントをFrameLayoutなどのコンテナに置き換えることをお勧めします。
基本的に<fragment/>
要素をF-1にする代わりに、<FrameLayout/>
要素にします。そして、あなたはFragmentActivityののonCreateでフラグメントのトランザクションを実行します。
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
を今、あなたはF-1、F-2、F-3のためにこれを行っていると仮定します。 OnClickListener
:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
私はそこから事例を取ることができるように参考になっていますか? – MobiDev
私は私の答えを編集しました。これはあなたの問題を痛感するはずです。 – CodePrimate
ありがとうございます。私が理解しているところでは、フラグメントをXMLレイアウトに直接入れないでください。断片要素の代わりにframelayoutsを置きます。 f4をf2に置き換えると、f2のフレームが使用されます。私は正しい?あなたはそれをチェックするための参照サイトを与えることができます。 – MobiDev
XMLのフラグメントのプレースホルダとしてFrameLayoutだけを保持します。 OnCreateでframelayoutのフラグメントをロードします。フラグメントのOnClickは、特定のFrameLayoutのIDをFragment4で置き換えます。
- 1. リサイクラーアダプターのフラグメントを置き換えます
- 2. ViewPagerでフラグメントを置き換える
- 3. フラグメントを別のフラグメントに置き換えます
- 4. あるフラグメントを別のフラグメントに置き換えます
- 5. "Kill"フラグメントを置き換えた後
- 6. フラグメントをビューに置き換える
- 7. ViewPager内でフラグメントを別のフラグメントに置き換える
- 8. TabLayoutでフラグメントを新しいフラグメントに置き換える
- 9. フラグメントをフラグメントに置き換えてフラグメントをナビゲートすると便利です
- 10. 置き換え用プログラム
- 11. ViewPagerでフラグメントを別のものに置き換えます。
- 12. AndroidのViewPagerで現在のフラグメントを置き換えます。
- 13. 動的に置き換えるフラグメント
- 14. 単一のフラグメントを複数のフラグメントに置き換える
- 15. はonDestroyのないフラグメントを置き換えます
- 16. ViewPagerでフラグメントを置き換える - NPEを取得する
- 17. フラグメントを置き換えるのではなく、別のフラグメントをオーバーラップする
- 18. アンドロイドのフラグメントは2番目のフラグメントに置き換えられます
- 19. プログラムでPDFのテキストを置き換えます
- 20. フラグメントをフラグメントに置き換えると、何も起こりません。
- 21. アンドロイドでフラグメントを置き換えるのに変な方法
- 22. naviagtion drawerのフラグメントでコンテンツを置き換える際の問題
- 23. c#プレースホルダをtext.htmlに置き換えて置き換えます。
- 24. ホバーテキストを置き換えて画像に置き換えます
- 25. TabActivityをフラグメントに置き換える:クラスを拡張するエラー
- 26. リストビューのフラグメントがテキストビューのフラグメントに置き換えられていません
- 27. ViewPagerのフラグメントを置き換えるとIllegalStateExceptionが発生する
- 28. viewpager内のフラグメントを置き換えることができません
- 29. ビューページ内のフラグメントを置き換えることができません
- 30. アンドロイドのフラグメントを置き換えることができません2.2
それでは、f2をf4に置き換えてください。最後に4つの断片を一緒に見せていますか? –