如何在安卓中设置菜单标题

3
我将尝试动态设置菜单的标题。
通过以下方式检索并设置它:
ItemView menuTitle = ((ItemView) findViewById(R.id.menu_filter));
menuTitle.setTitle("TITLE_HERE");

只要在onOptionsItemSelected(MenuItem item)方法中,它就可以正常工作。
我无法找到一种方法来从onPrepareOptionsMenuonCreateOptionsMenu方法中设置它,因为findViewById返回null(即使在填充菜单后)。
奇怪的是,文档中似乎没有关于实现这个的任何内容,而且谷歌搜索也没有找到解决这个看似简单问题的太多信息。
4个回答

5

我可能只是犯了一个错误,没有意识到菜单中有一个名为findItem的函数...

menu.findItem(R.id.MENU_TITLE).setTitle("MY TITLE");

3

要动态设置菜单标题,您需要在onCreateOptionsMenu中执行以下操作:

public boolean onCreateOptionsMenu(Menu menu) 
{
      menu.add(Menu.NONE, MyActivity.MENU_ID, 0, "Your Title").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return (true);
}

当条件发生变化时(例如,当您的标题需要更改时),请调用。
invalidateOptionsMenu();

根据您的活动,它将调用onCreateOptionsMenu并设置新标题。

这似乎只是在操作栏中添加了另一个按钮,而没有更改标题。 - user2884265

2

只需使用:

        getSupportActionBar().setTitle("YOUR TITLE HERE");

onCreate 方法中,在初始化 UI 或 ViewBinding 或 DataBinding 后。


1
这对我来说非常完美,简单而实用的解决方案。谢谢你。 - Soy César Mora

1
我正在将菜单标题从onPrepareOptionMenu更改为以下代码类似的内容。这是来自我的片段的代码,我认为这也适用于活动。
 override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.menu_profile, menu)
    super.onCreateOptionsMenu(menu, inflater)
}

override fun onPrepareOptionsMenu(menu: Menu) {
    super.onPrepareOptionsMenu(menu)
    if (count == 1) {
        menu.findItem(R.id.screen_count).title = "1/3"
    } else {
        menu.findItem(R.id.screen_count).title = "xyz/3"
    }
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.ic_edit -> {
            // handle click event here
        }
    }
    return super.onOptionsItemSelected(item)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接