我想像使用hostFragment一样使用Fragment。它包含
<fragment
android:id="@+id/hostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
有什么办法吗?
你可以这样做。 我使用以下代码做到了:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:animateLayoutChanges="true"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar_camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:layout_constraintTop_toTopOf="parent"
app:titleTextColor="@color/colorTextTitles" />
</com.google.android.material.appbar.AppBarLayout>
<fragment
android:id="@+id/cameraController"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_cameras" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
和你的片段中的代码(我正在使用 Kotlin(:
val navController = requireActivity().findNavController(R.id.your_fragment_id)
val toolbar = requireActivity().findViewById<Toolbar>(R.id.toolbar)
rootDestination = AppBarConfiguration(setOf(R.id.myFirstNavFragment))
NavigationUI.setupWithNavController(toolbar, navController, rootDestination)
希望这段代码能帮助你!