在使用<FrameLayout />而不是<NavHostFragment />中的findNavController动态设置导航主机时,可以按照以下步骤进行操作:
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
<FrameLayout
android:id="@+id/nav_host_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
val navHostContainer = findViewById<FrameLayout>(R.id.nav_host_container)
val navHostFragment = NavHostFragment.create(R.navigation.nav_graph)
supportFragmentManager.beginTransaction()
.replace(navHostContainer.id, navHostFragment)
.setPrimaryNavigationFragment(navHostFragment)
.commit()
这样就成功地将<FrameLayout />设置为导航主机,可以通过Navigation组件的其他API来进行导航操作。
需要注意的是,上述代码中的R.navigation.nav_graph
是一个示例,代表你的导航图的资源ID。你需要根据自己的项目需求来替换为实际的导航图资源ID。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云