Navigation组件toolbar未根据目的地label更新、始终显示应用名称怎么办
工具栏标题无法随导航目的地动态更新的解决方案
问题本质
你没有将Toolbar和NavController建立绑定关系,Toolbar默认读取Manifest中application节点配置的android:label="@string/app_name"作为固定标题,自然不会跟随导航切换更新显示内容。
具体实现
- 确认项目中已在宿主Activity布局放置Toolbar、且配置了承载导航图的NavHostFragment
- 在宿主Activity的
onCreate方法中完成绑定即可,代码参考:// ViewBinding示例 val binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // 获取当前NavHost对应的NavController val navController = findNavController(R.id.nav_host_fragment) // 若使用自定义Toolbar作为系统ActionBar: setSupportActionBar(binding.toolbar) setupActionBarWithNavController(navController) // 若不使用系统ActionBar,直接关联Toolbar即可: // binding.toolbar.setupWithNavController(navController) - 绑定完成后,Navigation组件会自动监听导航目的地切换,把导航图中配置的对应Fragment的
android:label值同步为Toolbar标题,不需要手动写导航监听逻辑。
- 补充提示:当前导航图里的label配置的是Fragment类名(如
LoginFragment、WelcomeFragment),可以替换为面向用户的短文本字符串,实际展示效果会更符合产品要求。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

