首页 > 解决方案 > 使用 JetPack 导航架构组件设置工具栏的副标题

问题描述

我正在使用 JetPack 导航架构组件,我可以在导航图中设置工具栏的标题android:label="@string/event_lists_toolbar_title"。我也想设置字幕,但找不到这样做的方法,除了通过我的片段中的代码:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        (activity as? AppCompatActivity)?.supportActionBar?.subtitle = getString(R.string.my_subtitle)

        // ...
}

但是字幕会保留下来,我必须在再次导航到另一个屏幕后重新设置它。我可以在onPause()函数中执行此操作,也可以在我的 Activity (NavController.OnDestinationChangedListener) 中执行此操作:

override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) {

        // resets subtitle of Toolbar
        if (destination.id != R.id.fragment_with_subtitle) {
            supportActionBar?.subtitle = ""
        }
}

没有更好的解决方案吗?不支持开箱即用的导航?

标签: androidandroid-jetpackandroid-jetpack-navigation

解决方案


推荐阅读