首页 > 解决方案 > 将顶部操作添加到底部导航活动应用程序?

问题描述

我想在某些选项卡中将操作添加到我的应用程序的顶部栏。

我从底部导航活动模板开始。这是正在运行的模板应用程序的屏幕截图,我希望在其中圈出按钮。 应用模板

在我的应用程序中,最后一个选项卡是帐户。我想在应用程序标题栏的右侧添加一个按钮,但仅在帐户启动时。(其他片段可能有不同的按钮,但大多数都没有。)

在我的帐户片段中onCreateView,我尝试访问activity?.actionBar但它为空。我还尝试向 XML 添加工具栏,但这只是添加了第二个栏。而且,当然,我查看了Add 和 handle actions,但是我的应用程序中存在两个栏让我很难弄清楚它对我的要求是什么。

如何在此处添加项目?我更喜欢用 XML 来做,但如果必须的话,我会以编程的方式来做。

标签: android

解决方案


正如@ianhanniballake 指出的那样,有一些特定于片段和应用栏的文档:Working with the AppBar

我不想把链接放在这里,所以这就是我的阅读方式(如果我有任何错误,请发表评论,我会纠正它):

  1. 在 res/menu 中创建一个新的菜单资源。是的,如果您已经有一个用于底部菜单,则另一个。(这是我在任何地方都找不到的记录:您不添加到现有菜单中,而是创建一个新菜单。)我打电话给我account_menu的。
  2. 调用setHasOptionsMenu(true)你的 FragmentonCreate()
  3. onCreateOptionsMenu在你的片段中实现。
  4. 处理对片段中菜单项的点击。

您添加到片段的代码将如下所示:

    override fun onCreate(savedInstanceState: Bundle?) {
        setHasOptionsMenu(true)
        super.onCreate(savedInstanceState)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.account_menu, menu);
        super.onCreateOptionsMenu(menu, inflater)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.action_settings -> {
                // navigate to settings screen
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }

推荐阅读