我有一个带菜单项的动作条.如何隐藏/显示该菜单项?

这就是我想做的:

MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();

推荐答案

找一个MenuItem指向这样的项目,对其调用setVisible以调整其可见性,然后对您的活动调用invalidateOptionsMenu()以相应地调整ActionBar菜单.

Update: A MenuItem不是常规视图,这是布局的一部分.这很特别,完全不同.你的代码返回nullitem,这就是导致崩溃的原因.你需要做的是:

MenuItem item = menu.findItem(R.id.addAction);

以下是您应该调用的顺序: 首先调用invalidateOptionsMenu(),然后内部onCreateOptionsMenu(Menu)获取对MenuItem的引用(通过调用menu.findItem()),并在其上调用setVisible()

Android相关问答推荐

具有数据类的LiveData不会在视图模型中更新

如何将绘图中的矩形与roboflow和喷气背包组合对齐?

打开平板电脑的下载文件夹中的文件,例如使用其mimeType将Intent发送到我们的应用程序

Android,从C++调用的铁 rust 库缺少符号

Android Studio -未显示布局预览(不推荐使用安全管理器)

穿戴与iPhone连接的安卓操作系统

在Jetpack Compose中,如何判断屏幕是否已重新组合?

从惰性列中删除项目时Jetpack Compose崩溃

相机2问题:设置AE区域、AF区域和AWB区域.

如何在Android Studio中删除项目

Android WebView 不会在滚动端加载新内容

可从 Play store 下载链接访问未发布的应用

Jetpack Compose 绘制范围内的动画

@Immutable 对数据类有什么好处?

如何在Android中使用嵌套的Recyclerview

如何在 Android 的 ViewModel 中使用 LiveData

任务 ':app:kaptGenerateStubsDebugKotlin' 执行失败

为什么我要使用 $version 而不是2.7.0?

Gradle 构建错误:找不到 semver4j-0.16.4-nodeps.jar

更新后 Firebase 服务无法在模拟器上运行