برای پروژم نیاز داشتم که دو تا فرگمنت رو داخل یک صفحه نمایش بدم. فرگمنت سمت راست به صورتی بود که بعد از کلیک کردن باید با فرگمنت دیگری جابجا میشد برای این کار اول دوتا تگ <fragment> داخل فایل main_layout.xml پیاده کردم ولی بعد از عمل replace متوجه شدم این تابع به درستی کار نمیکنه بعد از چندی جستجو متوجه شدم برای فرگمنت های پویا که تعویض میشن نباید مستقیما تگ فرگمنت رو تعریف کرد به جاش از تگ FrameLayout استفاده کردم . یه مثال سریع رو میتونید مشاهده کنید :
فایل main_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/frag1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="fill_parent"></FrameLayout>
<FrameLayout
android:id="@+id/frag2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="fill_parent">
</FrameLayout>
</LinearLayout>
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
TaskListFragment taskListFragment = new TaskListFragment();
CircleFragment circleFragment = new CircleFragment();
fragmentTransaction.add(R.id.frag1, circleFragment);
fragmentTransaction.add(R.id.frag2, taskListFragment);
fragmentTransaction.commit();
حالا به هر صورت با هر فرگمنتی که خواستین میتونین fragmentTransaction.replace رو انجام بدین.