当我尝试用片段替换活动时,我的应用程序最终会在活动之上呈现片段:
<!-- activity.xml -->
<CoordinatorLayout
android:id="@+id/coord_layout">
... stuff ...
</CoordinatorLayout>
这是片段:
<!-- fragment.xml -->
<LinearLayout
android:id="@+id/frag_layout">
... stuff ...
</LinearLayout>
这是我的主要课程:
private void selectDrawerItem(MenuItem menuItem) {
Fragment f = fragment.newInstance();
FragmentManager fragManager = getSupportFragmentManager();
fragManager.beginTransaction().replace(R.id.coord_layout, f).commit();
}
我做错了什么?
FragmentTransaction
只处理(动态创建的(Fragment
s。容器内用于保存Fragment
ViewGroup
的任何View
都不受replace()
的影响。也就是说,Fragment
将添加到它们之上。如果要完全替换现有布局,则应将activity.xml
中的CoordinatorLayout
替换为空ViewGroup
(通常是FrameLayout
(,并将CoordinatorLayout
用作可在启动时加载的另一个Fragment
的布局,然后可以相应地将其替换为FragmentTransaction
。