用片段替换活动只是将后者叠加在前者之上



当我尝试用片段替换活动时,我的应用程序最终会在活动之上呈现片段:

<!-- 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

最新更新