You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用View Binding时获取NavController?

View Binding 场景下获取NavController的方案

你通过View Binding拿到NavHostFragment实例后,无需再通过ID查找,直接从实例中提取NavController即可:

Kotlin 实现代码

// 先将binding获取的fragment实例强转为NavHostFragment
val navHostFragment = binding.navHostFragment as NavHostFragment
// 直接获取对应的NavController
val navController = navHostFragment.findNavController()

Java 实现代码

// 先将binding获取的fragment实例强转为NavHostFragment
NavHostFragment navHostFragment = (NavHostFragment) binding.navHostFragment;
// 获取NavController
NavController navController = NavHostFragment.findNavController(navHostFragment);

注意事项

  • 要确保布局中对应fragment标签的android:name属性值为androidx.navigation.fragment.NavHostFragment,避免强转报错
  • Activity中调用需要放在setContentView(binding.root)之后,Fragment中调用需要放在onViewCreated生命周期中,避免空指针
  • 该方案和你之前用ID查找的逻辑本质一致,原生API通过ID查找NavController时,内部也是先找到NavHostFragment实例再提取控制器,你已经拿到实例可以直接跳过ID查找步骤

内容的提问来源于stack exchange,提问作者Real Tech Hacks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:39:01