androidx.appcompat.app.AppCompatActivity#closeOptionsMenu 不关闭菜单

androidx.appcompat.app.AppCompatActivity#closeOptionsMenu doesn't close the menu

我正在使用单击菜单打开底部 sheet。

最初实施时,只是从 AppCompatActivity#onMenuOpened 返回 false 并没有完成这项工作。

我看到有人 complained about this 5 年前。

所以我添加了一个对 AppCompatActivity#closeOptionsMenu 的调用并且成功了。

我更新了我的应用以支持 API 级别 30,但现在我发现它不起作用。 (不知道是不是和API30有关,还是之前坏了我没注意到)

这是AppCompatActivity#closeOptionsMenu

的当前代码
        ActionBar actionBar = getSupportActionBar();
        if (getWindow().hasFeature(Window.FEATURE_OPTIONS_PANEL)
                && (actionBar == null || !actionBar.closeOptionsMenu())) {
            super.closeOptionsMenu();
        }

并且 actionBar.closeOptionsMenu() 的结果是 true - 即 super.closeOptionsMenu() 没有被调用。 所以我想我会直接调用android.app.Activity#closeOptionsMenu中的代码

    public void closeOptionsMenu() {
        if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL) &&
                (mActionBar == null || !mActionBar.closeOptionsMenu())) {
            mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL);
        }
    }

但是这个调用 mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL); 仍然没有改变,菜单仍然打开。

知道如何解决这个问题吗?

而不是在 onMenuOpened 中调用 closeOptionsMenu - 我发布了要在 onMenuOpened 之后调用的关闭方法。

    public boolean onMenuOpened(int featureId, Menu menu) {
        // Make sure the menu won't open
        new Handler().post(this::closeOptionsMenu);

        openBottomSheetMenu();
        return false;
    }

这解决了我遇到的具体问题 - 我仍然看到菜单一秒钟,但随后它就关闭了。 我认为在 open 仍然是 运行 时调用 close 是错误的。

仍然不确定为什么返回 false 不起作用