【发布时间】:2021-10-30 05:43:24
【问题描述】:
我有一个导航抽屉,它使用从 Android Studio 中默认的“导航抽屉活动”模板创建的片段。在一个fragment A里面,我想再打开一个fragment B。所以fragment B必须替换fragment A。我在google上看到,应该使用FrameLayout来动态改变当前显示的fragment。
<FrameLayout
android:id="@+id/nav_host_frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
</FrameLayout>
要更改片段,当我单击片段中要替换的按钮时,我正在使用下面的代码
NewCalendarEvent newEventFrag = new NewCalendarEvent();
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_frame_layout, newEventFrag)
.addToBackStack(null)
.commit();
目前,当我单击按钮时,会显示两个片段。是因为我同时使用 fragment 和 frameLayout 吗?我做错了什么?
【问题讨论】:
标签: java android replace fragment navigation-drawer