如果您使用两个选项卡,则必须为每个选项卡分别维护两个片段,即 Tab1 的 FragmentA 和 tab2 的 FragmentB 和 FragmentA 的 xmls , FragmentB 应该具有 FragmentTransaction 的 FrameLayout。
FragmentA 的 xml 即 frag_a.xml :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentA_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
和
FragmentB 的 xml 即 frag_b.xml :
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentB_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
对于 Tab1,始终使用 R.id.fragmentA_container 执行事务。即从第一个选项卡中的第一个片段(片段A)中替换另一个片段。像下面的代码
在片段A中:
Fragment fragment = new YourFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager().popBackStack();
fragment.setArguments(null);
ft.replace(R.id.fragmentA_container, fragment);
ft.commit();
对于 Tab2,始终使用 R.id.fragmentB_container 执行事务。即从第二个选项卡中的 secondfragment(FragmentB) 中替换另一个片段。像下面的代码
在片段B中:
Fragment fragment = new YourFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
getSupportFragmentManager().popBackStack();
fragment.setArguments(null);
ft.replace(R.id.fragmentB_container, fragment);
ft.commit();