Android NavGraph中android:label设置工具栏标题无效问题求助
先确认Toolbar与NavController已正确关联
必须在Activity中完成两者的绑定,否则NavGraph的label无法同步到Toolbar。如果用系统默认ActionBar:val navController = findNavController(R.id.nav_host_fragment) val appBarConfiguration = AppBarConfiguration(navController.graph) setupActionBarWithNavController(navController, appBarConfiguration)若使用自定义Toolbar:
val toolbar = findViewById<Toolbar>(R.id.toolbar) setSupportActionBar(toolbar) val navController = findNavController(R.id.nav_host_fragment) val appBarConfiguration = AppBarConfiguration(navController.graph) toolbar.setupWithNavController(navController, appBarConfiguration)检查NavGraph的label配置及Fragment内的标题设置
首先确认NavGraph中目标Fragment的android:label拼写正确(你示例里写的tile可能是title的笔误),配置示例:<fragment android:id="@+id/targetFragment" android:name="com.yourpackage.TargetFragment" android:label="sample title" />另外,若Fragment代码中手动设置了标题(比如
activity?.title = "xxx"或supportActionBar?.title = "xxx"),会覆盖NavGraph的配置,需删除这类代码。验证AppBarConfiguration的顶级目的地配置
若项目包含抽屉导航或底部导航,AppBarConfiguration需要指定所有顶级目的地,否则可能导致标题不更新。示例:val appBarConfiguration = AppBarConfiguration( setOf(R.id.homeFragment, R.id.settingsFragment) // 替换为你的顶级目的地ID ) setupActionBarWithNavController(navController, appBarConfiguration)临时修复:手动触发标题刷新
若以上步骤都无效,可在Fragment的onViewCreated中手动同步NavGraph的label:override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) navController.currentDestination?.label?.let { activity?.title = it } }
内容的提问来源于stack exchange,提问作者Stephen Nedumpalli
相关产品推荐
相关产品推荐

