android - 在 Android 中动态启用/禁用菜单项

标签 android fragment menuitem

我正在开发一个应用程序,我在其中使用可滑动标签 - 使用 FragmentActivity 和每个标签的相应 fragment 实现。

现在我在每个 fragment (选项卡)中都有复选框。选中该复选框时,我需要在应用程序的操作栏(如发送/共享/删除)中启用几个菜单项,并在取消选中该复选框时禁用这些菜单。

我们怎样才能做到这一点?任何指针将不胜感激。

-- 拉基

最佳答案

在运行时更改菜单项

系统调用 onCreateOptionsMenu() 后,它会保留您填充的 ​​Menu 的实例,并且不会再次调用 onCreateOptionsMenu() ,除非菜单因某种原因失效。但是,您应该仅使用 onCreateOptionsMenu() 来创建初始菜单状态,而不是在 Activity 生命周期内进行更改。

如果您想根据 Activity 生命周期中发生的事件修改选项菜单,您可以在 onPrepareOptionsMenu() 方法中执行此操作。此方法将当前存在的 Menu 对象传递给您,以便您可以对其进行修改,例如添加、删除或禁用项目。 ( fragment 还提供 onPrepareOptionsMenu() 回调。)

引用 documentation

@Override
 public boolean onPrepareOptionsMenu (Menu menu) {
     if (condition_true)
         menu.getItem(item_index).setEnabled(false);
     return true;
 }

关于android - 在 Android 中动态启用/禁用菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074754/

相关文章:

android - 按下BACK后如何用软键盘关闭Activity?

Android AsyncTask - 为什么没有执行 doInBackground()?

wpf - 如何将 ViewModel 的 ObservableCollection 绑定(bind)到 MenuItem?

css - 列表鼠标悬停不起作用

Java/Android - 从 Firebase 将 ArrayList 作为对象加载时出错

android - 如何使用 GPS 获取我在 Android 中的当前位置?

javascript - 文档片段和附加子项

android - 在 Android 应用程序中加载谷歌地图太慢

c# - 为什么 MenuItem 标题前面有下划线?

android - Ionic $http 请求无法使用错误数据 null 状态 -1