【问题标题】:How to set toolbar title from fragment using Navigation UI Component如何使用导航 UI 组件从片段设置工具栏标题
【发布时间】:2020-08-17 01:08:28
【问题描述】:

我有一个带有 Android Studio 中默认布局的工具栏的活动,我可以通过以下方法轻松更改工具栏中的标题:

    Bundle bundle = new Bundle();
    bundle.putString("toolbarTitle", "A new title");

    NavHostFragment
        .findNavController(this)
        .navigate(R.id.action_navigation_conversation_to_placeholder, bundle);

在导航菜单布局中已经为toolbarTitle 实现了安全参数。

但是现在我正在尝试更改通过上述方法打开的片段的标题,例如;

  • MyActivity ->opens-> MyFragment

  • MyFragment 更改标题

我知道如何在不使用导航 UI 组件的情况下更新它,但如果可能的话,我想使用它们。

其他类似的问题仅与我上面已经提供的示例有关,即打开新片段时或建议使用不使用导航 UI 组件的典型方法,均未涵盖此特定场景。

【问题讨论】:

  • 所以当您导航到新的目的地时,您正试图更改工具栏标题?这是一个固定的标题,对于那个目的地来说总是一样的还是更动态的?
  • 这是一个动态标题,要从打开的片段中设置,否则我会直接在导航菜单布局中设置标签
  • 一个可以阐明上述内容的示例是由当前聊天(片段)中的用户列表组成的标题,这些用户可以离开或加入,从而在发生这种情况时更改标题。跨度>

标签: android android-navigation android-titlebar android-components


【解决方案1】:

您可以通过访问活动中的 supportActionBar 来更改标题:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    (requireActivity() as AppCompatActivity).supportActionBar?.title = "Your Title"
}

【讨论】:

    【解决方案2】:

    这似乎是不可能的,只有通过直接执行此操作而不使用导航架构组件来实现此目的的唯一方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多