首页 > 解决方案 > 我不明白我们在 Activitiy 中获取 navController 的方式

问题描述

我搜索了很多,大多数人使用这行代码在Activity中获取navController:

val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.fragmentContainerView_mainActivity)
                as NavHostFragment
navController = navHostFragment.navController

我想知道,为什么我们不能只使用findViewByIdActivity 的方法来获取 FragmentContainerView。

标签: androidandroid-fragmentsandroid-activityandroid-navigationandroid-jetpack-navigation

解决方案


如果您正在寻找的东西是FragmentContainerView那么您当然可以使用findViewById,但如果您想访问,NavController那么您必须使用库公开的方法。

// from fragments
Fragment.findNavController()
// from views
View.findNavController()
// from activity
Activity.findNavController(viewId: Int)
// from NavHostFragment
navHostFragment.navController

推荐阅读