【问题标题】:Close an Option Menu programmatically以编程方式关闭选项菜单
【发布时间】:2017-05-29 15:22:20
【问题描述】:

我得到了一个包含单个菜单项的菜单。当用户单击操作栏中的菜单图标时,我会通过覆盖 onMenuOpened() 自动为用户选择该菜单项,如下所示:

@Override
public boolean onMenuOpened(int featureId, Menu menu)
{
    if(menu != null)
    {
        onOptionsItemSelected(menu.getItem(0));
        closeOptionsMenu();
    }
    return super.onMenuOpened(featureId, menu);
}

这里的问题是菜单打开后没有关闭。所以这个菜单项打开了另一个片段,当用户返回到他点击菜单的原始片段时,它仍然打开。

如何关闭它?

【问题讨论】:

  • 选择后尝试添加invalidateOptionmenu
  • 没有帮助...按回时菜单仍然显示
  • 你从片段或活动中调用菜单项?
  • onCreateMenu 和 onOptionItemSelected 在活动级别完成。
  • 这是 AppCompatActivity

标签: android android-menu android-optionsmenu


【解决方案1】:

您可以使用closeOptionsMenu() 以编程方式关闭选项菜单。

现在尝试更改closeOptionsMenu() 的位置。在onOptionsItemSelected()之前调用它。

链接: http://developer.android.com/reference/android/app/Activity.html#closeOptionsMenu

【讨论】:

  • 改变通话位置没有帮助
  • 好的,尝试一件事,在你的 onOptionsItemSelected() 函数中调用 closeOptionsMenu() ,然后在你的 onOptionsItemSelected() 函数中调用,而不是在 onMenuOpened() 中。
  • 我尝试在操作本身之前和之后调用,但菜单仍然保持打开状态
  • 我想说的是,在你的 onOptionsItemSelected() 实现中调用 closeOptionsMenu() 。你做到了吗?
  • 是的。在被调用的动作本身之前和之后添加它,但它仍然没有帮助