【发布时间】:2021-08-02 11:30:44
【问题描述】:
我正在使用单击菜单来打开底部工作表。
最初实现此功能时,仅从 AppCompatActivity#onMenuOpened 返回 false 并没有完成这项工作。
我看到有人在 5 年前就已经complained about this了。
所以我添加了对AppCompatActivity#closeOptionsMenu 的调用,它成功了。
我更新了我的应用程序以支持 API 级别 30,但现在我注意到它不起作用。 (不确定这是否与 API 30 有关,或者它是否更早发生了故障而我没有注意到)
这是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); 仍然没有改变,菜单仍然打开。
知道如何解决这个问题吗?
【问题讨论】:
标签: android android-menu android-11