4 回答
TA贡献1909条经验 获得超7个赞
Navigation.findNavController
依赖于findViewById()
,它仅在您调用后才起作用setContentView()
- 即,实际上将您的视图添加到您的活动中。
TA贡献1856条经验 获得超17个赞
使用适当的控制器来避免 ID 不引用此 Activity 或片段内的视图?
如果您使用的是 Java
在活动中使用
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment)
在片段中使用
NavController navController = NavHostFragment.findNavController(this) // or NavHostFragment.findNavController(view)
如果你正在使用 kotlin
在活动中使用
val navController = findNavController(R.id.nav_host_fragment)
在片段中使用
val navController = findNavController()
TA贡献1836条经验 获得超4个赞
我认为一旦创建了视图我们就必须使用它。尝试将代码放入 onPostCreate 中,效果很好。
注意:它在 onCreateView 中不起作用
override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onPostCreate(savedInstanceState, persistentState)
val navController=findNavController(R.id.navHostFragment)
}我认为一旦创建了视图我们就必须使用它。尝试将代码放入 onPostCreate 中,效果很好。
注意:它在 onCreateView 中不起作用
override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onPostCreate(savedInstanceState, persistentState)
val navController=findNavController(R.id.navHostFragment)
}
TA贡献1875条经验 获得超3个赞
万一有人遇到我遇到的问题。我试图访问导航中的嵌套资源。
代替
val navController = findNavController(R.id.nav_print)
更新至
val navController = findNavController(R.id.nav_host_fragment_content_main)
navController.navigate(R.id.nav_print)
添加回答
举报